diff --git a/compiler/literate/html.ml b/compiler/literate/html.ml index e618f4b4..2e87baa5 100644 --- a/compiler/literate/html.ml +++ b/compiler/literate/html.ml @@ -75,7 +75,6 @@ let wrap_html Format.fprintf fmt "\n\ \n\ \n\ @@ -185,15 +184,22 @@ let rec law_structure_to_html | A.CodeBlock _ -> () | A.LawHeading (heading, children) -> let h_number = heading.law_heading_precedence + 1 in + let is_a_section_to_collapse = + (* Only 2 depth sections are collasped in a
tag. Indeed, this + allow to significantly reduce rendering time (~= 100x for the + [aides_logement] example in the catala-website), while remaining + practicable. *) + h_number = 2 + in let h_name = Marked.unmark heading.law_heading_name in let complete_headings = parents_headings @ [h_name] in let id = complete_headings |> String.concat "-" |> sanitize_html_href in let fmt_details_open fmt () = - if 2 = h_number then + if is_a_section_to_collapse then Format.fprintf fmt "
%s" h_name in let fmt_details_close fmt () = - if 2 = h_number then Format.fprintf fmt "
" + if is_a_section_to_collapse then Format.fprintf fmt "
" in Format.fprintf fmt "%s%s@\n\ diff --git a/compiler/utils/string_common.mli b/compiler/utils/string_common.mli index 9a83a3e9..07bdc521 100644 --- a/compiler/utils/string_common.mli +++ b/compiler/utils/string_common.mli @@ -14,8 +14,7 @@ License for the specific language governing permissions and limitations under the License. *) -(** Helper functions manipulating strings common to all Catala compiler - internals. *) +(** Helper functions used for string manipulation. *) val to_ascii : string -> string (** Removes all non-ASCII diacritics from a string by converting them to their diff --git a/compiler/utils/utils.mld b/compiler/utils/utils.mld index 3fbf7d4a..17fb6c01 100644 --- a/compiler/utils/utils.mld +++ b/compiler/utils/utils.mld @@ -37,8 +37,8 @@ Related modules: {!modules: Utils.Errors} -{1 File utilities} +{1 Other utilies} Related modules: -{!modules: Utils.File} +{!modules: Utils.File Utils.String_common} diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index 4d48f40f..0363886e 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,136361 +1,9630 @@ -//# 1 "api_web.bc.runtime.js" // Generated by js_of_ocaml 4.0.0+git-0.5.0-666-g0ac754b7-dirty -(function - (Object) - {typeof globalThis - !== - "object" - && - (this - ?get() - :(Object.defineProperty - (Object.prototype,"_T_",{configurable:true,get:get}), - _T_)); - function get() - {var global=this || self; - global.globalThis = global; - delete Object.prototype._T_}} - (Object)); -(function(globalThis) - {"use strict"; - var joo_global_object=globalThis; - function caml_int64_is_zero(x){return + x.isZero()} - function caml_str_repeat(n,s) - {if(n == 0)return ""; - if(s.repeat)return s.repeat(n); - var r="",l=0; - for(;;) - {if(n & 1)r += s; - n >>= 1; - if(n == 0)return r; - s += s; - l++; - if(l == 9)s.slice(0,1)}} - var caml_int64_offset=Math.pow(2,- 24); - function caml_raise_constant(tag){throw tag} - var caml_global_data=[0]; - function caml_raise_zero_divide() - {caml_raise_constant(caml_global_data.Division_by_zero)} - function MlInt64(lo,mi,hi) - {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff} - MlInt64.prototype.caml_custom = "_j"; - MlInt64.prototype.copy - = - function(){return new MlInt64(this.lo,this.mi,this.hi)}; - MlInt64.prototype.ucompare - = - function(x) - {if(this.hi > x.hi)return 1; - if(this.hi < x.hi)return - 1; - if(this.mi > x.mi)return 1; - if(this.mi < x.mi)return - 1; - if(this.lo > x.lo)return 1; - if(this.lo < x.lo)return - 1; - return 0}; - MlInt64.prototype.compare - = - function(x) - {var hi=this.hi << 16,xhi=x.hi << 16; - if(hi > xhi)return 1; - if(hi < xhi)return - 1; - if(this.mi > x.mi)return 1; - if(this.mi < x.mi)return - 1; - if(this.lo > x.lo)return 1; - if(this.lo < x.lo)return - 1; - return 0}; - MlInt64.prototype.neg - = - function() - {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.add - = - function(x) - {var - lo=this.lo + x.lo, - mi=this.mi + x.mi + (lo >> 24), - hi=this.hi + x.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.sub - = - function(x) - {var - lo=this.lo - x.lo, - mi=this.mi - x.mi + (lo >> 24), - hi=this.hi - x.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.mul - = - function(x) - {var - lo=this.lo * x.lo, - mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi, - hi= - (mi * caml_int64_offset | 0) - + - this.hi - * - x.lo - + - this.mi - * - x.mi - + - this.lo - * - x.hi; - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.isZero - = - function(){return (this.lo | this.mi | this.hi) == 0}; - MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0}; - MlInt64.prototype.and - = - function(x) - {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)}; - MlInt64.prototype.or - = - function(x) - {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)}; - MlInt64.prototype.xor - = - function(x) - {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)}; - MlInt64.prototype.shift_left - = - function(s) - {s = s & 63; - if(s == 0)return this; - if(s < 24) - return new - MlInt64 - (this.lo << s, - this.mi << s | this.lo >> 24 - s, - this.hi << s | this.mi >> 24 - s); - if(s < 48) - return new - MlInt64 - (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s); - return new MlInt64(0,0,this.lo << s - 48)}; - MlInt64.prototype.shift_right_unsigned - = - function(s) - {s = s & 63; - if(s == 0)return this; - if(s < 24) - return new - MlInt64 - (this.lo >> s | this.mi << 24 - s, - this.mi >> s | this.hi << 24 - s, - this.hi >> s); - if(s < 48) - return new - MlInt64 - (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0); - return new MlInt64(this.hi >> s - 48,0,0)}; - MlInt64.prototype.shift_right - = - function(s) - {s = s & 63; - if(s == 0)return this; - var h=this.hi << 16 >> 16; - if(s < 24) - return new - MlInt64 - (this.lo >> s | this.mi << 24 - s, - this.mi >> s | h << 24 - s, - this.hi << 16 >> s >>> 16); - var sign=this.hi << 16 >> 31; - if(s < 48) - return new - MlInt64 - (this.mi >> s - 24 | this.hi << 48 - s, - this.hi << 16 >> s - 24 >> 16, - sign & 0xffff); - return new MlInt64(this.hi << 16 >> s - 32,sign,sign)}; - MlInt64.prototype.lsl1 - = - function() - {this.hi = this.hi << 1 | this.mi >> 23; - this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff; - this.lo = this.lo << 1 & 0xffffff}; - MlInt64.prototype.lsr1 - = - function() - {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff; - this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff; - this.hi = this.hi >>> 1}; - MlInt64.prototype.udivmod - = - function(x) - {var - offset=0, - modulus=this.copy(), - divisor=x.copy(), - quotient=new MlInt64(0,0,0); - while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()} - while(offset >= 0) - {offset--; - quotient.lsl1(); - if(modulus.ucompare(divisor) >= 0) - {quotient.lo++;modulus = modulus.sub(divisor)} - divisor.lsr1()} - return {quotient:quotient,modulus:modulus}}; - MlInt64.prototype.div - = - function(y) - {var x=this; - if(y.isZero())caml_raise_zero_divide(); - var sign=x.hi ^ y.hi; - if(x.hi & 0x8000)x = x.neg(); - if(y.hi & 0x8000)y = y.neg(); - var q=x.udivmod(y).quotient; - if(sign & 0x8000)q = q.neg(); - return q}; - MlInt64.prototype.mod - = - function(y) - {var x=this; - if(y.isZero())caml_raise_zero_divide(); - var sign=x.hi; - if(x.hi & 0x8000)x = x.neg(); - if(y.hi & 0x8000)y = y.neg(); - var r=x.udivmod(y).modulus; - if(sign & 0x8000)r = r.neg(); - return r}; - MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24}; - MlInt64.prototype.toFloat - = - function() - {return (this.hi << 16) - * - Math.pow(2,32) - + - this.mi - * - Math.pow(2,24) - + - this.lo}; - MlInt64.prototype.toArray - = - function() - {return [this.hi >> 8, - this.hi & 0xff, - this.mi >> 16, - this.mi >> 8 & 0xff, - this.mi & 0xff, - this.lo >> 16, - this.lo >> 8 & 0xff, - this.lo & 0xff]}; - MlInt64.prototype.lo32 - = - function(){return this.lo | (this.mi & 0xff) << 24}; - MlInt64.prototype.hi32 - = - function(){return this.mi >>> 8 & 0xffff | this.hi << 16}; - function caml_int64_of_int32(x) - {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)} - function caml_int64_to_int32(x){return x.toInt()} - function caml_int64_is_negative(x){return + x.isNeg()} - function caml_int64_neg(x){return x.neg()} - function caml_subarray_to_jsbytes(a,i,len) - {var f=String.fromCharCode; - if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a); - var s=""; - for(;0 < len;i += 1024,len -= 1024) - s += f.apply(null,a.slice(i,i + Math.min(len,1024))); - return s} - function caml_convert_string_to_bytes(s) - {if(s.t == 2) - s.c += caml_str_repeat(s.l - s.c.length,"\0"); - else - s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length); - s.t = 0} - function caml_jsbytes_of_string(s) - {s.t & 6 && caml_convert_string_to_bytes(s);return s.c} - function caml_raise_with_arg(tag,arg){throw [0,tag,arg]} - function jsoo_is_ascii(s) - {if(s.length < 24) - {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false; - return true} - else - return ! /[^\x00-\x7f]/.test(s)} - function caml_utf16_of_utf8(s) - {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++) - {c1 = s.charCodeAt(i); - if(c1 < 0x80) - {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++); - if(j - i > 512) - {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} - else - t += s.slice(i,j); - if(j == l)break; - i = j} - v = 1; - if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) - {c = c2 + (c1 << 6); - if(c1 < 0xe0) - {v = c - 0x3080;if(v < 0x80)v = 1} - else - {v = 2; - if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) - {c = c2 + (c << 6); - if(c1 < 0xf0) - {v = c - 0xe2080; - if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2} - else - {v = 3; - if - (++i - < - l - && - ((c2 = s.charCodeAt(i)) & - 64) - == - 128 - && - c1 - < - 0xf5) - {v = c2 - 0x3c82080 + (c << 6); - if(v < 0x10000 || v > 0x10ffff)v = 3}}}}} - if(v < 4) - {i -= v;t += "\ufffd"} - else - if(v > 0xffff) - t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF)); - else - t += String.fromCharCode(v); - if(t.length > 1024){t.substr(0,1);b += t;t = ""}} - return b + t} - function MlBytes(tag,contents,length) - {this.t = tag;this.c = contents;this.l = length} - MlBytes.prototype.toString - = - function() - {switch(this.t) - {case 9:return this.c; - default:caml_convert_string_to_bytes(this);case 0: - if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8; - case 8:return this.c - }}; - MlBytes.prototype.toUtf16 - = - function() - {var r=this.toString(); - if(this.t == 9)return r; - return caml_utf16_of_utf8(r)}; - MlBytes.prototype.slice - = - function() - {var content=this.t == 4?this.c.slice():this.c; - return new MlBytes(this.t,content,this.l)}; - function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)} - function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)} - function caml_raise_with_string(tag,msg) - {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))} - function caml_invalid_argument(msg) - {caml_raise_with_string(caml_global_data.Invalid_argument,msg)} - function caml_parse_format(fmt) - {fmt = caml_jsbytes_of_string(fmt); - var len=fmt.length; - if(len > 31)caml_invalid_argument("format_int: format too long"); - var - f= - {justify:"+", - signstyle:"-", - filler:" ", - alternate:false, - base:0, - signedconv:false, - width:0, - uppercase:false, - sign:1, - prec:- 1, - conv:"f"}; - for(var i=0;i < len;i++) - {var c=fmt.charAt(i); - switch(c) - {case "-":f.justify = "-";break; - case "+": - case " ":f.signstyle = c;break; - case "0":f.filler = "0";break; - case "#":f.alternate = true;break; - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - f.width = 0; - while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) - {f.width = f.width * 10 + c;i++} - i--; - break; - case ".": - f.prec = 0; - i++; - while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) - {f.prec = f.prec * 10 + c;i++} - i--; - case "d": - case "i":f.signedconv = true; - case "u":f.base = 10;break; - case "x":f.base = 16;break; - case "X":f.base = 16;f.uppercase = true;break; - case "o":f.base = 8;break; - case "e": - case "f": - case "g":f.signedconv = true;f.conv = c;break; - case "E": - case "F": - case "G": - f.signedconv = true; - f.uppercase = true; - f.conv = c.toLowerCase(); - break - }} - return f} - function caml_finish_formatting(f,rawbuffer) - {if(f.uppercase)rawbuffer = rawbuffer.toUpperCase(); - var len=rawbuffer.length; - if(f.signedconv && (f.sign < 0 || f.signstyle != "-"))len++; - if(f.alternate){if(f.base == 8)len += 1;if(f.base == 16)len += 2} - var buffer=""; - if(f.justify == "+" && f.filler == " ") - for(var i=len;i < f.width;i++)buffer += " "; - if(f.signedconv) - if(f.sign < 0) - buffer += "-"; - else - if(f.signstyle != "-")buffer += f.signstyle; - if(f.alternate && f.base == 8)buffer += "0"; - if(f.alternate && f.base == 16)buffer += "0x"; - if(f.justify == "+" && f.filler == "0") - for(var i=len;i < f.width;i++)buffer += "0"; - buffer += rawbuffer; - if(f.justify == "-")for(var i=len;i < f.width;i++)buffer += " "; - return caml_string_of_jsbytes(buffer)} - function caml_int64_format(fmt,x) - {var f=caml_parse_format(fmt); - if(f.signedconv && caml_int64_is_negative(x)) - {f.sign = - 1;x = caml_int64_neg(x)} - var - buffer="", - wbase=caml_int64_of_int32(f.base), - cvtbl="0123456789abcdef"; - do - {var p=x.udivmod(wbase); - x = p.quotient; - buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + buffer} - while - (! caml_int64_is_zero(x)); - if(f.prec >= 0) - {f.filler = " "; - var n=f.prec - buffer.length; - if(n > 0)buffer = caml_str_repeat(n,"0") + buffer} - return caml_finish_formatting(f,buffer)} - function caml_expm1_float(x){return Math.expm1(x)} - function caml_jsstring_of_string(s){return s.toUtf16()} - function fs_node_supported() - {return typeof globalThis.process - !== - "undefined" - && - typeof globalThis.process.versions - !== - "undefined" - && - typeof globalThis.process.versions.node - !== - "undefined"} - function make_path_is_absolute() - {function posix(path) - {if(path.charAt(0) === "/")return ["",path.substring(1)];return} - function win32(path) - {var - splitDeviceRe= - /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/, - result=splitDeviceRe.exec(path), - device=result[1] || "", - isUnc=Boolean(device && device.charAt(1) !== ":"); - if(Boolean(result[2] || isUnc)) - {var root=result[1] || "",sep=result[2] || ""; - return [root,path.substring(root.length + sep.length)]} - return} - return fs_node_supported() - && - globalThis.process - && - globalThis.process.platform - ?globalThis.process.platform === "win32"?win32:posix - :posix} - var path_is_absolute=make_path_is_absolute(); - function caml_trailing_slash(name) - {return name.slice(- 1) !== "/"?name + "/":name} - if(fs_node_supported() && globalThis.process && globalThis.process.cwd) - var caml_current_dir=globalThis.process.cwd().replace(/\\/g,"/"); - else - var caml_current_dir="/static"; - caml_current_dir = caml_trailing_slash(caml_current_dir); - function caml_make_path(name) - {name = caml_jsstring_of_string(name); - if(! path_is_absolute(name))name = caml_current_dir + name; - var comp0=path_is_absolute(name),comp=comp0[1].split("/"),ncomp=[]; - for(var i=0;i < comp.length;i++) - switch(comp[i]) - {case "..":if(ncomp.length > 1)ncomp.pop();break; - case ".":break; - default:ncomp.push(comp[i]);break} - ncomp.unshift(comp0[0]); - ncomp.orig = name; - return ncomp} - function caml_utf8_of_utf16(s) - {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++) - {c = s.charCodeAt(i); - if(c < 0x80) - {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++); - if(j - i > 512) - {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} - else - t += s.slice(i,j); - if(j == l)break; - i = j} - if(c < 0x800) - {t += String.fromCharCode(0xc0 | c >> 6); - t += String.fromCharCode(0x80 | c & 0x3f)} - else - if(c < 0xd800 || c >= 0xdfff) - t - += - String.fromCharCode - (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f); - else - if - (c - >= - 0xdbff - || - i - + - 1 - == - l - || - (d = s.charCodeAt(i + 1)) - < - 0xdc00 - || - d - > - 0xdfff) - t += "\xef\xbf\xbd"; - else - {i++; - c = (c << 10) + d - 0x35fdc00; - t - += - String.fromCharCode - (0xf0 | c >> 18, - 0x80 | c >> 12 & 0x3f, - 0x80 | c >> 6 & 0x3f, - 0x80 | c & 0x3f)} - if(t.length > 1024){t.substr(0,1);b += t;t = ""}} - return b + t} - function caml_bytes_of_utf16_jsstring(s) - {var tag=9; - if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s); - return new MlBytes(tag,s,s.length)} - function caml_string_of_jsstring(s) - {return caml_bytes_of_utf16_jsstring(s)} - var - unix_error= - ["E2BIG", - "EACCES", - "EAGAIN", - "EBADF", - "EBUSY", - "ECHILD", - "EDEADLK", - "EDOM", - "EEXIST", - "EFAULT", - "EFBIG", - "EINTR", - "EINVAL", - "EIO", - "EISDIR", - "EMFILE", - "EMLINK", - "ENAMETOOLONG", - "ENFILE", - "ENODEV", - "ENOENT", - "ENOEXEC", - "ENOLCK", - "ENOMEM", - "ENOSPC", - "ENOSYS", - "ENOTDIR", - "ENOTEMPTY", - "ENOTTY", - "ENXIO", - "EPERM", - "EPIPE", - "ERANGE", - "EROFS", - "ESPIPE", - "ESRCH", - "EXDEV", - "EWOULDBLOCK", - "EINPROGRESS", - "EALREADY", - "ENOTSOCK", - "EDESTADDRREQ", - "EMSGSIZE", - "EPROTOTYPE", - "ENOPROTOOPT", - "EPROTONOSUPPORT", - "ESOCKTNOSUPPORT", - "EOPNOTSUPP", - "EPFNOSUPPORT", - "EAFNOSUPPORT", - "EADDRINUSE", - "EADDRNOTAVAIL", - "ENETDOWN", - "ENETUNREACH", - "ENETRESET", - "ECONNABORTED", - "ECONNRESET", - "ENOBUFS", - "EISCONN", - "ENOTCONN", - "ESHUTDOWN", - "ETOOMANYREFS", - "ETIMEDOUT", - "ECONNREFUSED", - "EHOSTDOWN", - "EHOSTUNREACH", - "ELOOP", - "EOVERFLOW"]; - function make_unix_err_args(code,syscall,path,errno) - {var variant=unix_error.indexOf(code); - if(variant < 0){if(errno == null)errno = - 9999;variant = [0,errno]} - var - args= - [variant, - caml_string_of_jsstring(syscall || ""), - caml_string_of_jsstring(path || "")]; - return args} - var caml_named_values={}; - function caml_named_value(nm){return caml_named_values[nm]} - function caml_raise_with_args(tag,args){throw [0,tag].concat(args)} - function caml_is_ml_bytes(s){return s instanceof MlBytes} - function caml_is_ml_string(s){return caml_is_ml_bytes(s)} - function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)} - function caml_bytes_of_string(s){return s} - function caml_raise_sys_error(msg) - {caml_raise_with_string(caml_global_data.Sys_error,msg)} - function caml_raise_no_such_file(name) - {caml_raise_sys_error(name + ": No such file or directory")} - function caml_bytes_bound_error() - {caml_invalid_argument("index out of bounds")} - function caml_bytes_unsafe_get(s,i) - {switch(s.t & 6) - {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i); - case 4:return s.c[i] - }} - function caml_bytes_get(s,i) - {if(i >>> 0 >= s.l)caml_bytes_bound_error(); - return caml_bytes_unsafe_get(s,i)} - function caml_create_bytes(len) - {if(len < 0)caml_invalid_argument("Bytes.create"); - return new MlBytes(len?2:9,"",len)} - function caml_ml_bytes_length(s){return s.l} - function caml_convert_bytes_to_array(s) - {if(globalThis.Uint8Array) - var a=new (globalThis.Uint8Array)(s.l); - else - var a=new Array(s.l); - var b=s.c,l=b.length,i=0; - for(;i < l;i++)a[i] = b.charCodeAt(i); - for(l = s.l;i < l;i++)a[i] = 0; - s.c = a; - s.t = 4; - return a} - function caml_blit_bytes(s1,i1,s2,i2,len) - {if(len == 0)return 0; - if(i2 == 0 && (len >= s2.l || s2.t == 2 && len >= s2.c.length)) - {s2.c - = - s1.t == 4 - ?caml_subarray_to_jsbytes(s1.c,i1,len) - :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); - s2.t = s2.c.length == s2.l?0:2} - else - if(s2.t == 2 && i2 == s2.c.length) - {s2.c - += - s1.t == 4 - ?caml_subarray_to_jsbytes(s1.c,i1,len) - :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); - s2.t = s2.c.length == s2.l?0:2} - else - {if(s2.t != 4)caml_convert_bytes_to_array(s2); - var c1=s1.c,c2=s2.c; - if(s1.t == 4) - if(i2 <= i1) - for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i]; - else - for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i]; - else - {var l=Math.min(len,c1.length - i1); - for(var i=0;i < l;i++)c2[i2 + i] = c1.charCodeAt(i1 + i); - for(;i < len;i++)c2[i2 + i] = 0}} - return 0} - function caml_blit_string(a,b,c,d,e) - {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0} - function MlFile(){} - function MlFakeFile(content){this.data = content} - MlFakeFile.prototype = new MlFile(); - MlFakeFile.prototype.truncate - = - function(len) - {var old=this.data; - this.data = caml_create_bytes(len | 0); - caml_blit_bytes(old,0,this.data,0,len)}; - MlFakeFile.prototype.length - = - function(){return caml_ml_bytes_length(this.data)}; - MlFakeFile.prototype.write - = - function(offset,buf,pos,len) - {var clen=this.length(); - if(offset + len >= clen) - {var new_str=caml_create_bytes(offset + len),old_data=this.data; - this.data = new_str; - caml_blit_bytes(old_data,0,this.data,0,clen)} - caml_blit_string(buf,pos,this.data,offset,len); - return 0}; - MlFakeFile.prototype.read - = - function(offset,buf,pos,len) - {var clen=this.length(); - caml_blit_bytes(this.data,offset,buf,pos,len); - return 0}; - MlFakeFile.prototype.read_one - = - function(offset){return caml_bytes_get(this.data,offset)}; - MlFakeFile.prototype.close = function(){}; - MlFakeFile.prototype.constructor = MlFakeFile; - function MlFakeDevice(root,f) - {this.content = {};this.root = root;this.lookupFun = f} - MlFakeDevice.prototype.nm = function(name){return this.root + name}; - MlFakeDevice.prototype.create_dir_if_needed - = - function(name) - {var comp=name.split("/"),res=""; - for(var i=0;i < comp.length - 1;i++) - {res += comp[i] + "/"; - if(this.content[res])continue; - this.content[res] = Symbol("directory")}}; - MlFakeDevice.prototype.slash - = - function(name){return /\/$/.test(name)?name:name + "/"}; - MlFakeDevice.prototype.lookup - = - function(name) - {if(! this.content[name] && this.lookupFun) - {var - res= - this.lookupFun - (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name)); - if(res !== 0) - {this.create_dir_if_needed(name); - this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}}}; - MlFakeDevice.prototype.exists - = - function(name) - {if(name == "")return 1; - var name_slash=this.slash(name); - if(this.content[name_slash])return 1; - this.lookup(name); - return this.content[name]?1:0}; - MlFakeDevice.prototype.mkdir - = - function(name,mode,raise_unix) - {var unix_error=raise_unix && caml_named_value("Unix.Unix_error"); - if(this.exists(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("EEXIST","mkdir",this.nm(name))); - else - caml_raise_sys_error(name + ": File exists"); - var parent=/^(.*)\/[^/]+/.exec(name); - parent = parent && parent[1] || ""; - if(! this.exists(parent)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOENT","mkdir",this.nm(parent))); - else - caml_raise_sys_error(parent + ": No such file or directory"); - if(! this.is_dir(parent)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTDIR","mkdir",this.nm(parent))); - else - caml_raise_sys_error(parent + ": Not a directory"); - this.create_dir_if_needed(this.slash(name))}; - MlFakeDevice.prototype.rmdir - = - function(name,raise_unix) - {var - unix_error=raise_unix && caml_named_value("Unix.Unix_error"), - name_slash=name == ""?"":this.slash(name), - r=new RegExp("^" + name_slash + "([^/]+)"); - if(! this.exists(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOENT","rmdir",this.nm(name))); - else - caml_raise_sys_error(name + ": No such file or directory"); - if(! this.is_dir(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTDIR","rmdir",this.nm(name))); - else - caml_raise_sys_error(name + ": Not a directory"); - for(var n in this.content) - if(n.match(r)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTEMPTY","rmdir",this.nm(name))); - else - caml_raise_sys_error(this.nm(name) + ": Directory not empty"); - delete this.content[name_slash]}; - MlFakeDevice.prototype.readdir - = - function(name) - {var name_slash=name == ""?"":this.slash(name); - if(! this.exists(name)) - caml_raise_sys_error(name + ": No such file or directory"); - if(! this.is_dir(name))caml_raise_sys_error(name + ": Not a directory"); - var r=new RegExp("^" + name_slash + "([^/]+)"),seen={},a=[]; - for(var n in this.content) - {var m=n.match(r); - if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} - return a}; - MlFakeDevice.prototype.is_dir - = - function(name) - {if(name == "")return true; - var name_slash=this.slash(name); - return this.content[name_slash]?1:0}; - MlFakeDevice.prototype.unlink - = - function(name) - {var ok=this.content[name]?true:false; - delete this.content[name]; - return ok}; - MlFakeDevice.prototype.open - = - function(name,f) - {if(f.rdonly && f.wronly) - caml_raise_sys_error - (this.nm(name) - + - " : flags Open_rdonly and Open_wronly are not compatible"); - if(f.text && f.binary) - caml_raise_sys_error - (this.nm(name) - + - " : flags Open_text and Open_binary are not compatible"); - this.lookup(name); - if(this.content[name]) - {if(this.is_dir(name)) - caml_raise_sys_error(this.nm(name) + " : is a directory"); - if(f.create && f.excl) - caml_raise_sys_error(this.nm(name) + " : file already exists"); - var file=this.content[name]; - if(f.truncate)file.truncate(); - return file} - else - if(f.create) - {this.create_dir_if_needed(name); - this.content[name] = new MlFakeFile(caml_create_bytes(0)); - return this.content[name]} - else - caml_raise_no_such_file(this.nm(name))}; - MlFakeDevice.prototype.register - = - function(name,content) - {var file; - if(this.content[name]) - caml_raise_sys_error(this.nm(name) + " : file already exists"); - if(caml_is_ml_bytes(content))file = new MlFakeFile(content); - if(caml_is_ml_string(content)) - file = new MlFakeFile(caml_bytes_of_string(content)); - else - if(content instanceof Array) - file = new MlFakeFile(caml_bytes_of_array(content)); - else - if(typeof content === "string") - file = new MlFakeFile(caml_bytes_of_jsbytes(content)); - else - if(content.toString) - {var - bytes= - caml_bytes_of_string(caml_string_of_jsstring(content.toString())); - file = new MlFakeFile(bytes)} - if(file) - {this.create_dir_if_needed(name);this.content[name] = file} - else - caml_raise_sys_error - (this.nm(name) + " : registering file with invalid content type")}; - MlFakeDevice.prototype.constructor = MlFakeDevice; - function caml_ml_string_length(s){return caml_ml_bytes_length(s)} - function caml_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} - function caml_array_of_string(s) - {var l=caml_ml_string_length(s),a=new Array(l),i=0; - for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i); - return a} - function caml_array_of_bytes(s) - {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} - function caml_bytes_unsafe_set(s,i,c) - {c &= 0xff; - if(s.t != 4) - {if(i == s.c.length) - {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0} - caml_convert_bytes_to_array(s)} - s.c[i] = c; - return 0} - function caml_bytes_set(s,i,c) - {if(i >>> 0 >= s.l)caml_bytes_bound_error(); - return caml_bytes_unsafe_set(s,i,c)} - function MlNodeFile(fd){this.fs = require("fs");this.fd = fd} - MlNodeFile.prototype = new MlFile(); - MlNodeFile.prototype.truncate - = - function(len) - {try - {this.fs.ftruncateSync(this.fd,len | 0)} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.length - = - function() - {try - {return this.fs.fstatSync(this.fd).size} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.write - = - function(offset,buf,buf_offset,len) - {var a=caml_array_of_string(buf); - if(! (a instanceof globalThis.Uint8Array)) - a = new (globalThis.Uint8Array)(a); - var buffer=globalThis.Buffer.from(a); - try - {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)} - catch(err){caml_raise_sys_error(err.toString())} - return 0}; - MlNodeFile.prototype.read - = - function(offset,buf,buf_offset,len) - {var a=caml_array_of_bytes(buf); - if(! (a instanceof globalThis.Uint8Array)) - a = new (globalThis.Uint8Array)(a); - var buffer=globalThis.Buffer.from(a); - try - {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)} - catch(err){caml_raise_sys_error(err.toString())} - for(var i=0;i < len;i++) - caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]); - return 0}; - MlNodeFile.prototype.read_one - = - function(offset) - {var a=new (globalThis.Uint8Array)(1),buffer=globalThis.Buffer.from(a); - try - {this.fs.readSync(this.fd,buffer,0,1,offset)} - catch(err){caml_raise_sys_error(err.toString())} - return buffer[0]}; - MlNodeFile.prototype.close - = - function() - {try - {this.fs.closeSync(this.fd)} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.constructor = MlNodeFile; - function MlNodeDevice(root){this.fs = require("fs");this.root = root} - MlNodeDevice.prototype.nm = function(name){return this.root + name}; - MlNodeDevice.prototype.exists - = - function(name) - {try {return this.fs.existsSync(this.nm(name))?1:0}catch(err){return 0}}; - MlNodeDevice.prototype.mkdir - = - function(name,mode,raise_unix) - {try - {this.fs.mkdirSync(this.nm(name),{mode:mode});return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.rmdir - = - function(name,raise_unix) - {try - {this.fs.rmdirSync(this.nm(name));return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.readdir - = - function(name,raise_unix) - {try - {return this.fs.readdirSync(this.nm(name))} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.is_dir - = - function(name) - {try - {return this.fs.statSync(this.nm(name)).isDirectory()?1:0} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeDevice.prototype.unlink - = - function(name,raise_unix) - {try - {var b=this.fs.existsSync(this.nm(name))?1:0; - this.fs.unlinkSync(this.nm(name)); - return b} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.open - = - function(name,f,raise_unix) - {var consts=require("constants"),res=0; - for(var key in f) - switch(key) - {case "rdonly":res |= consts.O_RDONLY;break; - case "wronly":res |= consts.O_WRONLY;break; - case "append":res |= consts.O_WRONLY | consts.O_APPEND;break; - case "create":res |= consts.O_CREAT;break; - case "truncate":res |= consts.O_TRUNC;break; - case "excl":res |= consts.O_EXCL;break; - case "binary":res |= consts.O_BINARY;break; - case "text":res |= consts.O_TEXT;break; - case "nonblock":res |= consts.O_NONBLOCK;break - } - try - {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.rename - = - function(o,n,raise_unix) - {try - {this.fs.renameSync(this.nm(o),this.nm(n))} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.stat - = - function(name,raise_unix) - {try - {var js_stats=this.fs.statSync(this.nm(name)); - return this.stats_from_js(js_stats)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.lstat - = - function(name,raise_unix) - {try - {var js_stats=this.fs.lstatSync(this.nm(name)); - return this.stats_from_js(js_stats)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.symlink - = - function(to_dir,target,path,raise_unix) - {try - {this.fs.symlinkSync(this.nm(target),this.nm(path),to_dir?"dir":"file"); - return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.readlink - = - function(name,raise_unix) - {try - {var link=this.fs.readlinkSync(this.nm(name),"utf8"); - return caml_string_of_jsstring(link)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.raise_nodejs_error - = - function(err,raise_unix) - {var unix_error=caml_named_value("Unix.Unix_error"); - if(raise_unix && unix_error) - {var args=make_unix_err_args(err.code,err.syscall,err.path,err.errno); - caml_raise_with_args(unix_error,args)} - else - caml_raise_sys_error(err.toString())}; - MlNodeDevice.prototype.stats_from_js - = - function(js_stats) - {var file_kind; - if(js_stats.isFile()) - file_kind = 0; - else - if(js_stats.isDirectory()) - file_kind = 1; - else - if(js_stats.isCharacterDevice()) - file_kind = 2; - else - if(js_stats.isBlockDevice()) - file_kind = 3; - else - if(js_stats.isSymbolicLink()) - file_kind = 4; - else - if(js_stats.isFIFO()) - file_kind = 5; - else - if(js_stats.isSocket())file_kind = 6; - return [0, - js_stats.dev, - js_stats.ino, - file_kind, - js_stats.mode, - js_stats.nlink, - js_stats.uid, - js_stats.gid, - js_stats.rdev, - js_stats.size, - js_stats.atimeMs, - js_stats.mtimeMs, - js_stats.ctimeMs]}; - MlNodeDevice.prototype.constructor = MlNodeDevice; - function caml_get_root(path) - {var x=path_is_absolute(path);if(! x)return;return x[0] + "/"} - function caml_failwith(msg) - {if(! caml_global_data.Failure) - caml_global_data.Failure = [248,caml_string_of_jsbytes("Failure"),- 3]; - caml_raise_with_string(caml_global_data.Failure,msg)} - var - caml_root= - caml_get_root(caml_current_dir) - || - caml_failwith("unable to compute caml_root"), - jsoo_mount_point=[]; - if(fs_node_supported()) - jsoo_mount_point.push - ({path:caml_root,device:new MlNodeDevice(caml_root)}); - else - jsoo_mount_point.push - ({path:caml_root,device:new MlFakeDevice(caml_root)}); - jsoo_mount_point.push - ({path:"/static/",device:new MlFakeDevice("/static/")}); - function resolve_fs_device(name) - {var - path=caml_make_path(name), - name=path.join("/"), - name_slash=caml_trailing_slash(name), - res; - for(var i=0;i < jsoo_mount_point.length;i++) - {var m=jsoo_mount_point[i]; - if - (name_slash.search(m.path) - == - 0 - && - (! res || res.path.length < m.path.length)) - res - = - {path:m.path, - device:m.device, - rest:name.substring(m.path.length,name.length)}} - if(! res && fs_node_supported()) - {var root=caml_get_root(name); - if(root && root.match(/^[a-zA-Z]:\/$/)) - {var m={path:root,device:new MlNodeDevice(root)}; - jsoo_mount_point.push(m); - res - = - {path:m.path, - device:m.device, - rest:name.substring(m.path.length,name.length)}}} - if(res)return res; - caml_raise_sys_error("no device found for " + name_slash)} - function caml_sys_is_directory(name) - {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest); - return a?1:0} - function caml_raise_not_found() - {caml_raise_constant(caml_global_data.Not_found)} - function caml_sys_getenv(name) - {var g=globalThis,n=caml_jsstring_of_string(name); - if(g.process && g.process.env && g.process.env[n] != undefined) - return caml_string_of_jsstring(g.process.env[n]); - if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) - return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); - caml_raise_not_found()} - function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits) - {if(nbits == 0){nat2.data[ofs2] = 0;return 0} - var wrap=0; - for(var i=len1 - 1;i >= 0;i--) - {var a=nat1.data[ofs1 + i] >>> 0; - nat1.data[ofs1 + i] = a >>> nbits | wrap; - wrap = a << 32 - nbits} - nat2.data[ofs2] = wrap; - return 0} - var caml_gr_state; - function caml_gr_state_get() - {if(caml_gr_state)return caml_gr_state; - throw [0, - caml_named_value("Graphics.Graphic_failure"), - caml_string_of_jsbytes("Not initialized")]} - function caml_gr_point_color(x,y) - {var - s=caml_gr_state_get(), - im=s.context.getImageData(x,s.height - y,1,1), - d=im.data; - return (d[0] << 16) + (d[1] << 8) + d[2]} - var MlObjectTable; - if(typeof globalThis.WeakMap === "undefined") - MlObjectTable - = - function() - {function NaiveLookup(objs){this.objs = objs} - NaiveLookup.prototype.get - = - function(v) - {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i}; - NaiveLookup.prototype.set = function(){}; - return function() - {this.objs = [];this.lookup = new NaiveLookup(this.objs)}} - (); - else - MlObjectTable - = - function(){this.objs = [];this.lookup = new (globalThis.WeakMap)()}; - MlObjectTable.prototype.store - = - function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)}; - MlObjectTable.prototype.recall - = - function(v) - {var i=this.lookup.get(v); - return i === undefined?undefined:this.objs.length - i}; - function caml_sys_rename(o,n) - {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n); - if(o_root.device != n_root.device) - caml_failwith - ("caml_sys_rename: cannot move file between two filesystem"); - if(! o_root.device.rename) - caml_failwith("caml_sys_rename: no implemented"); - o_root.device.rename(o_root.rest,n_root.rest)} - function caml_log10_float(x){return Math.log10(x)} - function unix_unlink(name) - {var root=resolve_fs_device(name); - if(! root.device.unlink)caml_failwith("unix_unlink: not implemented"); - return root.device.unlink(root.rest,true)} - var caml_runtime_warnings=0; - function caml_ml_enable_runtime_warnings(bool) - {caml_runtime_warnings = bool;return 0} - function caml_classify_float(x) - {if(isFinite(x)) - {if(Math.abs(x) >= 2.2250738585072014e-308)return 0; - if(x != 0)return 1; - return 2} - return isNaN(x)?4:3} - function unix_rmdir(name) - {var root=resolve_fs_device(name); - if(! root.device.rmdir)caml_failwith("unix_rmdir: not implemented"); - return root.device.rmdir(root.rest,true)} - function caml_ml_refill_input(chan) - {var str=chan.refill(),str_len=caml_ml_string_length(str); - if(str_len == 0)chan.refill = null; - chan.file.write(chan.file.length(),str,0,str_len); - return str_len} - var caml_ml_channels=new Array(); - function caml_ml_may_refill_input(chanid) - {var chan=caml_ml_channels[chanid]; - if(chan.refill == null)return; - if(chan.file.length() != chan.offset)return; - caml_ml_refill_input(chan)} - function caml_array_bound_error() - {caml_invalid_argument("index out of bounds")} - function caml_ml_input_scan_line(chanid) - {var chan=caml_ml_channels[chanid]; - caml_ml_may_refill_input(chanid); - var p=chan.offset,len=chan.file.length(); - if(p >= len)return 0; - while(true) - {if(p >= len)return - (p - chan.offset); - if(chan.file.read_one(p) == 10)return p - chan.offset + 1; - p++}} - function caml_gc_minor(){return 0} - var - bigInt= - function(undefined) - {"use strict"; - var - BASE=1e7, - LOG_BASE=7, - MAX_INT=9007199254740992, - MAX_INT_ARR=smallToArray(MAX_INT), - DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz", - BigInt=joo_global_object.BigInt, - supportsNativeBigInt=typeof BigInt === "function"; - function Integer(v,radix,alphabet,caseSensitive) - {if(typeof v === "undefined")return Integer[0]; - if(typeof radix !== "undefined") - return + radix === 10 && ! alphabet - ?parseValue(v) - :parseBase(v,radix,alphabet,caseSensitive); - return parseValue(v)} - function BigInteger(value,sign) - {this.value = value; - this.sign = sign; - this.isSmall = false; - this.caml_custom = "_z"} - BigInteger.prototype = Object.create(Integer.prototype); - function SmallInteger(value) - {this.value = value; - this.sign = value < 0; - this.isSmall = true; - this.caml_custom = "_z"} - SmallInteger.prototype = Object.create(Integer.prototype); - function NativeBigInt(value) - {this.value = value;this.caml_custom = "_z"} - NativeBigInt.prototype = Object.create(Integer.prototype); - function isPrecise(n){return - MAX_INT < n && n < MAX_INT} - function smallToArray(n) - {if(n < 1e7)return [n]; - if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)]; - return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]} - function arrayToSmall(arr) - {trim(arr); - var length=arr.length; - if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0) - switch(length) - {case 0:return 0; - case 1:return arr[0]; - case 2:return arr[0] + arr[1] * BASE; - default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE} - return arr} - function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1} - function createArray(length) - {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x} - function truncate(n) - {if(n > 0)return Math.floor(n);return Math.ceil(n)} - function add(a,b) - {var - l_a=a.length, - l_b=b.length, - r=new Array(l_a), - carry=0, - base=BASE, - sum, - i; - for(i = 0;i < l_b;i++) - {sum = a[i] + b[i] + carry; - carry = sum >= base?1:0; - r[i] = sum - carry * base} - while(i < l_a) - {sum = a[i] + carry; - carry = sum === base?1:0; - r[i++] = sum - carry * base} - if(carry > 0)r.push(carry); - return r} - function addAny(a,b) - {if(a.length >= b.length)return add(a,b);return add(b,a)} - function addSmall(a,carry) - {var l=a.length,r=new Array(l),base=BASE,sum,i; - for(i = 0;i < l;i++) - {sum = a[i] - base + carry; - carry = Math.floor(sum / base); - r[i] = sum - carry * base; - carry += 1} - while(carry > 0) - {r[i++] = carry % base;carry = Math.floor(carry / base)} - return r} - BigInteger.prototype.add - = - function(v) - {var n=parseValue(v); - if(this.sign !== n.sign)return this.subtract(n.negate()); - var a=this.value,b=n.value; - if(n.isSmall) - return new BigInteger(addSmall(a,Math.abs(b)),this.sign); - return new BigInteger(addAny(a,b),this.sign)}; - BigInteger.prototype.plus = BigInteger.prototype.add; - SmallInteger.prototype.add - = - function(v) - {var n=parseValue(v),a=this.value; - if(a < 0 !== n.sign)return this.subtract(n.negate()); - var b=n.value; - if(n.isSmall) - {if(isPrecise(a + b))return new SmallInteger(a + b); - b = smallToArray(Math.abs(b))} - return new BigInteger(addSmall(b,Math.abs(a)),a < 0)}; - SmallInteger.prototype.plus = SmallInteger.prototype.add; - NativeBigInt.prototype.add - = - function(v) - {return new NativeBigInt(this.value + parseValue(v).value)}; - NativeBigInt.prototype.plus = NativeBigInt.prototype.add; - function subtract(a,b) - {var - a_l=a.length, - b_l=b.length, - r=new Array(a_l), - borrow=0, - base=BASE, - i, - difference; - for(i = 0;i < b_l;i++) - {difference = a[i] - borrow - b[i]; - if(difference < 0){difference += base;borrow = 1}else borrow = 0; - r[i] = difference} - for(i = b_l;i < a_l;i++) - {difference = a[i] - borrow; - if(difference < 0) - difference += base; - else - {r[i++] = difference;break} - r[i] = difference} - for(;i < a_l;i++)r[i] = a[i]; - trim(r); - return r} - function subtractAny(a,b,sign) - {var value; - if(compareAbs(a,b) >= 0) - value = subtract(a,b); - else - {value = subtract(b,a);sign = ! sign} - value = arrayToSmall(value); - if(typeof value === "number") - {if(sign)value = - value;return new SmallInteger(value)} - return new BigInteger(value,sign)} - function subtractSmall(a,b,sign) - {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference; - for(i = 0;i < l;i++) - {difference = a[i] + carry; - carry = Math.floor(difference / base); - difference %= base; - r[i] = difference < 0?difference + base:difference} - r = arrayToSmall(r); - if(typeof r === "number") - {if(sign)r = - r;return new SmallInteger(r)} - return new BigInteger(r,sign)} - BigInteger.prototype.subtract - = - function(v) - {var n=parseValue(v); - if(this.sign !== n.sign)return this.add(n.negate()); - var a=this.value,b=n.value; - if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign); - return subtractAny(a,b,this.sign)}; - BigInteger.prototype.minus = BigInteger.prototype.subtract; - SmallInteger.prototype.subtract - = - function(v) - {var n=parseValue(v),a=this.value; - if(a < 0 !== n.sign)return this.add(n.negate()); - var b=n.value; - if(n.isSmall)return new SmallInteger(a - b); - return subtractSmall(b,Math.abs(a),a >= 0)}; - SmallInteger.prototype.minus = SmallInteger.prototype.subtract; - NativeBigInt.prototype.subtract - = - function(v) - {return new NativeBigInt(this.value - parseValue(v).value)}; - NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; - BigInteger.prototype.negate - = - function(){return new BigInteger(this.value,! this.sign)}; - SmallInteger.prototype.negate - = - function() - {var sign=this.sign,small=new SmallInteger(- this.value); - small.sign = ! sign; - return small}; - NativeBigInt.prototype.negate - = - function(){return new NativeBigInt(- this.value)}; - BigInteger.prototype.abs - = - function(){return new BigInteger(this.value,false)}; - SmallInteger.prototype.abs - = - function(){return new SmallInteger(Math.abs(this.value))}; - NativeBigInt.prototype.abs - = - function() - {return new NativeBigInt(this.value >= 0?this.value:- this.value)}; - function multiplyLong(a,b) - {var - a_l=a.length, - b_l=b.length, - l=a_l + b_l, - r=createArray(l), - base=BASE, - product, - carry, - i, - a_i, - b_j; - for(i = 0;i < a_l;++i) - {a_i = a[i]; - for(var j=0;j < b_l;++j) - {b_j = b[j]; - product = a_i * b_j + r[i + j]; - carry = Math.floor(product / base); - r[i + j] = product - carry * base; - r[i + j + 1] += carry}} - trim(r); - return r} - function multiplySmall(a,b) - {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i; - for(i = 0;i < l;i++) - {product = a[i] * b + carry; - carry = Math.floor(product / base); - r[i] = product - carry * base} - while(carry > 0) - {r[i++] = carry % base;carry = Math.floor(carry / base)} - return r} - function shiftLeft(x,n) - {var r=[];while(n-- > 0)r.push(0);return r.concat(x)} - function multiplyKaratsuba(x,y) - {var n=Math.max(x.length,y.length); - if(n <= 30)return multiplyLong(x,y); - n = Math.ceil(n / 2); - var - b=x.slice(n), - a=x.slice(0,n), - d=y.slice(n), - c=y.slice(0,n), - ac=multiplyKaratsuba(a,c), - bd=multiplyKaratsuba(b,d), - abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)), - product= - addAny - (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)), - shiftLeft(bd,2 * n)); - trim(product); - return product} - function useKaratsuba(l1,l2) - {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0} - BigInteger.prototype.multiply - = - function(v) - {var - n=parseValue(v), - a=this.value, - b=n.value, - sign=this.sign !== n.sign, - abs; - if(n.isSmall) - {if(b === 0)return Integer[0]; - if(b === 1)return this; - if(b === - 1)return this.negate(); - abs = Math.abs(b); - if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign); - b = smallToArray(abs)} - if(useKaratsuba(a.length,b.length)) - return new BigInteger(multiplyKaratsuba(a,b),sign); - return new BigInteger(multiplyLong(a,b),sign)}; - BigInteger.prototype.times = BigInteger.prototype.multiply; - function multiplySmallAndArray(a,b,sign) - {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign); - return new BigInteger(multiplyLong(b,smallToArray(a)),sign)} - SmallInteger.prototype._multiplyBySmall - = - function(a) - {if(isPrecise(a.value * this.value)) - return new SmallInteger(a.value * this.value); - return multiplySmallAndArray - (Math.abs(a.value), - smallToArray(Math.abs(this.value)), - this.sign !== a.sign)}; - BigInteger.prototype._multiplyBySmall - = - function(a) - {if(a.value === 0)return Integer[0]; - if(a.value === 1)return this; - if(a.value === - 1)return this.negate(); - return multiplySmallAndArray - (Math.abs(a.value),this.value,this.sign !== a.sign)}; - SmallInteger.prototype.multiply - = - function(v){return parseValue(v)._multiplyBySmall(this)}; - SmallInteger.prototype.times = SmallInteger.prototype.multiply; - NativeBigInt.prototype.multiply - = - function(v) - {return new NativeBigInt(this.value * parseValue(v).value)}; - NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; - function square(a) - {var - l=a.length, - r=createArray(l + l), - base=BASE, - product, - carry, - i, - a_i, - a_j; - for(i = 0;i < l;i++) - {a_i = a[i]; - carry = 0 - a_i * a_i; - for(var j=i;j < l;j++) - {a_j = a[j]; - product = 2 * (a_i * a_j) + r[i + j] + carry; - carry = Math.floor(product / base); - r[i + j] = product - carry * base} - r[i + l] = carry} - trim(r); - return r} - BigInteger.prototype.square - = - function(){return new BigInteger(square(this.value),false)}; - SmallInteger.prototype.square - = - function() - {var value=this.value * this.value; - if(isPrecise(value))return new SmallInteger(value); - return new - BigInteger - (square(smallToArray(Math.abs(this.value))),false)}; - NativeBigInt.prototype.square - = - function(v){return new NativeBigInt(this.value * this.value)}; - function divMod1(a,b) - {var - a_l=a.length, - b_l=b.length, - base=BASE, - result=createArray(b.length), - divisorMostSignificantDigit=b[b_l - 1], - lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)), - remainder=multiplySmall(a,lambda), - divisor=multiplySmall(b,lambda), - quotientDigit, - shift, - carry, - borrow, - i, - l, - q; - if(remainder.length <= a_l)remainder.push(0); - divisor.push(0); - divisorMostSignificantDigit = divisor[b_l - 1]; - for(shift = a_l - b_l;shift >= 0;shift--) - {quotientDigit = base - 1; - if(remainder[shift + b_l] !== divisorMostSignificantDigit) - quotientDigit - = - Math.floor - ((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) - / - divisorMostSignificantDigit); - carry = 0; - borrow = 0; - l = divisor.length; - for(i = 0;i < l;i++) - {carry += quotientDigit * divisor[i]; - q = Math.floor(carry / base); - borrow += remainder[shift + i] - (carry - q * base); - carry = q; - if(borrow < 0) - {remainder[shift + i] = borrow + base;borrow = - 1} - else - {remainder[shift + i] = borrow;borrow = 0}} - while(borrow !== 0) - {quotientDigit -= 1; - carry = 0; - for(i = 0;i < l;i++) - {carry += remainder[shift + i] - base + divisor[i]; - if(carry < 0) - {remainder[shift + i] = carry + base;carry = 0} - else - {remainder[shift + i] = carry;carry = 1}} - borrow += carry} - result[shift] = quotientDigit} - remainder = divModSmall(remainder,lambda)[0]; - return [arrayToSmall(result),arrayToSmall(remainder)]} - function divMod2(a,b) - {var - a_l=a.length, - b_l=b.length, - result=[], - part=[], - base=BASE, - guess, - xlen, - highx, - highy, - check; - while(a_l) - {part.unshift(a[--a_l]); - trim(part); - if(compareAbs(part,b) < 0){result.push(0);continue} - xlen = part.length; - highx = part[xlen - 1] * base + part[xlen - 2]; - highy = b[b_l - 1] * base + b[b_l - 2]; - if(xlen > b_l)highx = (highx + 1) * base; - guess = Math.ceil(highx / highy); - do - {check = multiplySmall(b,guess); - if(compareAbs(check,part) <= 0)break; - guess--} - while - (guess); - result.push(guess); - part = subtract(part,check)} - result.reverse(); - return [arrayToSmall(result),arrayToSmall(part)]} - function divModSmall(value,lambda) - {var - length=value.length, - quotient=createArray(length), - base=BASE, - i, - q, - remainder, - divisor; - remainder = 0; - for(i = length - 1;i >= 0;--i) - {divisor = remainder * base + value[i]; - q = truncate(divisor / lambda); - remainder = divisor - q * lambda; - quotient[i] = q | 0} - return [quotient,remainder | 0]} - function divModAny(self,v) - {var value,n=parseValue(v); - if(supportsNativeBigInt) - return [new NativeBigInt(self.value / n.value), - new NativeBigInt(self.value % n.value)]; - var a=self.value,b=n.value,quotient; - if(b === 0)throw new Error("Cannot divide by zero"); - if(self.isSmall) - {if(n.isSmall) - return [new SmallInteger(truncate(a / b)), - new SmallInteger(a % b)]; - return [Integer[0],self]} - if(n.isSmall) - {if(b === 1)return [self,Integer[0]]; - if(b == - 1)return [self.negate(),Integer[0]]; - var abs=Math.abs(b); - if(abs < BASE) - {value = divModSmall(a,abs); - quotient = arrayToSmall(value[0]); - var remainder=value[1]; - if(self.sign)remainder = - remainder; - if(typeof quotient === "number") - {if(self.sign !== n.sign)quotient = - quotient; - return [new SmallInteger(quotient), - new SmallInteger(remainder)]} - return [new BigInteger(quotient,self.sign !== n.sign), - new SmallInteger(remainder)]} - b = smallToArray(abs)} - var comparison=compareAbs(a,b); - if(comparison === - 1)return [Integer[0],self]; - if(comparison === 0) - return [Integer[self.sign === n.sign?1:- 1],Integer[0]]; - if(a.length + b.length <= 200) - value = divMod1(a,b); - else - value = divMod2(a,b); - quotient = value[0]; - var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign; - if(typeof quotient === "number") - {if(qSign)quotient = - quotient; - quotient = new SmallInteger(quotient)} - else - quotient = new BigInteger(quotient,qSign); - if(typeof mod === "number") - {if(mSign)mod = - mod;mod = new SmallInteger(mod)} - else - mod = new BigInteger(mod,mSign); - return [quotient,mod]} - BigInteger.prototype.divmod - = - function(v) - {var result=divModAny(this,v); - return {quotient:result[0],remainder:result[1]}}; - NativeBigInt.prototype.divmod - = - SmallInteger.prototype.divmod - = - BigInteger.prototype.divmod; - BigInteger.prototype.divide - = - function(v){return divModAny(this,v)[0]}; - NativeBigInt.prototype.over - = - NativeBigInt.prototype.divide - = - function(v) - {return new NativeBigInt(this.value / parseValue(v).value)}; - SmallInteger.prototype.over - = - SmallInteger.prototype.divide - = - BigInteger.prototype.over - = - BigInteger.prototype.divide; - BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]}; - NativeBigInt.prototype.mod - = - NativeBigInt.prototype.remainder - = - function(v) - {return new NativeBigInt(this.value % parseValue(v).value)}; - SmallInteger.prototype.remainder - = - SmallInteger.prototype.mod - = - BigInteger.prototype.remainder - = - BigInteger.prototype.mod; - BigInteger.prototype.pow - = - function(v) - {var n=parseValue(v),a=this.value,b=n.value,value,x,y; - if(b === 0)return Integer[1]; - if(a === 0)return Integer[0]; - if(a === 1)return Integer[1]; - if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1]; - if(n.sign)return Integer[0]; - if(! n.isSmall) - throw new Error("The exponent " + n.toString() + " is too large."); - if(this.isSmall) - if(isPrecise(value = Math.pow(a,b))) - return new SmallInteger(truncate(value)); - x = this; - y = Integer[1]; - while(true) - {if(b & 1 === 1){y = y.times(x);--b} - if(b === 0)break; - b /= 2; - x = x.square()} - return y}; - SmallInteger.prototype.pow = BigInteger.prototype.pow; - NativeBigInt.prototype.pow - = - function(v) - {var - n=parseValue(v), - a=this.value, - b=n.value, - _0=BigInt(0), - _1=BigInt(1), - _2=BigInt(2); - if(b === _0)return Integer[1]; - if(a === _0)return Integer[0]; - if(a === _1)return Integer[1]; - if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1]; - if(n.isNegative())return new NativeBigInt(_0); - var x=this,y=Integer[1]; - while(true) - {if((b & _1) === _1){y = y.times(x);--b} - if(b === _0)break; - b /= _2; - x = x.square()} - return y}; - BigInteger.prototype.modPow - = - function(exp,mod) - {exp = parseValue(exp); - mod = parseValue(mod); - if(mod.isZero()) - throw new Error("Cannot take modPow with modulus 0"); - var r=Integer[1],base=this.mod(mod); - if(exp.isNegative()) - {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)} - while(exp.isPositive()) - {if(base.isZero())return Integer[0]; - if(exp.isOdd())r = r.multiply(base).mod(mod); - exp = exp.divide(2); - base = base.square().mod(mod)} - return r}; - NativeBigInt.prototype.modPow - = - SmallInteger.prototype.modPow - = - BigInteger.prototype.modPow; - function compareAbs(a,b) - {if(a.length !== b.length)return a.length > b.length?1:- 1; - for(var i=a.length - 1;i >= 0;i--) - if(a[i] !== b[i])return a[i] > b[i]?1:- 1; - return 0} - BigInteger.prototype.compareAbs - = - function(v) - {var n=parseValue(v),a=this.value,b=n.value; - if(n.isSmall)return 1; - return compareAbs(a,b)}; - SmallInteger.prototype.compareAbs - = - function(v) - {var n=parseValue(v),a=Math.abs(this.value),b=n.value; - if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1} - return - 1}; - NativeBigInt.prototype.compareAbs - = - function(v) - {var a=this.value,b=parseValue(v).value; - a = a >= 0?a:- a; - b = b >= 0?b:- b; - return a === b?0:a > b?1:- 1}; - BigInteger.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var n=parseValue(v),a=this.value,b=n.value; - if(this.sign !== n.sign)return n.sign?1:- 1; - if(n.isSmall)return this.sign?- 1:1; - return compareAbs(a,b) * (this.sign?- 1:1)}; - BigInteger.prototype.compareTo = BigInteger.prototype.compare; - SmallInteger.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var n=parseValue(v),a=this.value,b=n.value; - if(n.isSmall)return a == b?0:a > b?1:- 1; - if(a < 0 !== n.sign)return a < 0?- 1:1; - return a < 0?1:- 1}; - SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; - NativeBigInt.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var a=this.value,b=parseValue(v).value; - return a === b?0:a > b?1:- 1}; - NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; - BigInteger.prototype.equals - = - function(v){return this.compare(v) === 0}; - NativeBigInt.prototype.eq - = - NativeBigInt.prototype.equals - = - SmallInteger.prototype.eq - = - SmallInteger.prototype.equals - = - BigInteger.prototype.eq - = - BigInteger.prototype.equals; - BigInteger.prototype.notEquals - = - function(v){return this.compare(v) !== 0}; - NativeBigInt.prototype.neq - = - NativeBigInt.prototype.notEquals - = - SmallInteger.prototype.neq - = - SmallInteger.prototype.notEquals - = - BigInteger.prototype.neq - = - BigInteger.prototype.notEquals; - BigInteger.prototype.greater - = - function(v){return this.compare(v) > 0}; - NativeBigInt.prototype.gt - = - NativeBigInt.prototype.greater - = - SmallInteger.prototype.gt - = - SmallInteger.prototype.greater - = - BigInteger.prototype.gt - = - BigInteger.prototype.greater; - BigInteger.prototype.lesser - = - function(v){return this.compare(v) < 0}; - NativeBigInt.prototype.lt - = - NativeBigInt.prototype.lesser - = - SmallInteger.prototype.lt - = - SmallInteger.prototype.lesser - = - BigInteger.prototype.lt - = - BigInteger.prototype.lesser; - BigInteger.prototype.greaterOrEquals - = - function(v){return this.compare(v) >= 0}; - NativeBigInt.prototype.geq - = - NativeBigInt.prototype.greaterOrEquals - = - SmallInteger.prototype.geq - = - SmallInteger.prototype.greaterOrEquals - = - BigInteger.prototype.geq - = - BigInteger.prototype.greaterOrEquals; - BigInteger.prototype.lesserOrEquals - = - function(v){return this.compare(v) <= 0}; - NativeBigInt.prototype.leq - = - NativeBigInt.prototype.lesserOrEquals - = - SmallInteger.prototype.leq - = - SmallInteger.prototype.lesserOrEquals - = - BigInteger.prototype.leq - = - BigInteger.prototype.lesserOrEquals; - BigInteger.prototype.isEven - = - function(){return (this.value[0] & 1) === 0}; - SmallInteger.prototype.isEven - = - function(){return (this.value & 1) === 0}; - NativeBigInt.prototype.isEven - = - function(){return (this.value & BigInt(1)) === BigInt(0)}; - BigInteger.prototype.isOdd - = - function(){return (this.value[0] & 1) === 1}; - SmallInteger.prototype.isOdd - = - function(){return (this.value & 1) === 1}; - NativeBigInt.prototype.isOdd - = - function(){return (this.value & BigInt(1)) === BigInt(1)}; - BigInteger.prototype.isPositive = function(){return ! this.sign}; - SmallInteger.prototype.isPositive - = - function(){return this.value > 0}; - NativeBigInt.prototype.isPositive - = - SmallInteger.prototype.isPositive; - BigInteger.prototype.isNegative = function(){return this.sign}; - SmallInteger.prototype.isNegative - = - function(){return this.value < 0}; - NativeBigInt.prototype.isNegative - = - SmallInteger.prototype.isNegative; - BigInteger.prototype.isUnit = function(){return false}; - SmallInteger.prototype.isUnit - = - function(){return Math.abs(this.value) === 1}; - NativeBigInt.prototype.isUnit - = - function(){return this.abs().value === BigInt(1)}; - BigInteger.prototype.isZero = function(){return false}; - SmallInteger.prototype.isZero = function(){return this.value === 0}; - NativeBigInt.prototype.isZero - = - function(){return this.value === BigInt(0)}; - BigInteger.prototype.isDivisibleBy - = - function(v) - {var n=parseValue(v); - if(n.isZero())return false; - if(n.isUnit())return true; - if(n.compareAbs(2) === 0)return this.isEven(); - return this.mod(n).isZero()}; - NativeBigInt.prototype.isDivisibleBy - = - SmallInteger.prototype.isDivisibleBy - = - BigInteger.prototype.isDivisibleBy; - function isBasicPrime(v) - {var n=v.abs(); - if(n.isUnit())return false; - if(n.equals(2) || n.equals(3) || n.equals(5))return true; - if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) - return false; - if(n.lesser(49))return true} - function millerRabinTest(n,a) - {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x; - while(b.isEven())b = b.divide(2),r++; - next: - for(i = 0;i < a.length;i++) - {if(n.lesser(a[i]))continue; - x = bigInt(a[i]).modPow(b,n); - if(x.isUnit() || x.equals(nPrev))continue; - for(d = r - 1;d != 0;d--) - {x = x.square().mod(n); - if(x.isUnit())return false; - if(x.equals(nPrev))continue next} - return false} - return true} - BigInteger.prototype.isPrime - = - function(strict) - {var isPrime=isBasicPrime(this); - if(isPrime !== undefined)return isPrime; - var n=this.abs(),bits=n.bitLength(); - if(bits <= 64) - return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]); - var - logN=Math.log(2) * bits.toJSNumber(), - t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN); - for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2)); - return millerRabinTest(n,a)}; - NativeBigInt.prototype.isPrime - = - SmallInteger.prototype.isPrime - = - BigInteger.prototype.isPrime; - BigInteger.prototype.isProbablePrime - = - function(iterations) - {var isPrime=isBasicPrime(this); - if(isPrime !== undefined)return isPrime; - var n=this.abs(),t=iterations === undefined?5:iterations; - for(var a=[],i=0;i < t;i++) - a.push(bigInt.randBetween(2,n.minus(2))); - return millerRabinTest(n,a)}; - NativeBigInt.prototype.isProbablePrime - = - SmallInteger.prototype.isProbablePrime - = - BigInteger.prototype.isProbablePrime; - BigInteger.prototype.modInv - = - function(n) - {var - t=bigInt.zero, - newT=bigInt.one, - r=parseValue(n), - newR=this.abs(), - q, - lastT, - lastR; - while(! newR.isZero()) - {q = r.divide(newR); - lastT = t; - lastR = r; - t = newT; - r = newR; - newT = lastT.subtract(q.multiply(newT)); - newR = lastR.subtract(q.multiply(newR))} - if(! r.isUnit()) - throw new - Error - (this.toString() - + - " and " - + - n.toString() - + - " are not co-prime"); - if(t.compare(0) === - 1)t = t.add(n); - if(this.isNegative())return t.negate(); - return t}; - NativeBigInt.prototype.modInv - = - SmallInteger.prototype.modInv - = - BigInteger.prototype.modInv; - BigInteger.prototype.next - = - function() - {var value=this.value; - if(this.sign)return subtractSmall(value,1,this.sign); - return new BigInteger(addSmall(value,1),this.sign)}; - SmallInteger.prototype.next - = - function() - {var value=this.value; - if(value + 1 < MAX_INT)return new SmallInteger(value + 1); - return new BigInteger(MAX_INT_ARR,false)}; - NativeBigInt.prototype.next - = - function(){return new NativeBigInt(this.value + BigInt(1))}; - BigInteger.prototype.prev - = - function() - {var value=this.value; - if(this.sign)return new BigInteger(addSmall(value,1),true); - return subtractSmall(value,1,this.sign)}; - SmallInteger.prototype.prev - = - function() - {var value=this.value; - if(value - 1 > - MAX_INT)return new SmallInteger(value - 1); - return new BigInteger(MAX_INT_ARR,true)}; - NativeBigInt.prototype.prev - = - function(){return new NativeBigInt(this.value - BigInt(1))}; - var powersOfTwo=[1]; - while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) - powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); - var - powers2Length=powersOfTwo.length, - highestPower2=powersOfTwo[powers2Length - 1]; - function shift_isSmall(n){return Math.abs(n) <= BASE} - BigInteger.prototype.shiftLeft - = - function(v) - {var n=parseValue(v).toJSNumber(); - if(! shift_isSmall(n)) - throw new Error(String(n) + " is too large for shifting."); - if(n < 0)return this.shiftRight(- n); - var result=this; - if(result.isZero())return result; - while(n >= powers2Length) - {result = result.multiply(highestPower2);n -= powers2Length - 1} - return result.multiply(powersOfTwo[n])}; - NativeBigInt.prototype.shiftLeft - = - SmallInteger.prototype.shiftLeft - = - BigInteger.prototype.shiftLeft; - BigInteger.prototype.shiftRight - = - function(v) - {var remQuo,n=parseValue(v).toJSNumber(); - if(! shift_isSmall(n)) - throw new Error(String(n) + " is too large for shifting."); - if(n < 0)return this.shiftLeft(- n); - var result=this; - while(n >= powers2Length) - {if(result.isZero() || result.isNegative() && result.isUnit()) - return result; - remQuo = divModAny(result,highestPower2); - result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]; - n -= powers2Length - 1} - remQuo = divModAny(result,powersOfTwo[n]); - return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]}; - NativeBigInt.prototype.shiftRight - = - SmallInteger.prototype.shiftRight - = - BigInteger.prototype.shiftRight; - function bitwise(x,y,fn) - {y = parseValue(y); - var - xSign=x.isNegative(), - ySign=y.isNegative(), - xRem=xSign?x.not():x, - yRem=ySign?y.not():y, - xDigit=0, - yDigit=0, - xDivMod=null, - yDivMod=null, - result=[]; - while(! xRem.isZero() || ! yRem.isZero()) - {xDivMod = divModAny(xRem,highestPower2); - xDigit = xDivMod[1].toJSNumber(); - if(xSign)xDigit = highestPower2 - 1 - xDigit; - yDivMod = divModAny(yRem,highestPower2); - yDigit = yDivMod[1].toJSNumber(); - if(ySign)yDigit = highestPower2 - 1 - yDigit; - xRem = xDivMod[0]; - yRem = yDivMod[0]; - result.push(fn(xDigit,yDigit))} - var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0); - for(var i=result.length - 1;i >= 0;i -= 1) - sum = sum.multiply(highestPower2).add(bigInt(result[i])); - return sum} - BigInteger.prototype.not = function(){return this.negate().prev()}; - NativeBigInt.prototype.not - = - SmallInteger.prototype.not - = - BigInteger.prototype.not; - BigInteger.prototype.and - = - function(n){return bitwise(this,n,function(a,b){return a & b})}; - NativeBigInt.prototype.and - = - SmallInteger.prototype.and - = - BigInteger.prototype.and; - BigInteger.prototype.or - = - function(n){return bitwise(this,n,function(a,b){return a | b})}; - NativeBigInt.prototype.or - = - SmallInteger.prototype.or - = - BigInteger.prototype.or; - BigInteger.prototype.xor - = - function(n){return bitwise(this,n,function(a,b){return a ^ b})}; - NativeBigInt.prototype.xor - = - SmallInteger.prototype.xor - = - BigInteger.prototype.xor; - var - LOBMASK_I=1 << 30, - LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I; - function roughLOB(n) - {var - v=n.value, - x= - typeof v === "number" - ?v | LOBMASK_I - :typeof v === "bigint" - ?v | BigInt(LOBMASK_I) - :v[0] + v[1] * BASE | LOBMASK_BI; - return x & - x} - function integerLogarithm(value,base) - {if(base.compareTo(value) <= 0) - {var - tmp=integerLogarithm(value,base.square(base)), - p=tmp.p, - e=tmp.e, - t=p.multiply(base); - return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}} - return {p:bigInt(1),e:0}} - BigInteger.prototype.bitLength - = - function() - {var n=this; - if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1)); - if(n.compareTo(bigInt(0)) === 0)return bigInt(0); - return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))}; - NativeBigInt.prototype.bitLength - = - SmallInteger.prototype.bitLength - = - BigInteger.prototype.bitLength; - function max(a,b) - {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b} - function min(a,b) - {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b} - function gcd(a,b) - {a = parseValue(a).abs(); - b = parseValue(b).abs(); - if(a.equals(b))return a; - if(a.isZero())return b; - if(b.isZero())return a; - var c=Integer[1],d,t; - while(a.isEven() && b.isEven()) - {d = min(roughLOB(a),roughLOB(b)); - a = a.divide(d); - b = b.divide(d); - c = c.multiply(d)} - while(a.isEven())a = a.divide(roughLOB(a)); - do - {while(b.isEven())b = b.divide(roughLOB(b)); - if(a.greater(b)){t = b;b = a;a = t} - b = b.subtract(a)} - while - (! b.isZero()); - return c.isUnit()?a:a.multiply(c)} - function lcm(a,b) - {a = parseValue(a).abs(); - b = parseValue(b).abs(); - return a.divide(gcd(a,b)).multiply(b)} - function randBetween(a,b) - {a = parseValue(a); - b = parseValue(b); - var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1); - if(range.isSmall)return low.add(Math.floor(Math.random() * range)); - var digits=toBase(range,BASE).value,result=[],restricted=true; - for(var i=0;i < digits.length;i++) - {var - top=restricted?digits[i]:BASE, - digit=truncate(Math.random() * top); - result.push(digit); - if(digit < top)restricted = false} - return low.add(Integer.fromArray(result,BASE,false))} - function parseBase(text,base,alphabet,caseSensitive) - {alphabet = alphabet || DEFAULT_ALPHABET; - text = String(text); - if(! caseSensitive) - {text = text.toLowerCase();alphabet = alphabet.toLowerCase()} - var length=text.length,i,absBase=Math.abs(base),alphabetValues={}; - for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i; - for(i = 0;i < length;i++) - {var c=text[i]; - if(c === "-")continue; - if(c in alphabetValues) - if(alphabetValues[c] >= absBase) - {if(c === "1" && absBase === 1)continue; - throw new - Error - (c + " is not a valid digit in base " + base + ".")}} - base = parseValue(base); - var digits=[],isNegative=text[0] === "-"; - for(i = isNegative?1:0;i < text.length;i++) - {var c=text[i]; - if(c in alphabetValues) - digits.push(parseValue(alphabetValues[c])); - else - if(c === "<") - {var start=i; - do i++;while(text[i] !== ">" && i < text.length); - digits.push(parseValue(text.slice(start + 1,i)))} - else - throw new Error(c + " is not a valid character")} - return parseBaseFromArray(digits,base,isNegative)} - function parseBaseFromArray(digits,base,isNegative) - {var val=Integer[0],pow=Integer[1],i; - for(i = digits.length - 1;i >= 0;i--) - {val = val.add(digits[i].times(pow));pow = pow.times(base)} - return isNegative?val.negate():val} - function stringify(digit,alphabet) - {alphabet = alphabet || DEFAULT_ALPHABET; - if(digit < alphabet.length)return alphabet[digit]; - return "<" + digit + ">"} - function toBase(n,base) - {base = bigInt(base); - if(base.isZero()) - {if(n.isZero())return {value:[0],isNegative:false}; - throw new Error("Cannot convert nonzero numbers to base 0.")} - if(base.equals(- 1)) - {if(n.isZero())return {value:[0],isNegative:false}; - if(n.isNegative()) - return {value: - [].concat.apply - ([], - Array.apply(null,Array(- n.toJSNumber())).map - (Array.prototype.valueOf,[1,0])), - isNegative:false}; - var - arr= - Array.apply(null,Array(n.toJSNumber() - 1)).map - (Array.prototype.valueOf,[0,1]); - arr.unshift([1]); - return {value:[].concat.apply([],arr),isNegative:false}} - var neg=false; - if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()} - if(base.isUnit()) - {if(n.isZero())return {value:[0],isNegative:false}; - return {value: - Array.apply(null,Array(n.toJSNumber())).map - (Number.prototype.valueOf,1), - isNegative:neg}} - var out=[],left=n,divmod; - while(left.isNegative() || left.compareAbs(base) >= 0) - {divmod = left.divmod(base); - left = divmod.quotient; - var digit=divmod.remainder; - if(digit.isNegative()) - {digit = base.minus(digit).abs();left = left.next()} - out.push(digit.toJSNumber())} - out.push(left.toJSNumber()); - return {value:out.reverse(),isNegative:neg}} - function toBaseString(n,base,alphabet) - {var arr=toBase(n,base); - return (arr.isNegative?"-":"") - + - arr.value.map(function(x){return stringify(x,alphabet)}).join - ("")} - BigInteger.prototype.toArray - = - function(radix){return toBase(this,radix)}; - SmallInteger.prototype.toArray - = - function(radix){return toBase(this,radix)}; - NativeBigInt.prototype.toArray - = - function(radix){return toBase(this,radix)}; - BigInteger.prototype.toString - = - function(radix,alphabet) - {if(radix === undefined)radix = 10; - if(radix !== 10)return toBaseString(this,radix,alphabet); - var - v=this.value, - l=v.length, - str=String(v[--l]), - zeros="0000000", - digit; - while(--l >= 0) - {digit = String(v[l]);str += zeros.slice(digit.length) + digit} - var sign=this.sign?"-":""; - return sign + str}; - SmallInteger.prototype.toString - = - function(radix,alphabet) - {if(radix === undefined)radix = 10; - if(radix != 10)return toBaseString(this,radix,alphabet); - return String(this.value)}; - NativeBigInt.prototype.toString = SmallInteger.prototype.toString; - NativeBigInt.prototype.toJSON - = - BigInteger.prototype.toJSON - = - SmallInteger.prototype.toJSON - = - function(){return this.toString()}; - BigInteger.prototype.valueOf - = - function(){return parseInt(this.toString(),10)}; - BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; - SmallInteger.prototype.valueOf = function(){return this.value}; - SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; - NativeBigInt.prototype.valueOf - = - NativeBigInt.prototype.toJSNumber - = - function(){return parseInt(this.toString(),10)}; - function parseStringValue(v) - {if(isPrecise(+ v)) - {var x=+ v; - if(x === truncate(x)) - return supportsNativeBigInt - ?new NativeBigInt(BigInt(x)) - :new SmallInteger(x); - throw new Error("Invalid integer: " + v)} - var sign=v[0] === "-"; - if(sign)v = v.slice(1); - var split=v.split(/e/i); - if(split.length > 2) - throw new Error("Invalid integer: " + split.join("e")); - if(split.length === 2) - {var exp=split[1]; - if(exp[0] === "+")exp = exp.slice(1); - exp = + exp; - if(exp !== truncate(exp) || ! isPrecise(exp)) - throw new - Error - ("Invalid integer: " + exp + " is not a valid exponent."); - var text=split[0],decimalPlace=text.indexOf("."); - if(decimalPlace >= 0) - {exp -= text.length - decimalPlace - 1; - text - = - text.slice(0,decimalPlace) - + - text.slice(decimalPlace + 1)} - if(exp < 0) - throw new - Error - ("Cannot include negative exponent part for integers"); - text += new Array(exp + 1).join("0"); - v = text} - var isValid=/^([0-9][0-9]*)$/.test(v); - if(! isValid)throw new Error("Invalid integer: " + v); - if(supportsNativeBigInt) - return new NativeBigInt(BigInt(sign?"-" + v:v)); - var r=[],max=v.length,l=LOG_BASE,min=max - l; - while(max > 0) - {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l} - trim(r); - return new BigInteger(r,sign)} - function parseNumberValue(v) - {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v)); - if(isPrecise(v)) - {if(v !== truncate(v))throw new Error(v + " is not an integer."); - return new SmallInteger(v)} - return parseStringValue(v.toString())} - function parseValue(v) - {if(typeof v === "number")return parseNumberValue(v); - if(typeof v === "string")return parseStringValue(v); - if(typeof v === "bigint")return new NativeBigInt(v); - return v} - for(var i=0;i < 1000;i++) - {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)} - Integer.one = Integer[1]; - Integer.zero = Integer[0]; - Integer.minusOne = Integer[- 1]; - Integer.max = max; - Integer.min = min; - Integer.gcd = gcd; - Integer.lcm = lcm; - Integer.isInstance - = - function(x) - {return x instanceof BigInteger - || - x instanceof SmallInteger - || - x instanceof NativeBigInt}; - Integer.randBetween = randBetween; - Integer.fromArray - = - function(digits,base,isNegative) - {return parseBaseFromArray - (digits.map(parseValue),parseValue(base || 10),isNegative)}; - return Integer} - (); - function ml_z_normalize(x) - {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x} - function ml_z_pow(z1,i1) - {i1 = bigInt(i1); - if(i1.lt(bigInt(0))) - caml_invalid_argument("Z.pow: exponent must be nonnegative"); - return ml_z_normalize(bigInt(z1).pow(i1))} - function ml_z_root(z,i) - {var zero=bigInt(0),one=bigInt(1); - z = bigInt(z); - if(i % 2 === 0 && z.lt(zero)) - caml_invalid_argument("Z.root: even root of a negative number"); - if(z.equals(zero) || z.equals(one))return ml_z_normalize(z); - var start=zero,end=z,ans=null,two=bigInt(2); - while(start.leq(end)) - {var mid=start.add(end).divide(two),po=mid.pow(i); - if(po.equals(z)) - return ml_z_normalize(mid); - else - if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} - return ml_z_normalize(ans)} - function caml_int64_of_bytes(a) - {return new - MlInt64 - (a[7] << 0 | a[6] << 8 | a[5] << 16, - a[4] << 0 | a[3] << 8 | a[2] << 16, - a[1] << 0 | a[0] << 8)} - function caml_ba_uint8_get64(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 7 >= ba.data.length)caml_array_bound_error(); - var - b1=ba.get(ofs + 0), - b2=ba.get(ofs + 1), - b3=ba.get(ofs + 2), - b4=ba.get(ofs + 3), - b5=ba.get(ofs + 4), - b6=ba.get(ofs + 5), - b7=ba.get(ofs + 6), - b8=ba.get(ofs + 7); - return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])} - function caml_int64_to_bytes(x){return x.toArray()} - function caml_int64_marshal(writer,v,sizes) - {var b=caml_int64_to_bytes(v); - for(var i=0;i < 8;i++)writer.write(8,b[i]); - sizes[0] = 8; - sizes[1] = 8} - function caml_ba_num_dims(ba){return ba.dims.length} - function caml_return_exn_constant(tag){return tag} - function caml_wrap_exception(e) - {if(e instanceof Array)return e; - if - (globalThis.RangeError - && - e instanceof globalThis.RangeError - && - e.message - && - e.message.match(/maximum call stack/i)) - return caml_return_exn_constant(caml_global_data.Stack_overflow); - if - (globalThis.InternalError - && - e instanceof globalThis.InternalError - && - e.message - && - e.message.match(/too much recursion/i)) - return caml_return_exn_constant(caml_global_data.Stack_overflow); - if(e instanceof globalThis.Error && caml_named_value("jsError")) - return [0,caml_named_value("jsError"),e]; - return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]} - function caml_create_file(name,content) - {var root=resolve_fs_device(name); - if(! root.device.register)caml_failwith("cannot register file"); - root.device.register(root.rest,content); - return 0} - function jsoo_create_file(name,content) - {var - name=caml_string_of_jsbytes(name), - content=caml_string_of_jsbytes(content); - return caml_create_file(name,content)} - function caml_fs_init() - {var tmp=globalThis.caml_fs_tmp; - if(tmp) - for(var i=0;i < tmp.length;i++) - jsoo_create_file(tmp[i].name,tmp[i].content); - globalThis.jsoo_create_file = jsoo_create_file; - globalThis.caml_fs_tmp = []; - return 0} - function caml_set_parser_trace(){return 0} - function caml_list_of_js_array(a) - {var l=0; - for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]} - return l} - function unix_gettimeofday(){return new Date().getTime() / 1000} - function caml_mul(a,b){return Math.imul(a,b)} - function caml_hash_mix_int(h,d) - {d = caml_mul(d,0xcc9e2d51 | 0); - d = d << 15 | d >>> 32 - 15; - d = caml_mul(d,0x1b873593); - h ^= d; - h = h << 13 | h >>> 32 - 13; - return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0} - function num_digits_nat(nat,ofs,len) - {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1; - return 1} - function caml_hash_nat(x) - {var len=num_digits_nat(x,0,x.data.length),h=0; - for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]); - return h} - function caml_call_gen(f,args) - {if(f.fun)return caml_call_gen(f.fun,args); - if(typeof f !== "function")return f; - var n=f.length | 0; - if(n === 0)return f.apply(null,args); - var argsLen=args.length | 0,d=n - argsLen | 0; - if(d == 0) - return f.apply(null,args); - else - if(d < 0) - return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n)); - else - return function() - {var - extra_args=arguments.length == 0?1:arguments.length, - nargs=new Array(args.length + extra_args); - for(var i=0;i < args.length;i++)nargs[i] = args[i]; - for(var i=0;i < arguments.length;i++) - nargs[args.length + i] = arguments[i]; - return caml_call_gen(f,nargs)}} - function caml_js_wrap_callback_arguments(f) - {return function() - {var len=arguments.length,args=new Array(len); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,[args])}} - function caml_sys_chdir(dir) - {var root=resolve_fs_device(dir); - if(root.device.exists(root.rest)) - {if(root.rest) - caml_current_dir = caml_trailing_slash(root.path + root.rest); - else - caml_current_dir = root.path; - return 0} - else - caml_raise_no_such_file(caml_jsbytes_of_string(dir))} - function caml_gc_counters(){return [254,0,0,0]} - function ml_z_div(z1,z2) - {z2 = bigInt(z2); - if(z2.equals(bigInt(0)))caml_raise_zero_divide(); - return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))} - function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)} - function ml_z_add(z1,z2) - {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))} - function ml_z_cdiv(z1,z2) - {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); - if(z1_pos * z2_pos > 0) - if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) - return ml_z_add(ml_z_div(z1,z2),bigInt(1)); - return ml_z_div(z1,z2)} - function caml_gr_synchronize() - {caml_failwith("caml_gr_synchronize not Implemented")} - function unix_has_symlink(unit){return fs_node_supported()?1:0} - var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020; - function jsoo_floor_log2(x) - {if(log2_ok)return Math.floor(Math.log2(x)); - var i=0; - if(x == 0)return - Infinity; - if(x >= 1)while(x >= 2){x /= 2;i++}else while(x < 1){x *= 2;i--} - return i} - function caml_int32_bits_of_float(x) - {var float32a=new (globalThis.Float32Array)(1); - float32a[0] = x; - var int32a=new (globalThis.Int32Array)(float32a.buffer); - return int32a[0] | 0} - function caml_int64_create_lo_mi_hi(lo,mi,hi) - {return new MlInt64(lo,mi,hi)} - function caml_int64_bits_of_float(x) - {if(! isFinite(x)) - {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0); - return x > 0 - ?caml_int64_create_lo_mi_hi(0,0,0x7ff0) - :caml_int64_create_lo_mi_hi(0,0,0xfff0)} - var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000; - if(sign)x = - x; - var exp=jsoo_floor_log2(x) + 1023; - if(exp <= 0) - {exp = 0;x /= Math.pow(2,- 1026)} - else - {x /= Math.pow(2,exp - 1027); - if(x < 16){x *= 2;exp -= 1} - if(exp == 0)x /= 2} - var k=Math.pow(2,24),r3=x | 0; - x = (x - r3) * k; - var r2=x | 0; - x = (x - r2) * k; - var r1=x | 0; - r3 = r3 & 0xf | sign | exp << 4; - return caml_int64_create_lo_mi_hi(r1,r2,r3)} - function caml_ba_serialize(writer,ba,sz) - {writer.write(32,ba.dims.length); - writer.write(32,ba.kind | ba.layout << 8); - if(ba.caml_custom == "_bigarr02") - for(var i=0;i < ba.dims.length;i++) - if(ba.dims[i] < 0xffff) - writer.write(16,ba.dims[i]); - else - {writer.write(16,0xffff); - writer.write(32,0); - writer.write(32,ba.dims[i])} - else - for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]); - switch(ba.kind) - {case 2: - case 3: - case 12: - for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break; - case 4: - case 5: - for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break; - case 6: - for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break; - case 8: - case 9: - writer.write(8,0); - for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]); - break; - case 7: - for(var i=0;i < ba.data.length / 2;i++) - {var b=caml_int64_to_bytes(ba.get(i)); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break; - case 1: - for(var i=0;i < ba.data.length;i++) - {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i))); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break; - case 0: - for(var i=0;i < ba.data.length;i++) - {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)} - break; - case 10: - for(var i=0;i < ba.data.length / 2;i++) - {var j=ba.get(i); - writer.write(32,caml_int32_bits_of_float(j[1])); - writer.write(32,caml_int32_bits_of_float(j[2]))} - break; - case 11: - for(var i=0;i < ba.data.length / 2;i++) - {var - complex=ba.get(i), - b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1])); - for(var j=0;j < 8;j++)writer.write(8,b[j]); - var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2])); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break - } - sz[0] = (4 + ba.dims.length) * 4; - sz[1] = (4 + ba.dims.length) * 8} - function caml_ba_get_size_per_element(kind) - {switch(kind){case 7:case 10:case 11:return 2;default:return 1}} - function caml_ba_create_buffer(kind,size) - {var g=globalThis,view; - switch(kind) - {case 0:view = g.Float32Array;break; - case 1:view = g.Float64Array;break; - case 2:view = g.Int8Array;break; - case 3:view = g.Uint8Array;break; - case 4:view = g.Int16Array;break; - case 5:view = g.Uint16Array;break; - case 6:view = g.Int32Array;break; - case 7:view = g.Int32Array;break; - case 8:view = g.Int32Array;break; - case 9:view = g.Int32Array;break; - case 10:view = g.Float32Array;break; - case 11:view = g.Float64Array;break; - case 12:view = g.Uint8Array;break - } - if(! view)caml_invalid_argument("Bigarray.create: unsupported kind"); - var data=new view(size * caml_ba_get_size_per_element(kind)); - return data} - function caml_int32_float_of_bits(x) - {var int32a=new (globalThis.Int32Array)(1); - int32a[0] = x; - var float32a=new (globalThis.Float32Array)(int32a.buffer); - return float32a[0]} - function caml_int64_float_of_bits(x) - {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4; - if(exp == 2047) - return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN; - var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf); - if(exp > 0) - {res += 16;res *= Math.pow(2,exp - 1027)} - else - res *= Math.pow(2,- 1026); - if(hi & 0x8000)res = - res; - return res} - function caml_ba_get_size(dims) - {var n_dims=dims.length,size=1; - for(var i=0;i < n_dims;i++) - {if(dims[i] < 0) - caml_invalid_argument("Bigarray.create: negative dimension"); - size = size * dims[i]} - return size} - function caml_int64_create_lo_hi(lo,hi) - {return new - MlInt64 - (lo & 0xffffff, - lo >>> 24 & 0xff | (hi & 0xffff) << 8, - hi >>> 16 & 0xffff)} - function caml_int64_hi32(v){return v.hi32()} - function caml_int64_lo32(v){return v.lo32()} - var caml_ba_custom_name="_bigarr02"; - function Ml_Bigarray(kind,layout,dims,buffer) - {this.kind = kind; - this.layout = layout; - this.dims = dims; - this.data = buffer} - Ml_Bigarray.prototype.caml_custom = caml_ba_custom_name; - Ml_Bigarray.prototype.offset - = - function(arg) - {var ofs=0; - if(typeof arg === "number")arg = [arg]; - if(! (arg instanceof Array)) - caml_invalid_argument("bigarray.js: invalid offset"); - if(this.dims.length != arg.length) - caml_invalid_argument("Bigarray.get/set: bad number of dimensions"); - if(this.layout == 0) - for(var i=0;i < this.dims.length;i++) - {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error(); - ofs = ofs * this.dims[i] + arg[i]} - else - for(var i=this.dims.length - 1;i >= 0;i--) - {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error(); - ofs = ofs * this.dims[i] + (arg[i] - 1)} - return ofs}; - Ml_Bigarray.prototype.get - = - function(ofs) - {switch(this.kind) - {case 7: - var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1]; - return caml_int64_create_lo_hi(l,h); - case 10: - case 11: - var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1]; - return [254,r,i]; - default:return this.data[ofs]}}; - Ml_Bigarray.prototype.set - = - function(ofs,v) - {switch(this.kind) - {case 7: - this.data[ofs * 2 + 0] = caml_int64_lo32(v); - this.data[ofs * 2 + 1] = caml_int64_hi32(v); - break; - case 10: - case 11: - this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break; - default:this.data[ofs] = v;break} - return 0}; - Ml_Bigarray.prototype.fill - = - function(v) - {switch(this.kind) - {case 7: - var a=caml_int64_lo32(v),b=caml_int64_hi32(v); - if(a == b) - this.data.fill(a); - else - for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b; - break; - case 10: - case 11: - var im=v[1],re=v[2]; - if(im == re) - this.data.fill(im); - else - for(var i=0;i < this.data.length;i++) - this.data[i] = i % 2 == 0?im:re; - break; - default:this.data.fill(v);break}}; - Ml_Bigarray.prototype.compare - = - function(b,total) - {if(this.layout != b.layout || this.kind != b.kind) - {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8; - return k2 - k1} - if(this.dims.length != b.dims.length) - return b.dims.length - this.dims.length; - for(var i=0;i < this.dims.length;i++) - if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1; - switch(this.kind) - {case 0: - case 1: - case 10: - case 11: - var x,y; - for(var i=0;i < this.data.length;i++) - {x = this.data[i]; - y = b.data[i]; - if(x < y)return - 1; - if(x > y)return 1; - if(x != y) - {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}} - break; - case 7: - for(var i=0;i < this.data.length;i += 2) - {if(this.data[i + 1] < b.data[i + 1])return - 1; - if(this.data[i + 1] > b.data[i + 1])return 1; - if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1; - if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1} - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 8: - case 9: - case 12: - for(var i=0;i < this.data.length;i++) - {if(this.data[i] < b.data[i])return - 1; - if(this.data[i] > b.data[i])return 1} - break - } - return 0}; - function Ml_Bigarray_c_1_1(kind,layout,dims,buffer) - {this.kind = kind; - this.layout = layout; - this.dims = dims; - this.data = buffer} - Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray(); - Ml_Bigarray_c_1_1.prototype.offset - = - function(arg) - {if(typeof arg !== "number") - if(arg instanceof Array && arg.length == 1) - arg = arg[0]; - else - caml_invalid_argument("Ml_Bigarray_c_1_1.offset"); - if(arg < 0 || arg >= this.dims[0])caml_array_bound_error(); - return arg}; - Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]}; - Ml_Bigarray_c_1_1.prototype.set - = - function(ofs,v){this.data[ofs] = v;return 0}; - Ml_Bigarray_c_1_1.prototype.fill - = - function(v){this.data.fill(v);return 0}; - function caml_ba_create_unsafe(kind,layout,dims,data) - {var size_per_element=caml_ba_get_size_per_element(kind); - if(caml_ba_get_size(dims) * size_per_element != data.length) - caml_invalid_argument("length doesn't match dims"); - if(layout == 0 && dims.length == 1 && size_per_element == 1) - return new Ml_Bigarray_c_1_1(kind,layout,dims,data); - return new Ml_Bigarray(kind,layout,dims,data)} - function caml_ba_deserialize(reader,sz,name) - {var num_dims=reader.read32s(); - if(num_dims < 0 || num_dims > 16) - caml_failwith("input_value: wrong number of bigarray dimensions"); - var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[]; - if(name == "_bigarr02") - for(var i=0;i < num_dims;i++) - {var size_dim=reader.read16u(); - if(size_dim == 0xffff) - {var size_dim_hi=reader.read32u(),size_dim_lo=reader.read32u(); - if(size_dim_hi != 0) - caml_failwith("input_value: bigarray dimension overflow in 32bit"); - size_dim = size_dim_lo} - dims.push(size_dim)} - else - for(var i=0;i < num_dims;i++)dims.push(reader.read32u()); - var - size=caml_ba_get_size(dims), - data=caml_ba_create_buffer(kind,size), - ba=caml_ba_create_unsafe(kind,layout,dims,data); - switch(kind) - {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break; - case 3: - case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break; - case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break; - case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break; - case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break; - case 8: - case 9: - var sixty=reader.read8u(); - if(sixty) - caml_failwith - ("input_value: cannot read bigarray with 64-bit OCaml ints"); - for(var i=0;i < size;i++)data[i] = reader.read32s(); - break; - case 7: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var int64=caml_int64_of_bytes(t); - ba.set(i,int64)} - break; - case 1: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var f=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - ba.set(i,f)} - break; - case 0: - for(var i=0;i < size;i++) - {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)} - break; - case 10: - for(var i=0;i < size;i++) - {var - re=caml_int32_float_of_bits(reader.read32s()), - im=caml_int32_float_of_bits(reader.read32s()); - ba.set(i,[254,re,im])} - break; - case 11: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var re=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var im=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - ba.set(i,[254,re,im])} - break - } - sz[0] = (4 + num_dims) * 4; - return caml_ba_create_unsafe(kind,layout,dims,data)} - function caml_ba_compare(a,b,total){return a.compare(b,total)} - function caml_hash_mix_int64(h,v) - {h = caml_hash_mix_int(h,caml_int64_lo32(v)); - h = caml_hash_mix_int(h,caml_int64_hi32(v)); - return h} - function caml_hash_mix_float(h,v0) - {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))} - function caml_ba_hash(ba) - {var num_elts=caml_ba_get_size(ba.dims),h=0; - switch(ba.kind) - {case 2: - case 3: - case 12: - if(num_elts > 256)num_elts = 256; - var w=0,i=0; - for(i = 0;i + 4 <= ba.data.length;i += 4) - {w - = - ba.data[i + 0] - | - ba.data[i + 1] - << - 8 - | - ba.data[i + 2] - << - 16 - | - ba.data[i + 3] - << - 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(num_elts & 3) - {case 3:w = ba.data[i + 2] << 16; - case 2:w |= ba.data[i + 1] << 8; - case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w) - } - break; - case 4: - case 5: - if(num_elts > 128)num_elts = 128; - var w=0,i=0; - for(i = 0;i + 2 <= ba.data.length;i += 2) - {w = ba.data[i + 0] | ba.data[i + 1] << 16; - h = caml_hash_mix_int(h,w)} - if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 6: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 8: - case 9: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 7: - if(num_elts > 32)num_elts = 32; - num_elts *= 2; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 10:num_elts *= 2; - case 0: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); - break; - case 11:num_elts *= 2; - case 1: - if(num_elts > 32)num_elts = 32; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); - break - } - return h} - function caml_int32_unmarshal(reader,size) - {size[0] = 4;return reader.read32s()} - function caml_nativeint_unmarshal(reader,size) - {switch(reader.read8u()) - {case 1:size[0] = 4;return reader.read32s(); - case 2:caml_failwith("input_value: native integer value too large"); - default:caml_failwith("input_value: ill-formed native integer")}} - function caml_int64_unmarshal(reader,size) - {var t=new Array(8); - for(var j=0;j < 8;j++)t[j] = reader.read8u(); - size[0] = 8; - return caml_int64_of_bytes(t)} - function caml_int64_compare(x,y,total){return x.compare(y)} - function caml_int64_hash(v){return v.lo32() ^ v.hi32()} - var - caml_custom_ops= - {"_j": - {deserialize:caml_int64_unmarshal, - serialize:caml_int64_marshal, - fixed_length:8, - compare:caml_int64_compare, - hash:caml_int64_hash}, - "_i":{deserialize:caml_int32_unmarshal,fixed_length:4}, - "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4}, - "_bigarray": - {deserialize: - function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarray")}, - serialize:caml_ba_serialize, - compare:caml_ba_compare, - hash:caml_ba_hash}, - "_bigarr02": - {deserialize: - function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarr02")}, - serialize:caml_ba_serialize, - compare:caml_ba_compare, - hash:caml_ba_hash}}; - function caml_compare_val_get_custom(a) - {return caml_custom_ops[a.caml_custom] - && - caml_custom_ops[a.caml_custom].compare} - function caml_compare_val_number_custom(num,custom,swap,total) - {var comp=caml_compare_val_get_custom(custom); - if(comp) - {var x=swap > 0?comp(custom,num,total):comp(num,custom,total); - if(total && x != x)return swap; - if(+ x != + x)return + x; - if((x | 0) != 0)return x | 0} - return swap} - function caml_compare_val_tag(a) - {if(typeof a === "number") - return 1000; - else - if(caml_is_ml_bytes(a)) - return 252; - else - if(caml_is_ml_string(a)) - return 1252; - else - if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255) - {var tag=a[0] | 0;return tag == 254?0:tag} - else - if(a instanceof String) - return 12520; - else - if(typeof a == "string") - return 12520; - else - if(a instanceof Number) - return 1000; - else - if(a && a.caml_custom) - return 1255; - else - if(a && a.compare) - return 1256; - else - if(typeof a == "function") - return 1247; - else - if(typeof a == "symbol")return 1251; - return 1001} - function caml_int_compare(a,b) - {if(a < b)return - 1;if(a == b)return 0;return 1} - function caml_bytes_compare(s1,s2) - {s1.t & 6 && caml_convert_string_to_bytes(s1); - s2.t & 6 && caml_convert_string_to_bytes(s2); - return s1.c < s2.c?- 1:s1.c > s2.c?1:0} - function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)} - function caml_compare_val(a,b,total) - {var stack=[]; - for(;;) - {if(! (total && a === b)) - {var tag_a=caml_compare_val_tag(a); - if(tag_a == 250){a = a[1];continue} - var tag_b=caml_compare_val_tag(b); - if(tag_b == 250){b = b[1];continue} - if(tag_a !== tag_b) - {if(tag_a == 1000) - {if(tag_b == 1255) - return caml_compare_val_number_custom(a,b,- 1,total); - return - 1} - if(tag_b == 1000) - {if(tag_a == 1255) - return caml_compare_val_number_custom(b,a,1,total); - return 1} - return tag_a < tag_b?- 1:1} - switch(tag_a) - {case 247:caml_invalid_argument("compare: functional value");break; - case 248: - var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break; - case 249:caml_invalid_argument("compare: functional value");break; - case 250: - caml_invalid_argument - ("equal: got Forward_tag, should not happen"); - break; - case 251:caml_invalid_argument("equal: abstract value");break; - case 252: - if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0} - break; - case 253: - caml_invalid_argument("equal: got Double_tag, should not happen"); - break; - case 254: - caml_invalid_argument - ("equal: got Double_array_tag, should not happen"); - break; - case 255: - caml_invalid_argument("equal: got Custom_tag, should not happen"); - break; - case 1247: - caml_invalid_argument("compare: functional value");break; - case 1255: - var comp=caml_compare_val_get_custom(a); - if(comp != caml_compare_val_get_custom(b)) - return a.caml_custom < b.caml_custom?- 1:1; - if(! comp)caml_invalid_argument("compare: abstract value"); - var x=comp(a,b,total); - if(x != x)return total?- 1:x; - if(x !== (x | 0))return - 1; - if(x != 0)return x | 0; - break; - case 1256: - var x=a.compare(b,total); - if(x != x)return total?- 1:x; - if(x !== (x | 0))return - 1; - if(x != 0)return x | 0; - break; - case 1000: - a = + a; - b = + b; - if(a < b)return - 1; - if(a > b)return 1; - if(a != b) - {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} - break; - case 1001: - if(a < b)return - 1; - if(a > b)return 1; - if(a != b) - {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} - break; - case 1251:if(a !== b){if(! total)return NaN;return 1}break; - case 1252: - var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b); - if(a !== b){if(a < b)return - 1;if(a > b)return 1} - break; - case 12520: - var a=a.toString(),b=b.toString(); - if(a !== b){if(a < b)return - 1;if(a > b)return 1} - break; - case 246: - case 254: - default: - if(a.length != b.length)return a.length < b.length?- 1:1; - if(a.length > 1)stack.push(a,b,1); - break}} - if(stack.length == 0)return 0; - var i=stack.pop(); - b = stack.pop(); - a = stack.pop(); - if(i + 1 < a.length)stack.push(a,b,i + 1); - a = a[i]; - b = b[i]}} - function caml_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)} - function div_helper(a,b,c) - {var - x=a * 65536 + (b >>> 16), - y=Math.floor(x / c) * 65536, - z=x % c * 65536, - w=z + (b & 0x0000FFFF); - return [y + Math.floor(w / c),w % c]} - function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2) - {var rem=nat1.data[ofs1 + len - 1] >>> 0; - for(var i=len - 2;i >= 0;i--) - {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0); - natq.data[ofsq + i] = x[0]; - rem = x[1]} - natr.data[ofsr] = rem; - return 0} - function num_leading_zero_bits_in_digit(nat,ofs) - {var a=nat.data[ofs],b=0; - if(a & 0xFFFF0000){b += 16;a >>>= 16} - if(a & 0xFF00){b += 8;a >>>= 8} - if(a & 0xF0){b += 4;a >>>= 4} - if(a & 12){b += 2;a >>>= 2} - if(a & 2){b += 1;a >>>= 1} - if(a & 1)b += 1; - return 32 - b} - function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits) - {if(nbits == 0){nat2.data[ofs2] = 0;return 0} - var wrap=0; - for(var i=0;i < len1;i++) - {var a=nat1.data[ofs1 + i] >>> 0; - nat1.data[ofs1 + i] = a << nbits | wrap; - wrap = a >>> 32 - nbits} - nat2.data[ofs2] = wrap; - return 0} - function MlNat(x) - {this.data = new (globalThis.Int32Array)(x); - this.length = this.data.length + 2} - MlNat.prototype.caml_custom = "_nat"; - function create_nat(size) - {var arr=new MlNat(size); - for(var i=0;i < size;i++)arr.data[i] = - 1; - return arr} - function set_to_zero_nat(nat,ofs,len) - {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0} - function incr_nat(nat,ofs,len,carry_in) - {var carry=carry_in; - for(var i=0;i < len;i++) - {var x=(nat.data[ofs + i] >>> 0) + carry; - nat.data[ofs + i] = x | 0; - if(x == x >>> 0){carry = 0;break}else carry = 1} - return carry} - function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) - {var carry=carry_in; - for(var i=0;i < len2;i++) - {var - x= - (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry; - nat1.data[ofs1 + i] = x; - if(x == x >>> 0)carry = 0;else carry = 1} - return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)} - function nat_of_array(l){return new MlNat(l)} - function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3) - {var carry=0,a=nat3.data[ofs3] >>> 0; - for(var i=0;i < len2;i++) - {var - x1= - (nat1.data[ofs1 + i] >>> 0) - + - (nat2.data[ofs2 + i] >>> 0) - * - (a & 0x0000FFFF) - + - carry, - x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16); - carry = Math.floor(x2 / 65536); - var x3=x1 + x2 % 65536 * 65536; - nat1.data[ofs1 + i] = x3; - carry += Math.floor(x3 / 4294967296)} - return len2 < len1 && carry - ?add_nat - (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0) - :carry} - function decr_nat(nat,ofs,len,carry_in) - {var borrow=carry_in == 1?0:1; - for(var i=0;i < len;i++) - {var x=(nat.data[ofs + i] >>> 0) - borrow; - nat.data[ofs + i] = x; - if(x >= 0){borrow = 0;break}else borrow = 1} - return borrow == 1?0:1} - function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) - {var borrow=carry_in == 1?0:1; - for(var i=0;i < len2;i++) - {var - x= - (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow; - nat1.data[ofs1 + i] = x; - if(x >= 0)borrow = 0;else borrow = 1} - return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)} - function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2); - if(a > b)return 1; - if(a < b)return - 1; - for(var i=len1 - 1;i >= 0;i--) - {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1; - if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1} - return 0} - function div_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {if(len2 == 1) - {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2); - return 0} - var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1); - shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); - shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s); - var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1); - for(var i=len1 - 1;i >= len2;i--) - {var - quo= - d == 4294967296 - ?nat1.data[ofs1 + i] >>> 0 - :div_helper - (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d) - [0]; - set_to_zero_nat(a,0,len2 + 1); - mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0); - sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1); - while - (nat1.data[ofs1 + i] - != - 0 - || - compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2) - >= - 0) - {quo = quo + 1; - sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)} - nat1.data[ofs1 + i] = quo} - shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s); - shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); - return 0} - function caml_ba_blit(src,dst) - {if(dst.dims.length != src.dims.length) - caml_invalid_argument("Bigarray.blit: dimension mismatch"); - for(var i=0;i < dst.dims.length;i++) - if(dst.dims[i] != src.dims[i]) - caml_invalid_argument("Bigarray.blit: dimension mismatch"); - dst.data.set(src.data); - return 0} - function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0} - function caml_int64_div(x,y){return x.div(y)} - function caml_js_html_entities(s) - {var entity=/^&#?[0-9a-zA-Z]+;$/; - if(s.match(entity)) - {var str,temp=document.createElement("p"); - temp.innerHTML = s; - str = temp.textContent || temp.innerText; - temp = null; - return str} - else - caml_failwith("Invalid entity " + s)} - function caml_string_unsafe_set(s,i,c) - {return caml_bytes_unsafe_set(s,i,c)} - function caml_int64_of_float(x) - {if(x < 0)x = Math.ceil(x); - return new - MlInt64 - (x & 0xffffff, - Math.floor(x * caml_int64_offset) & 0xffffff, - Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)} - function caml_ml_channel_size_64(chanid) - {var chan=caml_ml_channels[chanid]; - return caml_int64_of_float(chan.file.length())} - function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0} - function ml_z_of_int64(i64) - {var neg=false; - if(caml_int64_compare(i64,caml_int64_create_lo_hi(0,0)) < 0) - {neg = true;i64 = caml_int64_neg(i64)} - var - lo=caml_int64_lo32(i64) >>> 0, - hi=caml_int64_hi32(i64) >>> 0, - x=bigInt(lo).add(bigInt(hi).shiftLeft(32)); - if(neg)x = x.negate(); - return ml_z_normalize(x)} - var - caml_argv= - function() - {var g=globalThis,main="a.out",args=[]; - if(g.process && g.process.argv && g.process.argv.length > 1) - {var argv=g.process.argv;main = argv[1];args = argv.slice(2)} - var p=caml_string_of_jsstring(main),args2=[0,p]; - for(var i=0;i < args.length;i++) - args2.push(caml_string_of_jsstring(args[i])); - return args2} - (), - caml_executable_name=caml_argv[1]; - function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))} - function serialize_nat(writer,nat,sz) - {var len=nat.data.length; - writer.write(32,len); - for(var i=0;i < len;i++)writer.write(32,nat.data[i]); - sz[0] = len * 4; - sz[1] = len * 8} - function caml_memprof_set(_control){return 0} - function ml_z_neg(z1){return ml_z_normalize(bigInt(z1).negate())} - function caml_sys_exit(code) - {var g=globalThis; - if(g.quit)g.quit(code); - if(g.process && g.process.exit)g.process.exit(code); - caml_invalid_argument("Function 'exit' not implemented")} - function caml_channel_descriptor(chanid) - {var chan=caml_ml_channels[chanid];return chan.fd} - function caml_js_from_array(a){return a.slice(1)} - function caml_ba_reshape(ba,vind) - {vind = caml_js_from_array(vind); - var new_dim=[],num_dims=vind.length; - if(num_dims < 0 || num_dims > 16) - caml_invalid_argument("Bigarray.reshape: bad number of dimensions"); - var num_elts=1; - for(var i=0;i < num_dims;i++) - {new_dim[i] = vind[i]; - if(new_dim[i] < 0) - caml_invalid_argument("Bigarray.reshape: negative dimension"); - num_elts = num_elts * new_dim[i]} - var size=caml_ba_get_size(ba.dims); - if(num_elts != size) - caml_invalid_argument("Bigarray.reshape: size mismatch"); - return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)} - var caml_oo_last_id=0; - function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b} - function caml_gr_fill_rect(x,y,w,h) - {var s=caml_gr_state_get(); - s.context.fillRect(x,s.height - y,w,- h); - return 0} - function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len) - {if(12 != ba2.kind) - caml_invalid_argument - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs2=ba2.offset(pos2); - if(pos1 + len > caml_ml_string_length(str1))caml_array_bound_error(); - if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=caml_array_of_string(str1).slice(pos1,pos1 + len); - ba2.data.set(slice,ofs2); - return 0} - function caml_gr_set_window_title(name) - {var s=caml_gr_state_get(); - s.title = name; - var jsname=caml_jsstring_of_string(name); - if(s.set_title)s.set_title(jsname); - return 0} - function caml_get_global_data(){return caml_global_data} - function caml_int64_shift_right_unsigned(x,s) - {return x.shift_right_unsigned(s)} - function caml_ba_uint8_get16(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 1 >= ba.data.length)caml_array_bound_error(); - var b1=ba.get(ofs),b2=ba.get(ofs + 1); - return b1 | b2 << 8} - function ml_z_of_int(i){return i | 0} - function ml_z_of_int32(i32){return ml_z_of_int(i32)} - function caml_compare(a,b){return caml_compare_val(a,b,true)} - function caml_fresh_oo_id(){return caml_oo_last_id++} - function caml_int64_to_float(x){return x.toFloat()} - function caml_ba_get_1(ba,i0){return ba.get(ba.offset(i0))} - function caml_bigstring_memcmp(s1,pos1,s2,pos2,len) - {for(var i=0;i < len;i++) - {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i); - if(a < b)return - 1; - if(a > b)return 1} - return 0} - function caml_new_string(s){return caml_string_of_jsbytes(s)} - function caml_erf_float(x) - {var - a1=0.254829592, - a2=- 0.284496736, - a3=1.421413741, - a4=- 1.453152027, - a5=1.061405429, - p=0.3275911, - sign=1; - if(x < 0)sign = - 1; - x = Math.abs(x); - var - t=1.0 / (1.0 + p * x), - y= - 1.0 - - - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) - * - t - * - Math.exp(- (x * x)); - return sign * y} - function caml_ba_uint8_get32(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 3 >= ba.data.length)caml_array_bound_error(); - var - b1=ba.get(ofs + 0), - b2=ba.get(ofs + 1), - b3=ba.get(ofs + 2), - b4=ba.get(ofs + 3); - return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24} - function caml_raw_backtrace_length(){return 0} - function ml_z_shift_right(z1,amt) - {return ml_z_normalize(bigInt(z1).shiftRight(amt))} - function caml_obj_block(tag,size) - {var o=new Array(size + 1); - o[0] = tag; - for(var i=1;i <= size;i++)o[i] = 0; - return o} - function caml_gr_clear_graph() - {var s=caml_gr_state_get(); - s.canvas.width = s.width; - s.canvas.height = s.height; - return 0} - function bigstring_to_array_buffer(bs){return bs.data.buffer} - function caml_sys_const_naked_pointers_checked(_unit){return 0} - function lxor_digit_nat(nat1,ofs1,nat2,ofs2) - {nat1.data[ofs1] ^= nat2.data[ofs2];return 0} - function caml_obj_add_offset(v,offset) - {caml_failwith("Obj.add_offset is not supported")} - function caml_final_release(){return 0} - function caml_js_to_array(a) - {var len=a.length,b=new Array(len + 1); - b[0] = 0; - for(var i=0;i < len;i++)b[i + 1] = a[i]; - return b} - function ml_z_logor(z1,z2) - {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))} - function caml_gr_plot(x,y) - {var - s=caml_gr_state_get(), - im=s.context.createImageData(1,1), - d=im.data, - color=s.color; - d[0] = color >> 16 & 0xff; - d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff; - d[3] = 0xFF; - s.x = x; - s.y = y; - s.context.putImageData(im,x,s.height - y); - return 0} - function caml_bytes_set16(s,i,i16) - {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); - var b2=0xFF & i16 >> 8,b1=0xFF & i16; - caml_bytes_unsafe_set(s,i + 0,b1); - caml_bytes_unsafe_set(s,i + 1,b2); - return 0} - function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)} - function caml_bytes_set64(s,i,i64) - {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); - var a=caml_int64_to_bytes(i64); - for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]); - return 0} - function caml_int64_bswap(x) - {var y=caml_int64_to_bytes(x); - return caml_int64_of_bytes([y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]])} - function ml_z_fits_int(z1){return z1 == (z1 | 0)?1:0} - function ml_z_fits_int32(z1){return ml_z_fits_int(z1)} - function caml_fill_bytes(s,i,l,c) - {if(l > 0) - if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length)) - if(c == 0) - {s.c = "";s.t = 2} - else - {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2} - else - {if(s.t != 4)caml_convert_bytes_to_array(s); - for(l += i;i < l;i++)s.c[i] = c} - return 0} - var caml_fill_string=caml_fill_bytes; - function caml_gc_major(){return 0} - function ml_z_shift_left(z1,amt) - {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} - function caml_lex_array(s) - {s = caml_jsbytes_of_string(s); - var l=s.length / 2,a=new Array(l); - for(var i=0;i < l;i++) - a[i] - = - (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8) - << - 16 - >> - 16; - return a} - function caml_lex_engine(tbl,start_state,lexbuf) - {var - lex_buffer=2, - lex_buffer_len=3, - lex_start_pos=5, - lex_curr_pos=6, - lex_last_pos=7, - lex_last_action=8, - lex_eof_reached=9, - lex_base=1, - lex_backtrk=2, - lex_default=3, - lex_trans=4, - lex_check=5; - if(! tbl.lex_default) - {tbl.lex_base = caml_lex_array(tbl[lex_base]); - tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); - tbl.lex_check = caml_lex_array(tbl[lex_check]); - tbl.lex_trans = caml_lex_array(tbl[lex_trans]); - tbl.lex_default = caml_lex_array(tbl[lex_default])} - var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); - if(state >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = - 1} - else - state = - state - 1; - for(;;) - {var base=tbl.lex_base[state]; - if(base < 0)return - base - 1; - var backtrk=tbl.lex_backtrk[state]; - if(backtrk >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = backtrk} - if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) - if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; - else - {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} - if(tbl.lex_check[base + c] == state) - state = tbl.lex_trans[base + c]; - else - state = tbl.lex_default[state]; - if(state < 0) - {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; - if(lexbuf[lex_last_action] == - 1) - caml_failwith("lexing: empty token"); - else - return lexbuf[lex_last_action]} - else - if(c == 256)lexbuf[lex_eof_reached] = 0}} - function unix_getuid(unit) - {if(globalThis.process && globalThis.process.getuid) - return globalThis.process.getuid(); - caml_raise_not_found()} - function caml_sys_file_exists(name) - {var root=resolve_fs_device(name);return root.device.exists(root.rest)} - function caml_convert_raw_backtrace_slot() - {caml_failwith("caml_convert_raw_backtrace_slot")} - function caml_array_sub(a,i,len) - {var a2=new Array(len + 1); - a2[0] = 0; - for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1]; - return a2} - function caml_bytes_equal(s1,s2) - {if(s1 === s2)return 1; - s1.t & 6 && caml_convert_string_to_bytes(s1); - s2.t & 6 && caml_convert_string_to_bytes(s2); - return s1.c == s2.c?1:0} - function caml_gr_size_x(){var s=caml_gr_state_get();return s.width} - function caml_ml_debug_info_status(){return 0} - var - os_type= - globalThis.process - && - globalThis.process.platform - && - globalThis.process.platform - == - "win32" - ?"Cygwin" - :"Unix"; - function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} - function caml_cosh_float(x){return Math.cosh(x)} - var caml_ephe_key_offset=3; - function caml_weak_check(x,i) - {return x[caml_ephe_key_offset + i] - !== - undefined - && - x[caml_ephe_key_offset + i] - !== - 0 - ?1 - :0} - var caml_ephe_check_key=caml_weak_check; - function caml_hash_mix_final(h) - {h ^= h >>> 16; - h = caml_mul(h,0x85ebca6b | 0); - h ^= h >>> 13; - h = caml_mul(h,0xc2b2ae35 | 0); - h ^= h >>> 16; - return h} - function caml_gr_text_size(txt) - {var - s=caml_gr_state_get(), - w=s.context.measureText(caml_jsstring_of_string(txt)).width; - return [0,w,s.text_size]} - function caml_lex_run_mem(s,i,mem,curr_pos) - {for(;;) - {var dst=s.charCodeAt(i); - i++; - if(dst == 0xff)return; - var src=s.charCodeAt(i); - i++; - if(src == 0xff) - mem[dst + 1] = curr_pos; - else - mem[dst + 1] = mem[src + 1]}} - function caml_lex_run_tag(s,i,mem) - {for(;;) - {var dst=s.charCodeAt(i); - i++; - if(dst == 0xff)return; - var src=s.charCodeAt(i); - i++; - if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}} - function caml_new_lex_engine(tbl,start_state,lexbuf) - {var - lex_buffer=2, - lex_buffer_len=3, - lex_start_pos=5, - lex_curr_pos=6, - lex_last_pos=7, - lex_last_action=8, - lex_eof_reached=9, - lex_mem=10, - lex_base=1, - lex_backtrk=2, - lex_default=3, - lex_trans=4, - lex_check=5, - lex_base_code=6, - lex_backtrk_code=7, - lex_default_code=8, - lex_trans_code=9, - lex_check_code=10, - lex_code=11; - if(! tbl.lex_default) - {tbl.lex_base = caml_lex_array(tbl[lex_base]); - tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); - tbl.lex_check = caml_lex_array(tbl[lex_check]); - tbl.lex_trans = caml_lex_array(tbl[lex_trans]); - tbl.lex_default = caml_lex_array(tbl[lex_default])} - if(! tbl.lex_default_code) - {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]); - tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]); - tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]); - tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]); - tbl.lex_default_code = caml_lex_array(tbl[lex_default_code])} - if(tbl.lex_code == null) - tbl.lex_code = caml_jsbytes_of_string(tbl[lex_code]); - var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); - if(state >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = - 1} - else - state = - state - 1; - for(;;) - {var base=tbl.lex_base[state]; - if(base < 0) - {var pc_off=tbl.lex_base_code[state]; - caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); - return - base - 1} - var backtrk=tbl.lex_backtrk[state]; - if(backtrk >= 0) - {var pc_off=tbl.lex_backtrk_code[state]; - caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); - lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = backtrk} - if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) - if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; - else - {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} - var pstate=state; - if(tbl.lex_check[base + c] == state) - state = tbl.lex_trans[base + c]; - else - state = tbl.lex_default[state]; - if(state < 0) - {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; - if(lexbuf[lex_last_action] == - 1) - caml_failwith("lexing: empty token"); - else - return lexbuf[lex_last_action]} - else - {var base_code=tbl.lex_base_code[pstate],pc_off; - if(tbl.lex_check_code[base_code + c] == pstate) - pc_off = tbl.lex_trans_code[base_code + c]; - else - pc_off = tbl.lex_default_code[pstate]; - if(pc_off > 0) - caml_lex_run_mem - (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]); - if(c == 256)lexbuf[lex_eof_reached] = 0}}} - function caml_ba_uint8_set64(ba,i0,v) - {var ofs=ba.offset(i0); - if(ofs + 7 >= ba.data.length)caml_array_bound_error(); - var v=caml_int64_to_bytes(v); - for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]); - return 0} - function ml_z_popcount(z) - {z = bigInt(z); - var zero=bigInt(0),one=bigInt(1); - if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow")); - var i; - for(i = 0;! z.equals(zero);i++)z = z.and(z.prev()); - if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow")); - return i | 0} - function caml_sys_executable_name(a){return caml_executable_name} - function caml_lessequal(x,y){return + (caml_compare_val(x,y,false) <= 0)} - function caml_acosh_float(x){return Math.acosh(x)} - function caml_ml_flush(chanid) - {var chan=caml_ml_channels[chanid]; - if(! chan.opened)caml_raise_sys_error("Cannot flush a closed channel"); - if(! chan.buffer || chan.buffer == "")return 0; - if - (chan.fd - && - caml_global_data.fds[chan.fd] - && - caml_global_data.fds[chan.fd].output) - {var output=caml_global_data.fds[chan.fd].output; - switch(output.length) - {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}} - chan.buffer = ""; - return 0} - function caml_ml_seek_out_64(chanid,pos) - {caml_ml_flush(chanid); - caml_ml_channels[chanid].offset = caml_int64_to_float(pos); - return 0} - function compare_nat_real(nat1,nat2) - {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)} - function caml_gc_set(_control){return 0} - function caml_js_get(o,f){return o[f]} - function caml_ml_set_buffered(c,v){return 0} - function caml_gc_compaction(){return 0} - function caml_weak_get(x,i) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.get_key"); - return x[caml_ephe_key_offset + i] === undefined - ?0 - :x[caml_ephe_key_offset + i]} - var caml_ephe_get_key=caml_weak_get; - function jsoo_z_of_js_string_base(base,s) - {if(base == 0) - {base = 10; - var p=0,sign=1; - if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++; - if(s[p] == "0") - {p++; - if(s.length == p) - return 0; - else - {var bc=s[p]; - if(bc == "o" || bc == "O") - base = 8; - else - if(bc == "x" || bc == "X") - base = 16; - else - if(bc == "b" || bc == "B")base = 2; - if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}} - if(s[0] == "+")s = s.substring(1); - s = s.replace(/^0+/,""); - if(s == "-" || s == "")s = "0"; - function digit(code) - {if(code >= 48 && code <= 57)return code - 48; - if(code >= 97 && code <= 102)return code - 97 + 10; - if(code >= 65 && code <= 70)return code - 65 + 10} - var i=0; - if(s[i] == "-")i++; - for(;i < s.length;i++) - {var c=digit(s.charCodeAt(i)); - if(c == undefined || c >= base) - caml_invalid_argument("Z.of_substring_base: invalid digit")} - return ml_z_normalize(bigInt(s,base))} - function ml_z_of_substring_base(base,s,pos,len) - {s = caml_jsbytes_of_string(s); - if(pos != 0 || len != s.length) - {if(s.length - pos < len) - caml_invalid_argument - ("Z.of_substring_base: invalid offset or length"); - s = s.slice(pos,pos + len)} - return jsoo_z_of_js_string_base(base,s)} - function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len) - {if(12 != ba2.kind) - caml_invalid_argument - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs2=ba2.offset(pos2); - if(pos1 + len > caml_ml_bytes_length(str1))caml_array_bound_error(); - if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len); - ba2.data.set(slice,ofs2); - return 0} - function win_cleanup(){} - function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0} - function caml_ml_close_channel(chanid) - {var chan=caml_ml_channels[chanid]; - caml_ml_flush(chanid); - chan.opened = false; - chan.file.close(); - caml_sys_close(chan.fd); - return 0} - function caml_exn_with_js_backtrace(exn,force) - {if(! exn.js_error || force || exn[0] == 248) - exn.js_error - = - new (globalThis.Error)("Js exception containing backtrace"); - return exn} - function caml_sys_isatty(_chan){return 0} - function is_digit_zero(nat,ofs){if(nat.data[ofs] == 0)return 1;return 0} - function unix_inet_addr_of_string(){return 0} - function caml_js_set(o,f,v){o[f] = v;return 0} - function ml_z_gcdext_intern(z1,z2) - {z1 = bigInt(z1); - z2 = bigInt(z2); - var - gcd=bigInt.gcd(z1,z2), - a=z1, - b=z2, - x=bigInt(0), - lastx=bigInt(1), - y=bigInt(1), - lasty=bigInt(1), - q, - t, - r; - if(z1.equals(bigInt(0)))caml_raise_zero_divide(); - while(! b.equals(bigInt(0))) - {q = a.divide(b); - r = a.subtract(q.multiply(b)); - t = x; - x = lastx.subtract(q.multiply(x)); - lastx = t; - t = y; - y = lasty.subtract(q.multiply(y)); - lasty = t; - a = b; - b = r} - return a.lt(bigInt(0)) - ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1] - :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]} - function ml_z_testbit(z,pos) - {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0} - function caml_array_get(array,index) - {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); - return array[index + 1]} - function caml_log2_float(x){return Math.log2(x)} - function caml_gc_huge_fallback_count(unit){return 0} - function caml_spacetime_only_works_for_native_code() - {caml_failwith("Spacetime profiling only works for native code")} - function caml_int64_sub(x,y){return x.sub(y)} - function caml_ml_seek_in_64(chanid,pos) - {var chan=caml_ml_channels[chanid]; - if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - chan.offset = caml_int64_to_float(pos); - return 0} - function caml_int64_shift_left(x,s){return x.shift_left(s)} - function caml_notequal(x,y){return + (caml_compare_val(x,y,false) != 0)} - function ml_z_abs(z1){return ml_z_normalize(bigInt(z1).abs())} - function caml_sys_const_int_size(){return 32} - function caml_js_wrap_meth_callback(f) - {return function() - {var len=arguments.length,args=new Array(len + 1); - args[0] = this; - for(var i=0;i < len;i++)args[i + 1] = arguments[i]; - return caml_call_gen(f,args)}} - function caml_is_js(){return 1} - function caml_ba_dim(ba,i) - {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); - return ba.dims[i]} - function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)} - function ml_z_sqrt(z1) - {var z=bigInt(z1),zero=bigInt(0); - if(z.lt(zero)) - caml_invalid_argument("Z.sqrt: square root of a negative number"); - return ml_z_root(z,2)} - function unix_localtime(t) - {var - d=new Date(t * 1000), - d_num=d.getTime(), - januaryfirst=new Date(d.getFullYear(),0,1).getTime(), - doy=Math.floor((d_num - januaryfirst) / 86400000), - jan=new Date(d.getFullYear(),0,1), - jul=new Date(d.getFullYear(),6,1), - stdTimezoneOffset= - Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset()); - return [0, - d.getSeconds(), - d.getMinutes(), - d.getHours(), - d.getDate(), - d.getMonth(), - d.getFullYear() - 1900, - d.getDay(), - doy, - d.getTimezoneOffset() < stdTimezoneOffset | 0]} - function caml_js_meth_call(o,f,args) - {return o[caml_jsstring_of_string(f)].apply(o,caml_js_from_array(args))} - function caml_weak_create(n) - {if(n < 0)caml_invalid_argument("Weak.create"); - var x=[251,"caml_ephe_list_head"]; - x.length = caml_ephe_key_offset + n; - return x} - var caml_ephe_create=caml_weak_create; - function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)} - function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0} - function unix_mktime(tm) - {var - d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(), - t=Math.floor(d / 1000), - tm2=unix_localtime(t); - return [0,t,tm2]} - function caml_trampoline(res) - {var c=1; - while(res && res.joo_tramp) - {res = res.joo_tramp.apply(null,res.joo_args);c++} - return res} - function caml_bytes_get64(s,i) - {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); - var a=new Array(8); - for(var j=0;j < 8;j++)a[7 - j] = caml_bytes_unsafe_get(s,i + j); - return caml_int64_of_bytes(a)} - function ml_z_rem(z1,z2) - {z2 = bigInt(z2); - if(z2.equals(bigInt(0)))caml_raise_zero_divide(); - return ml_z_normalize(bigInt(z1).mod(z2))} - function caml_weak_set(x,i,v) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.set"); - x[caml_ephe_key_offset + i] = v; - return 0} - function caml_sys_remove(name) - {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); - if(ok == 0)caml_raise_no_such_file(caml_jsbytes_of_string(name)); - return 0} - function caml_string_bound_error() - {caml_invalid_argument("index out of bounds")} - function caml_string_get32(s,i) - {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error(); - var - b1=caml_string_unsafe_get(s,i), - b2=caml_string_unsafe_get(s,i + 1), - b3=caml_string_unsafe_get(s,i + 2), - b4=caml_string_unsafe_get(s,i + 3); - return b4 << 24 | b3 << 16 | b2 << 8 | b1} - function caml_hypot_float(x,y){return Math.hypot(x,y)} - function caml_js_call(f,o,args) - {return f.apply(o,caml_js_from_array(args))} - function caml_sys_const_max_wosize(){return 0x7FFFFFFF / 4 | 0} - function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)} - function ml_z_mul_overflows(x,y){var z=x * y;return z != (z | 0)} - function ml_z_to_int(z1) - {if(z1 == (z1 | 0))return z1 | 0; - caml_raise_constant(caml_named_value("ml_z_overflow"))} - function caml_hash_mix_bytes_arr(h,s) - {var len=s.length,i,w; - for(i = 0;i + 4 <= len;i += 4) - {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(len & 3) - {case 3:w = s[i + 2] << 16; - case 2:w |= s[i + 1] << 8; - case 1:w |= s[i];h = caml_hash_mix_int(h,w) - } - h ^= len; - return h} - function caml_hash_mix_jsbytes(h,s) - {var len=s.length,i,w; - for(i = 0;i + 4 <= len;i += 4) - {w - = - s.charCodeAt(i) - | - s.charCodeAt(i + 1) - << - 8 - | - s.charCodeAt(i + 2) - << - 16 - | - s.charCodeAt(i + 3) - << - 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(len & 3) - {case 3:w = s.charCodeAt(i + 2) << 16; - case 2:w |= s.charCodeAt(i + 1) << 8; - case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w) - } - h ^= len; - return h} - function caml_ml_bytes_content(s) - {switch(s.t & 6) - {default:caml_convert_string_to_bytes(s);case 0:return s.c; - case 4:return s.c - }} - function caml_hash_mix_bytes(h,v) - {var content=caml_ml_bytes_content(v); - return typeof content === "string" - ?caml_hash_mix_jsbytes(h,content) - :caml_hash_mix_bytes_arr(h,content)} - function caml_bytes_lessthan(s1,s2) - {s1.t & 6 && caml_convert_string_to_bytes(s1); - s2.t & 6 && caml_convert_string_to_bytes(s2); - return s1.c < s2.c?1:0} - function caml_erfc_float(x){return 1 - caml_erf_float(x)} - function caml_gr_fill_poly(ar) - {var s=caml_gr_state_get(); - s.context.beginPath(); - s.context.moveTo(ar[1][1],s.height - ar[1][2]); - for(var i=2;i < ar.length;i++) - s.context.lineTo(ar[i][1],s.height - ar[i][2]); - s.context.lineTo(ar[1][1],s.height - ar[1][2]); - s.context.fill(); - return 0} - function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} - function caml_raise_end_of_file() - {caml_raise_constant(caml_global_data.End_of_file)} - function caml_ml_input_int(chanid) - {var chan=caml_ml_channels[chanid],file=chan.file; - while(chan.offset + 3 >= file.length()) - {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()} - var - o=chan.offset, - r= - file.read_one(o) - << - 24 - | - file.read_one(o + 1) - << - 16 - | - file.read_one(o + 2) - << - 8 - | - file.read_one(o + 3); - chan.offset += 4; - return r} - function caml_gr_display_mode() - {caml_failwith("caml_gr_display_mode not Implemented")} - function caml_obj_reachable_words(o){return 0} - function nth_digit_nat(nat,ofs){return nat.data[ofs]} - function caml_array_blit(a1,i1,a2,i2,len) - {if(i2 <= i1) - for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; - else - for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; - return 0} - function caml_float_of_string(s) - {var res; - s = caml_jsbytes_of_string(s); - res = + s; - if(s.length > 0 && res === res)return res; - s = s.replace(/_/g,""); - res = + s; - if(s.length > 0 && res === res || /^[+-]?nan$/i.test(s))return res; - var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(s); - if(m) - {var - m3=m[3].replace(/0+$/,""), - mantissa=parseInt(m[1] + m[2] + m3,16), - exponent=(m[5] | 0) - 4 * m3.length; - res = mantissa * Math.pow(2,exponent); - return res} - if(/^\+?inf(inity)?$/i.test(s))return Infinity; - if(/^-inf(inity)?$/i.test(s))return - Infinity; - caml_failwith("float_of_string")} - function caml_sys_getcwd() - {return caml_string_of_jsbytes(caml_current_dir)} - function caml_sys_const_big_endian(){return 0} - function caml_list_to_js_array(l) - {var a=[];for(;l !== 0;l = l[2])a.push(l[1]);return a} - var - caml_legacy_custom_code=false, - caml_output_val= - function() - {function Writer(){this.chunk = []} - Writer.prototype - = - {chunk_idx:20, - block_len:0, - obj_counter:0, - size_32:0, - size_64:0, - write: - function(size,value) - {for(var i=size - 8;i >= 0;i -= 8) - this.chunk[this.chunk_idx++] = value >> i & 0xFF}, - write_at: - function(pos,size,value) - {var pos=pos; - for(var i=size - 8;i >= 0;i -= 8) - this.chunk[pos++] = value >> i & 0xFF}, - write_code: - function(size,code,value) - {this.chunk[this.chunk_idx++] = code; - for(var i=size - 8;i >= 0;i -= 8) - this.chunk[this.chunk_idx++] = value >> i & 0xFF}, - write_shared: - function(offset) - {if(offset < 1 << 8) - this.write_code(8,0x04,offset); - else - if(offset < 1 << 16) - this.write_code(16,0x05,offset); - else - this.write_code(32,0x06,offset)}, - pos:function(){return this.chunk_idx}, - finalize: - function() - {this.block_len = this.chunk_idx - 20; - this.chunk_idx = 0; - this.write(32,0x8495A6BE); - this.write(32,this.block_len); - this.write(32,this.obj_counter); - this.write(32,this.size_32); - this.write(32,this.size_64); - return this.chunk}}; - return function(v,flags) - {flags = caml_list_to_js_array(flags); - var - no_sharing=flags.indexOf(0) !== - 1, - closures=flags.indexOf(1) !== - 1; - if(closures) - globalThis.console.warn - ("in caml_output_val: flag Marshal.Closures is not supported."); - var - writer=new Writer(), - stack=[], - intern_obj_table=no_sharing?null:new MlObjectTable(); - function memo(v) - {if(no_sharing)return false; - var existing_offset=intern_obj_table.recall(v); - if(existing_offset) - {writer.write_shared(existing_offset);return true} - else - {intern_obj_table.store(v);return false}} - function extern_rec(v) - {if(v.caml_custom) - {if(memo(v))return; - var - name=v.caml_custom, - ops=caml_custom_ops[name], - sz_32_64=[0,0]; - if(! ops.serialize) - caml_invalid_argument("output_value: abstract value (Custom)"); - if(caml_legacy_custom_code) - {writer.write(8,0x12); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - ops.serialize(writer,v,sz_32_64)} - else - if(ops.fixed_length == undefined) - {writer.write(8,0x18); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - var header_pos=writer.pos(); - for(var i=0;i < 12;i++)writer.write(8,0); - ops.serialize(writer,v,sz_32_64); - writer.write_at(header_pos,32,sz_32_64[0]); - writer.write_at(header_pos + 4,32,0); - writer.write_at(header_pos + 8,32,sz_32_64[1])} - else - {writer.write(8,0x19); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - var old_pos=writer.pos(); - ops.serialize(writer,v,sz_32_64); - if(ops.fixed_length != writer.pos() - old_pos) - caml_failwith - ("output_value: incorrect fixed sizes specified by " + name)} - writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2); - writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)} - else - if(v instanceof Array && v[0] === (v[0] | 0)) - {if(v[0] == 251) - caml_failwith("output_value: abstract value (Abstract)"); - if(v.length > 1 && memo(v))return; - if(v[0] < 16 && v.length - 1 < 8) - writer.write(8,0x80 + v[0] + (v.length - 1 << 4)); - else - writer.write_code(32,0x08,v.length - 1 << 10 | v[0]); - writer.size_32 += v.length; - writer.size_64 += v.length; - if(v.length > 1)stack.push(v,1)} - else - if(caml_is_ml_bytes(v)) - {if(! caml_is_ml_bytes(caml_string_of_jsbytes(""))) - caml_failwith - ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]"); - if(memo(v))return; - var len=caml_ml_bytes_length(v); - if(len < 0x20) - writer.write(8,0x20 + len); - else - if(len < 0x100) - writer.write_code(8,0x09,len); - else - writer.write_code(32,0x0A,len); - for(var i=0;i < len;i++) - writer.write(8,caml_bytes_unsafe_get(v,i)); - writer.size_32 += 1 + ((len + 4) / 4 | 0); - writer.size_64 += 1 + ((len + 8) / 8 | 0)} - else - if(caml_is_ml_string(v)) - {var len=caml_ml_string_length(v); - if(len < 0x20) - writer.write(8,0x20 + len); - else - if(len < 0x100) - writer.write_code(8,0x09,len); - else - writer.write_code(32,0x0A,len); - for(var i=0;i < len;i++) - writer.write(8,caml_string_unsafe_get(v,i)); - writer.size_32 += 1 + ((len + 4) / 4 | 0); - writer.size_64 += 1 + ((len + 8) / 8 | 0)} - else - if(v != (v | 0)) - {var type_of_v=typeof v; - caml_failwith - ("output_value: abstract value (" + type_of_v + ")")} - else - if(v >= 0 && v < 0x40) - writer.write(8,0X40 + v); - else - if(v >= - (1 << 7) && v < 1 << 7) - writer.write_code(8,0x00,v); - else - if(v >= - (1 << 15) && v < 1 << 15) - writer.write_code(16,0x01,v); - else - writer.write_code(32,0x02,v)} - extern_rec(v); - while(stack.length > 0) - {var i=stack.pop(),v=stack.pop(); - if(i + 1 < v.length)stack.push(v,i + 1); - extern_rec(v[i])} - if(intern_obj_table) - writer.obj_counter = intern_obj_table.objs.length; - writer.finalize(); - return writer.chunk}} - (); - function caml_string_of_array(a) - {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))} - function caml_output_value_to_string(v,flags) - {return caml_string_of_array(caml_output_val(v,flags))} - function caml_raise_not_a_dir(name) - {caml_raise_sys_error(name + ": Not a directory")} - function caml_sys_system_command(cmd) - {var cmd=caml_jsstring_of_string(cmd); - if - (typeof require - != - "undefined" - && - require("child_process") - && - require("child_process").execSync) - try - {require("child_process").execSync(cmd,{stdio:"inherit"});return 0} - catch(e){return 1} - else - return 127} - function unix_isatty(fileDescriptor) - {if(fs_node_supported()) - {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} - else - return 0} - function caml_js_error_of_exception(exn) - {if(exn.js_error)return exn.js_error;return null} - function deserialize_nat(reader,sz) - {var len=reader.read32s(),nat=new MlNat(len); - for(var i=0;i < len;i++)nat.data[i] = reader.read32s(); - sz[0] = len * 4; - return nat} - function initialize_nat() - {caml_custom_ops["_nat"] - = - {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}} - function ml_z_succ(z1){return ml_z_normalize(bigInt(z1).next())} - function caml_gr_open_subwindow(a,b,c,d) - {caml_failwith("caml_gr_open_subwindow not Implemented")} - function unix_lstat(name) - {var root=resolve_fs_device(name); - if(! root.device.lstat)caml_failwith("unix_lstat: not implemented"); - return root.device.lstat(root.rest,true)} - var unix_lstat_64=unix_lstat; - function js_print_stdout(s) - {var s=caml_utf16_of_utf8(s),g=globalThis; - if(g.process && g.process.stdout && g.process.stdout.write) - g.process.stdout.write(s); - else - {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); - var v=g.console; - v && v.log && v.log(s)}} - function caml_copysign_float(x,y) - {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x} - function caml_gr_set_text_size(size) - {var s=caml_gr_state_get(); - s.text_size = size; - s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); - return 0} - var - caml_md5_bytes= - function() - {function add(x,y){return x + y | 0} - function xx(q,a,b,x,s,t) - {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)} - function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)} - function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)} - function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)} - function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)} - function md5(buffer,length) - {var i=length; - buffer[i >> 2] |= 0x80 << 8 * (i & 3); - for(i = (i & ~ 0x3) + 8;(i & 0x3F) < 60;i += 4) - buffer[(i >> 2) - 1] = 0; - buffer[(i >> 2) - 1] = length << 3; - buffer[i >> 2] = length >> 29 & 0x1FFFFFFF; - var w=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]; - for(i = 0;i < buffer.length;i += 16) - {var a=w[0],b=w[1],c=w[2],d=w[3]; - a = ff(a,b,c,d,buffer[i + 0],7,0xD76AA478); - d = ff(d,a,b,c,buffer[i + 1],12,0xE8C7B756); - c = ff(c,d,a,b,buffer[i + 2],17,0x242070DB); - b = ff(b,c,d,a,buffer[i + 3],22,0xC1BDCEEE); - a = ff(a,b,c,d,buffer[i + 4],7,0xF57C0FAF); - d = ff(d,a,b,c,buffer[i + 5],12,0x4787C62A); - c = ff(c,d,a,b,buffer[i + 6],17,0xA8304613); - b = ff(b,c,d,a,buffer[i + 7],22,0xFD469501); - a = ff(a,b,c,d,buffer[i + 8],7,0x698098D8); - d = ff(d,a,b,c,buffer[i + 9],12,0x8B44F7AF); - c = ff(c,d,a,b,buffer[i + 10],17,0xFFFF5BB1); - b = ff(b,c,d,a,buffer[i + 11],22,0x895CD7BE); - a = ff(a,b,c,d,buffer[i + 12],7,0x6B901122); - d = ff(d,a,b,c,buffer[i + 13],12,0xFD987193); - c = ff(c,d,a,b,buffer[i + 14],17,0xA679438E); - b = ff(b,c,d,a,buffer[i + 15],22,0x49B40821); - a = gg(a,b,c,d,buffer[i + 1],5,0xF61E2562); - d = gg(d,a,b,c,buffer[i + 6],9,0xC040B340); - c = gg(c,d,a,b,buffer[i + 11],14,0x265E5A51); - b = gg(b,c,d,a,buffer[i + 0],20,0xE9B6C7AA); - a = gg(a,b,c,d,buffer[i + 5],5,0xD62F105D); - d = gg(d,a,b,c,buffer[i + 10],9,0x02441453); - c = gg(c,d,a,b,buffer[i + 15],14,0xD8A1E681); - b = gg(b,c,d,a,buffer[i + 4],20,0xE7D3FBC8); - a = gg(a,b,c,d,buffer[i + 9],5,0x21E1CDE6); - d = gg(d,a,b,c,buffer[i + 14],9,0xC33707D6); - c = gg(c,d,a,b,buffer[i + 3],14,0xF4D50D87); - b = gg(b,c,d,a,buffer[i + 8],20,0x455A14ED); - a = gg(a,b,c,d,buffer[i + 13],5,0xA9E3E905); - d = gg(d,a,b,c,buffer[i + 2],9,0xFCEFA3F8); - c = gg(c,d,a,b,buffer[i + 7],14,0x676F02D9); - b = gg(b,c,d,a,buffer[i + 12],20,0x8D2A4C8A); - a = hh(a,b,c,d,buffer[i + 5],4,0xFFFA3942); - d = hh(d,a,b,c,buffer[i + 8],11,0x8771F681); - c = hh(c,d,a,b,buffer[i + 11],16,0x6D9D6122); - b = hh(b,c,d,a,buffer[i + 14],23,0xFDE5380C); - a = hh(a,b,c,d,buffer[i + 1],4,0xA4BEEA44); - d = hh(d,a,b,c,buffer[i + 4],11,0x4BDECFA9); - c = hh(c,d,a,b,buffer[i + 7],16,0xF6BB4B60); - b = hh(b,c,d,a,buffer[i + 10],23,0xBEBFBC70); - a = hh(a,b,c,d,buffer[i + 13],4,0x289B7EC6); - d = hh(d,a,b,c,buffer[i + 0],11,0xEAA127FA); - c = hh(c,d,a,b,buffer[i + 3],16,0xD4EF3085); - b = hh(b,c,d,a,buffer[i + 6],23,0x04881D05); - a = hh(a,b,c,d,buffer[i + 9],4,0xD9D4D039); - d = hh(d,a,b,c,buffer[i + 12],11,0xE6DB99E5); - c = hh(c,d,a,b,buffer[i + 15],16,0x1FA27CF8); - b = hh(b,c,d,a,buffer[i + 2],23,0xC4AC5665); - a = ii(a,b,c,d,buffer[i + 0],6,0xF4292244); - d = ii(d,a,b,c,buffer[i + 7],10,0x432AFF97); - c = ii(c,d,a,b,buffer[i + 14],15,0xAB9423A7); - b = ii(b,c,d,a,buffer[i + 5],21,0xFC93A039); - a = ii(a,b,c,d,buffer[i + 12],6,0x655B59C3); - d = ii(d,a,b,c,buffer[i + 3],10,0x8F0CCC92); - c = ii(c,d,a,b,buffer[i + 10],15,0xFFEFF47D); - b = ii(b,c,d,a,buffer[i + 1],21,0x85845DD1); - a = ii(a,b,c,d,buffer[i + 8],6,0x6FA87E4F); - d = ii(d,a,b,c,buffer[i + 15],10,0xFE2CE6E0); - c = ii(c,d,a,b,buffer[i + 6],15,0xA3014314); - b = ii(b,c,d,a,buffer[i + 13],21,0x4E0811A1); - a = ii(a,b,c,d,buffer[i + 4],6,0xF7537E82); - d = ii(d,a,b,c,buffer[i + 11],10,0xBD3AF235); - c = ii(c,d,a,b,buffer[i + 2],15,0x2AD7D2BB); - b = ii(b,c,d,a,buffer[i + 9],21,0xEB86D391); - w[0] = add(a,w[0]); - w[1] = add(b,w[1]); - w[2] = add(c,w[2]); - w[3] = add(d,w[3])} - var t=new Array(16); - for(var i=0;i < 4;i++) - for(var j=0;j < 4;j++)t[i * 4 + j] = w[i] >> 8 * j & 0xFF; - return t} - return function(s,ofs,len) - {var buf=[],content=caml_ml_bytes_content(s); - if(typeof content === "string") - {var b=content; - for(var i=0;i < len;i += 4) - {var j=i + ofs; - buf[i >> 2] - = - b.charCodeAt(j) - | - b.charCodeAt(j + 1) - << - 8 - | - b.charCodeAt(j + 2) - << - 16 - | - b.charCodeAt(j + 3) - << - 24} - for(;i < len;i++) - buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3)} - else - {var a=content; - for(var i=0;i < len;i += 4) - {var j=i + ofs; - buf[i >> 2] - = - a[j] - | - a[j + 1] - << - 8 - | - a[j + 2] - << - 16 - | - a[j + 3] - << - 24} - for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)} - return caml_string_of_array(md5(buf,len))}} - (); - function caml_ba_set_generic(ba,i,v) - {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} - function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])} - function caml_bytes_lessequal(s1,s2) - {s1.t & 6 && caml_convert_string_to_bytes(s1); - s2.t & 6 && caml_convert_string_to_bytes(s2); - return s1.c <= s2.c?1:0} - function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)} - function caml_string_greaterequal(s1,s2) - {return caml_string_lessequal(s2,s1)} - function caml_int64_add(x,y){return x.add(y)} - function caml_nextafter_float(x,y) - {if(isNaN(x) || isNaN(y))return NaN; - if(x == y)return y; - if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074); - var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1); - if(x < y == x > 0) - bits = caml_int64_add(bits,one); - else - bits = caml_int64_sub(bits,one); - return caml_int64_float_of_bits(bits)} - function caml_gr_size_y(){var s=caml_gr_state_get();return s.height} - function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset} - function caml_int64_and(x,y){return x.and(y)} - function caml_sys_const_word_size(){return 32} - function caml_std_output(chanid,s) - {var - chan=caml_ml_channels[chanid], - str=caml_string_of_jsbytes(s), - slen=caml_ml_string_length(str); - chan.file.write(chan.offset,str,0,slen); - chan.offset += slen; - return 0} - function js_print_stderr(s) - {var s=caml_utf16_of_utf8(s),g=globalThis; - if(g.process && g.process.stdout && g.process.stdout.write) - g.process.stderr.write(s); - else - {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); - var v=g.console; - v && v.error && v.error(s)}} - function caml_sys_open_internal(idx,output,file,flags) - {if(caml_global_data.fds === undefined) - caml_global_data.fds = new Array(); - flags = flags?flags:{}; - var info={}; - info.file = file; - info.offset = flags.append?file.length():0; - info.flags = flags; - info.output = output; - caml_global_data.fds[idx] = info; - if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx) - caml_global_data.fd_last_idx = idx; - return idx} - function caml_sys_open(name,flags,_perms) - {var f={}; - while(flags) - {switch(flags[1]) - {case 0:f.rdonly = 1;break; - case 1:f.wronly = 1;break; - case 2:f.append = 1;break; - case 3:f.create = 1;break; - case 4:f.truncate = 1;break; - case 5:f.excl = 1;break; - case 6:f.binary = 1;break; - case 7:f.text = 1;break; - case 8:f.nonblock = 1;break - } - flags = flags[2]} - if(f.rdonly && f.wronly) - caml_raise_sys_error - (caml_jsbytes_of_string(name) - + - " : flags Open_rdonly and Open_wronly are not compatible"); - if(f.text && f.binary) - caml_raise_sys_error - (caml_jsbytes_of_string(name) - + - " : flags Open_text and Open_binary are not compatible"); - var - root=resolve_fs_device(name), - file=root.device.open(root.rest,f), - idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0; - return caml_sys_open_internal(idx + 1,caml_std_output,file,f)} - caml_sys_open_internal - (0,caml_std_output,new MlFakeFile(caml_create_bytes(0))); - caml_sys_open_internal - (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0))); - caml_sys_open_internal - (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0))); - function ml_z_gcd(z1,z2) - {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} - function MlStringReader(s,i) - {this.s = caml_jsbytes_of_string(s);this.i = i} - MlStringReader.prototype - = - {read8u:function(){return this.s.charCodeAt(this.i++)}, - read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24}, - read16u: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)}, - read16s: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)}, - read32u: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return (s.charCodeAt(i) - << - 24 - | - s.charCodeAt(i + 1) - << - 16 - | - s.charCodeAt(i + 2) - << - 8 - | - s.charCodeAt(i + 3)) - >>> - 0}, - read32s: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return s.charCodeAt(i) - << - 24 - | - s.charCodeAt(i + 1) - << - 16 - | - s.charCodeAt(i + 2) - << - 8 - | - s.charCodeAt(i + 3)}, - readstr: - function(len) - {var i=this.i; - this.i = i + len; - return caml_string_of_jsbytes(this.s.substring(i,i + len))}}; - function caml_float_of_bytes(a) - {return caml_int64_float_of_bits(caml_int64_of_bytes(a))} - function caml_input_value_from_reader(reader,ofs) - {var - _magic=reader.read32u(), - _block_len=reader.read32u(), - num_objects=reader.read32u(), - _size_32=reader.read32u(), - _size_64=reader.read32u(), - stack=[], - intern_obj_table=num_objects > 0?[]:null, - obj_counter=0; - function intern_rec() - {var code=reader.read8u(); - if(code >= 0x40) - if(code >= 0x80) - {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag]; - if(size == 0)return v; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - stack.push(v,size); - return v} - else - return code & 0x3F; - else - if(code >= 0x20) - {var len=code & 0x1F,v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v} - else - switch(code) - {case 0x00:return reader.read8s(); - case 0x01:return reader.read16s(); - case 0x02:return reader.read32s(); - case 0x03:caml_failwith("input_value: integer too large");break; - case 0x04: - var offset=reader.read8u(); - return intern_obj_table[obj_counter - offset]; - case 0x05: - var offset=reader.read16u(); - return intern_obj_table[obj_counter - offset]; - case 0x06: - var offset=reader.read32u(); - return intern_obj_table[obj_counter - offset]; - case 0x08: - var - header=reader.read32u(), - tag=header & 0xFF, - size=header >> 10, - v=[tag]; - if(size == 0)return v; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - stack.push(v,size); - return v; - case 0x13: - caml_failwith("input_value: data block too large");break; - case 0x09: - var len=reader.read8u(),v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0A: - var len=reader.read32u(),v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0C: - var t=new Array(8); - for(var i=0;i < 8;i++)t[7 - i] = reader.read8u(); - var v=caml_float_of_bytes(t); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0B: - var t=new Array(8); - for(var i=0;i < 8;i++)t[i] = reader.read8u(); - var v=caml_float_of_bytes(t); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0E: - var len=reader.read8u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x0D: - var len=reader.read8u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x07: - var len=reader.read32u(),v=new Array(len + 1); - v[0] = 254; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - var t=new Array(8); - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x0F: - var len=reader.read32u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x10: - case 0x11:caml_failwith("input_value: code pointer");break; - case 0x12: - case 0x18: - case 0x19: - var c,s=""; - while((c = reader.read8u()) != 0)s += String.fromCharCode(c); - var ops=caml_custom_ops[s],expected_size; - if(! ops) - caml_failwith("input_value: unknown custom block identifier"); - switch(code) - {case 0x12:break; - case 0x19: - if(! ops.fixed_length) - caml_failwith - ("input_value: expected a fixed-size custom block"); - expected_size = ops.fixed_length; - break; - case 0x18: - expected_size = reader.read32u(); - reader.read32s(); - reader.read32s(); - break - } - var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size); - if(expected_size != undefined) - if(expected_size != size[0]) - caml_failwith - ("input_value: incorrect length of serialized custom block"); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - default:caml_failwith("input_value: ill-formed message")}} - var res=intern_rec(); - while(stack.length > 0) - {var size=stack.pop(),v=stack.pop(),d=v.length; - if(d < size)stack.push(v,size); - v[d] = intern_rec()} - if(typeof ofs != "number")ofs[0] = reader.i; - return res} - function caml_string_of_bytes(s){return s} - function caml_input_value_from_bytes(s,ofs) - {var - reader= - new - MlStringReader - (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); - return caml_input_value_from_reader(reader,ofs)} - function ml_z_mul(z1,z2) - {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} - function ml_z_hamdist(z1,z2) - {if(bigInt(z1).isNegative() != bigInt(z2).isNegative()) - caml_raise_constant(caml_named_value("ml_z_overflow")); - if - ((z1 != (z1 | 0) || z2 != (z2 | 0)) - && - (bigInt(z1).isNegative() || bigInt(z2).isNegative())) - caml_invalid_argument("Z.hamdist: negative arguments"); - return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))} - function caml_string_get(s,i) - {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error(); - return caml_string_unsafe_get(s,i)} - var - re_match= - function() - {var - re_word_letters= - [0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, - 0x03, - 0xFE, - 0xFF, - 0xFF, - 0x87, - 0xFE, - 0xFF, - 0xFF, - 0x07, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, - 0xFF, - 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0x7F, - 0xFF], - opcodes= - {CHAR:0, - CHARNORM:1, - STRING:2, - STRINGNORM:3, - CHARCLASS:4, - BOL:5, - EOL:6, - WORDBOUNDARY:7, - BEGGROUP:8, - ENDGROUP:9, - REFGROUP:10, - ACCEPT:11, - SIMPLEOPT:12, - SIMPLESTAR:13, - SIMPLEPLUS:14, - GOTO:15, - PUSHBACK:16, - SETMARK:17, - CHECKPROGRESS:18}; - function is_word_letter(c) - {return re_word_letters[c >> 3] >> (c & 7) & 1} - function in_bitset(s,i) - {return caml_string_get(s,i >> 3) >> (i & 7) & 1} - function re_match_impl(re,s,pos,partial) - {var - prog=caml_js_from_array(re[1]), - cpool=caml_js_from_array(re[2]), - normtable=caml_jsbytes_of_string(re[3]), - numgroups=re[4] | 0, - numregisters=re[5] | 0, - startchars=re[6] | 0, - s=caml_array_of_string(s), - pc=0, - quit=false, - stack=[], - groups=new Array(numgroups), - re_register=new Array(numregisters); - for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1}; - groups[0].start = pos; - function backtrack() - {while(stack.length) - {var item=stack.pop(); - if(item.undo) - item.undo.obj[item.undo.prop] = item.undo.value; - else - if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}} - quit = true} - function push(item){stack.push(item)} - function accept() - {groups[0].end = pos; - var result=new Array(1 + groups.length * 2); - result[0] = 0; - for(var i=0;i < groups.length;i++) - {var g=groups[i]; - if(g.start < 0 || g.end < 0)g.start = g.end = - 1; - result[2 * i + 1] = g.start; - result[2 * i + 1 + 1] = g.end} - return result} - function prefix_match() - {if(partial)return accept();else backtrack()} - while(! quit) - {var - op=prog[pc] & 0xff, - sarg=prog[pc] >> 8, - uarg=sarg & 0xff, - c=s[pos], - group; - pc++; - switch(op) - {case opcodes.CHAR: - if(pos === s.length){prefix_match();break} - if(c === uarg)pos++;else backtrack(); - break; - case opcodes.CHARNORM: - if(pos === s.length){prefix_match();break} - if(normtable.charCodeAt(c) === uarg)pos++;else backtrack(); - break; - case opcodes.STRING: - for - (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; - i - < - arg.length; - i++) - {if(pos === s.length){prefix_match();break} - if(c === arg.charCodeAt(i)) - c = s[++pos]; - else - {backtrack();break}} - break; - case opcodes.STRINGNORM: - for - (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; - i - < - arg.length; - i++) - {if(pos === s.length){prefix_match();break} - if(normtable.charCodeAt(c) === arg.charCodeAt(i)) - c = s[++pos]; - else - {backtrack();break}} - break; - case opcodes.CHARCLASS: - if(pos === s.length){prefix_match();break} - if(in_bitset(cpool[uarg],c))pos++;else backtrack(); - break; - case opcodes.BOL: - if(pos > 0 && s[pos - 1] != 10)backtrack();break; - case opcodes.EOL: - if(pos < s.length && s[pos] != 10)backtrack();break; - case opcodes.WORDBOUNDARY: - if(pos == 0) - {if(pos === s.length){prefix_match();break} - if(is_word_letter(s[0]))break; - backtrack()} - else - if(pos === s.length) - {if(is_word_letter(s[pos - 1]))break;backtrack()} - else - {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos])) - break; - backtrack()} - break; - case opcodes.BEGGROUP: - group = groups[uarg]; - push({undo:{obj:group,prop:"start",value:group.start}}); - group.start = pos; - break; - case opcodes.ENDGROUP: - group = groups[uarg]; - push({undo:{obj:group,prop:"end",value:group.end}}); - group.end = pos; - break; - case opcodes.REFGROUP: - group = groups[uarg]; - if(group.start < 0 || group.end < 0){backtrack();break} - for(var i=group.start;i < group.end;i++) - {if(pos === s.length){prefix_match();break} - if(s[i] != s[pos]){backtrack();break} - pos++} - break; - case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break; - case opcodes.SIMPLESTAR: - while(in_bitset(cpool[uarg],c))c = s[++pos];break; - case opcodes.SIMPLEPLUS: - if(pos === s.length){prefix_match();break} - if(in_bitset(cpool[uarg],c)) - do c = s[++pos];while(in_bitset(cpool[uarg],c)); - else - backtrack(); - break; - case opcodes.ACCEPT:return accept(); - case opcodes.GOTO:pc = pc + sarg;break; - case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break; - case opcodes.SETMARK: - push - ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}}); - re_register[uarg] = pos; - break; - case opcodes.CHECKPROGRESS: - if(re_register[uarg] === pos)backtrack();break; - default:throw new Error("Invalid bytecode")}} - return 0} - return re_match_impl} - (); - function re_search_backward(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.search_backward"); - while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--} - return [0]} - function ml_z_logand(z1,z2) - {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))} - function caml_js_from_string(s){return caml_jsstring_of_string(s)} - function caml_ba_sub(ba,ofs,len) - {var changed_dim,mul=1; - if(ba.layout == 0) - {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i]; - changed_dim = 0} - else - {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i]; - changed_dim = ba.dims.length - 1; - ofs = ofs - 1} - if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim]) - caml_invalid_argument("Bigarray.sub: bad sub-array"); - var new_dims=[]; - for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i]; - new_dims[changed_dim] = len; - mul *= caml_ba_get_size_per_element(ba.kind); - var new_data=ba.data.subarray(ofs * mul,(ofs + len) * mul); - return caml_ba_create_unsafe(ba.kind,ba.layout,new_dims,new_data)} - function caml_gc_full_major(){return 0} - function caml_bytes_set32(s,i,i32) - {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); - var - b4=0xFF & i32 >> 24, - b3=0xFF & i32 >> 16, - b2=0xFF & i32 >> 8, - b1=0xFF & i32; - caml_bytes_unsafe_set(s,i + 0,b1); - caml_bytes_unsafe_set(s,i + 1,b2); - caml_bytes_unsafe_set(s,i + 2,b3); - caml_bytes_unsafe_set(s,i + 3,b4); - return 0} - function caml_gr_sigio_signal(){return 0} - function caml_ba_uint8_set32(ba,i0,v) - {var ofs=ba.offset(i0); - if(ofs + 3 >= ba.data.length)caml_array_bound_error(); - ba.set(ofs + 0,v & 0xff); - ba.set(ofs + 1,v >>> 8 & 0xff); - ba.set(ofs + 2,v >>> 16 & 0xff); - ba.set(ofs + 3,v >>> 24 & 0xff); - return 0} - function ml_z_div_rem(z1,z2){return [0,ml_z_div(z1,z2),ml_z_rem(z1,z2)]} - function caml_sys_const_ostype_unix(){return os_type == "Unix"?1:0} - function caml_signbit_float(x){if(x == 0)x = 1 / x;return x < 0?1:0} - function caml_gr_set_line_width(w) - {var s=caml_gr_state_get(); - s.line_width = w; - s.context.lineWidth = w; - return 0} - function caml_gr_set_font(f) - {var s=caml_gr_state_get(); - s.font = f; - s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); - return 0} - function caml_gr_set_color(color) - {var s=caml_gr_state_get(); - function convert(number) - {var str="" + number.toString(16); - while(str.length < 2)str = "0" + str; - return str} - var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff; - s.color = color; - var c_str="#" + convert(r) + convert(g) + convert(b); - s.context.fillStyle = c_str; - s.context.strokeStyle = c_str; - return 0} - function caml_gr_moveto(x,y) - {var s=caml_gr_state_get();s.x = x;s.y = y;return 0} - function caml_gr_resize_window(w,h) - {var s=caml_gr_state_get(); - s.width = w; - s.height = h; - s.canvas.width = w; - s.canvas.height = h; - return 0} - function caml_gr_state_init() - {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y); - caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height); - caml_gr_set_line_width(caml_gr_state.line_width); - caml_gr_set_text_size(caml_gr_state.text_size); - caml_gr_set_font(caml_gr_state.font); - caml_gr_set_color(caml_gr_state.color); - caml_gr_set_window_title(caml_gr_state.title); - caml_gr_state.context.textBaseline = "bottom"} - function caml_gr_current_x(){var s=caml_gr_state_get();return s.x} - function caml_ba_kind_of_typed_array(ta) - {var g=globalThis,kind; - if(ta instanceof g.Float32Array) - kind = 0; - else - if(ta instanceof g.Float64Array) - kind = 1; - else - if(ta instanceof g.Int8Array) - kind = 2; - else - if(ta instanceof g.Uint8Array) - kind = 3; - else - if(ta instanceof g.Int16Array) - kind = 4; - else - if(ta instanceof g.Uint16Array) - kind = 5; - else - if(ta instanceof g.Int32Array) - kind = 6; - else - if(ta instanceof g.Uint32Array) - kind = 6; - else - caml_invalid_argument - ("caml_ba_kind_of_typed_array: unsupported kind"); - return kind} - function caml_ba_from_typed_array(ta) - {var kind=caml_ba_kind_of_typed_array(ta); - return caml_ba_create_unsafe(kind,0,[ta.length],ta)} - function caml_ml_seek_out(chanid,pos) - {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0} - function caml_js_typeof(o){return typeof o} - function caml_restore_raw_backtrace(exn,bt){return 0} - function caml_gr_lineto(x,y) - {var s=caml_gr_state_get(); - s.context.beginPath(); - s.context.moveTo(s.x,s.height - s.y); - s.context.lineTo(x,s.height - y); - s.context.stroke(); - s.x = x; - s.y = y; - return 0} - function caml_js_wrap_meth_callback_unsafe(f) - {return function() - {var len=arguments.length,args=new Array(len + 1); - args[0] = this; - for(var i=0;i < len;i++)args[i + 1] = arguments[i]; - return f.apply(null,args)}} - function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)} - function caml_is_special_exception(exn) - {switch(exn[2]){case - 8:case - 11:case - 12:return 1;default:return 0}} - function caml_format_exception(exn) - {var r=""; - if(exn[0] == 0) - {r += exn[1][1]; - if - (exn.length - == - 3 - && - exn[2][0] - == - 0 - && - caml_is_special_exception(exn[1])) - var bucket=exn[2],start=1; - else - var start=2,bucket=exn; - r += "("; - for(var i=start;i < bucket.length;i++) - {if(i > start)r += ", "; - var v=bucket[i]; - if(typeof v == "number") - r += v.toString(); - else - if(v instanceof MlBytes) - r += '"' + v.toString() + '"'; - else - if(typeof v == "string") - r += '"' + v.toString() + '"'; - else - r += "_"} - r += ")"} - else - if(exn[0] == 248)r += exn[1]; - return r} - function caml_fatal_uncaught_exception(err) - {if(err instanceof Array && (err[0] == 0 || err[0] == 248)) - {var handler=caml_named_value("Printexc.handle_uncaught_exception"); - if(handler) - handler(err,false); - else - {var - msg=caml_format_exception(err), - at_exit=caml_named_value("Pervasives.do_at_exit"); - if(at_exit)at_exit(0); - globalThis.console.error("Fatal error: exception " + msg + "\n")}} - else - throw err} - var caml_ephe_data_offset=2; - function caml_ephe_check_data(x) - {return x[caml_ephe_data_offset] === undefined?0:1} - function caml_bytes_get16(s,i) - {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); - var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1); - return b2 << 8 | b1} - function caml_obj_make_forward(b,v){b[0] = 250;b[1] = v;return 0} - function caml_js_from_bool(x){return ! ! x} - function caml_ml_set_channel_name(){return 0} - function caml_exp2_float(x){return Math.pow(2,x)} - function caml_gr_close_graph() - {var s=caml_gr_state_get(); - s.canvas.width = 0; - s.canvas.height = 0; - return 0} - function caml_create_string(len) - {if(len < 0)caml_invalid_argument("String.create"); - return new MlBytes(len?2:9,"",len)} - function caml_md5_string(s,ofs,len) - {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} - function caml_md5_chan(chanid,len) - {var chan=caml_ml_channels[chanid],chan_len=chan.file.length(); - if(len < 0)len = chan_len - chan.offset; - if(chan.offset + len > chan_len)caml_raise_end_of_file(); - var buf=caml_create_bytes(len); - chan.file.read(chan.offset,buf,0,len); - return caml_md5_string(caml_string_of_bytes(buf),0,len)} - function caml_obj_dup(x) - {var l=x.length,a=new Array(l); - for(var i=0;i < l;i++)a[i] = x[i]; - return a} - function caml_weak_get_copy(x,i) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.get_copy"); - var y=caml_weak_get(x,i); - if(y === 0)return y; - var z=y[1]; - if(z instanceof Array)return [0,caml_obj_dup(z)]; - return y} - function caml_atanh_float(x){return Math.atanh(x)} - function caml_ml_output_bytes(chanid,buffer,offset,len) - {var chan=caml_ml_channels[chanid]; - if(! chan.opened) - caml_raise_sys_error("Cannot output to a closed channel"); - var bytes; - if(offset == 0 && caml_ml_bytes_length(buffer) == len) - bytes = buffer; - else - {bytes = caml_create_bytes(len); - caml_blit_bytes(buffer,offset,bytes,0,len)} - var - string=caml_string_of_bytes(bytes), - jsstring=caml_jsbytes_of_string(string), - id=jsstring.lastIndexOf("\n"); - if(id < 0) - chan.buffer += jsstring; - else - {chan.buffer += jsstring.substr(0,id + 1); - caml_ml_flush(chanid); - chan.buffer += jsstring.substr(id + 1)} - return 0} - function caml_ml_output(chanid,buffer,offset,len) - {return caml_ml_output_bytes - (chanid,caml_bytes_of_string(buffer),offset,len)} - function caml_ephe_get_data(x) - {return x[caml_ephe_data_offset] === undefined - ?0 - :[0,x[caml_ephe_data_offset]]} - function caml_xmlhttprequest_create(unit) - {var g=globalThis; - if(typeof g.XMLHttpRequest !== "undefined") - try {return new (g.XMLHttpRequest)()}catch(e){} - if(typeof g.activeXObject !== "undefined") - {try {return new (g.activeXObject)("Msxml2.XMLHTTP")}catch(e){} - try {return new (g.activeXObject)("Msxml3.XMLHTTP")}catch(e){} - try {return new (g.activeXObject)("Microsoft.XMLHTTP")}catch(e){}} - caml_failwith("Cannot create a XMLHttpRequest")} - function caml_trampoline_return(f,args) - {return {joo_tramp:f,joo_args:args}} - function caml_ml_is_buffered(c){return 1} - function caml_array_append(a1,a2) - {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); - a[0] = 0; - var i=1,j=1; - for(;i < l1;i++)a[i] = a1[i]; - for(;i < l;i++,j++)a[i] = a2[j]; - return a} - function caml_ml_set_channel_refill(chanid,f) - {caml_ml_channels[chanid].refill = f;return 0} - function ml_z_nextprime(z1) - {z1 = bigInt(z1); - var one=bigInt(1),two=bigInt(2); - if(z1.lt(one) || z1.equals(one))return 2; - if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one); - while(true) - if(z1.isProbablePrime(25)) - return ml_z_normalize(z1); - else - z1 = z1.add(two)} - function caml_js_expr(s) - {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n"); - return eval(caml_jsstring_of_string(s))} - function caml_int64_mul(x,y){return x.mul(y)} - function caml_ml_runtime_warnings_enabled(_unit) - {return caml_runtime_warnings} - function ml_z_sub(z1,z2) - {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))} - function ml_z_fdiv(z1,z2) - {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); - if(z1_pos * z2_pos < 0) - if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) - return ml_z_sub(ml_z_div(z1,z2),bigInt(1)); - return ml_z_div(z1,z2)} - function ml_z_to_bits(z1) - {z1 = bigInt(z1).abs(); - var res=""; - while(! z1.equals(bigInt(0))) - {res += String.fromCharCode(z1.mod(bigInt(256))); - z1 = z1.divide(bigInt(256))} - while(res.length % 4 != 0)res += String.fromCharCode(0); - return caml_string_of_jsbytes(res)} - function caml_output_value_to_bytes(v,flags) - {return caml_bytes_of_array(caml_output_val(v,flags))} - function caml_eventlog_resume(unit){return 0} - function caml_hash_univ_param(count,limit,obj) - {var hash_accu=0; - function hash_aux(obj) - {limit--; - if(count < 0 || limit < 0)return; - if(obj instanceof Array && obj[0] === (obj[0] | 0)) - switch(obj[0]) - {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break; - case 250:limit++;hash_aux(obj);break; - default: - count--; - hash_accu = hash_accu * 19 + obj[0] | 0; - for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])} - else - if(caml_is_ml_bytes(obj)) - {count--; - var content=caml_ml_bytes_content(obj); - if(typeof content === "string") - for(var b=content,l=b.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; - else - for(var a=content,l=a.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + a[i] | 0} - else - if(caml_is_ml_string(obj)) - {var jsbytes=caml_jsbytes_of_string(obj); - for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0} - else - if(typeof obj === "string") - for(var b=obj,l=obj.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; - else - if(obj === (obj | 0)) - {count--;hash_accu = hash_accu * 65599 + obj | 0} - else - if(obj === + obj) - {count--; - var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj)); - for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0} - else - if(obj && obj.caml_custom) - if - (caml_custom_ops[obj.caml_custom] - && - caml_custom_ops[obj.caml_custom].hash) - {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0; - hash_accu = hash_accu * 65599 + h | 0}} - hash_aux(obj); - return hash_accu & 0x3FFFFFFF} - function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} - function ml_z_divexact(z1,z2){return ml_z_div(z1,z2)} - function caml_output_value_to_buffer(s,ofs,len,v,flags) - {var t=caml_output_val(v,flags); - if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow"); - caml_blit_bytes(t,0,s,ofs,t.length); - return 0} - function re_replacement_text(repl,groups,orig) - {var - repl=caml_jsbytes_of_string(repl), - len=repl.length, - orig=caml_jsbytes_of_string(orig), - res="", - n=0, - cur, - start, - end, - c; - while(n < len) - {cur = repl.charAt(n++); - if(cur != "\\") - res += cur; - else - {if(n == len) - caml_failwith("Str.replace: illegal backslash sequence"); - cur = repl.charAt(n++); - switch(cur) - {case "\\":res += cur;break; - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - c = + cur; - if(c * 2 >= groups.length - 1) - caml_failwith("Str.replace: reference to unmatched group"); - start = caml_array_get(groups,c * 2); - end = caml_array_get(groups,c * 2 + 1); - if(start == - 1) - caml_failwith("Str.replace: reference to unmatched group"); - res += orig.slice(start,end); - break; - default:res += "\\" + cur}}} - return caml_string_of_jsbytes(res)} - function caml_pure_js_expr(s) - {js_print_stderr("caml_pure_js_expr: fallback to runtime evaluation\n"); - return eval(caml_jsstring_of_string(s))} - function blit_nat(nat1,ofs1,nat2,ofs2,len) - {for(var i=0;i < len;i++)nat1.data[ofs1 + i] = nat2.data[ofs2 + i]; - return 0} - function caml_int64_ult(x,y){return x.ucompare(y) < 0} - function caml_int64_xor(x,y){return x.xor(y)} - function caml_bigstring_blit_ba_to_bytes(ba1,pos1,bytes2,pos2,len) - {if(12 != ba1.kind) - caml_invalid_argument - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs1=ba1.offset(pos1); - if(ofs1 + len > ba1.data.length)caml_array_bound_error(); - if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error(); - var slice=ba1.data.slice(ofs1,ofs1 + len); - caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); - return 0} - function caml_register_named_value(nm,v) - {caml_named_values[caml_jsbytes_of_string(nm)] = v;return 0} - function jsoo_create_file_extern(name,content) - {if(globalThis.jsoo_create_file) - globalThis.jsoo_create_file(name,content); - else - {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; - globalThis.caml_fs_tmp.push({name:name,content:content})} - return 0} - function caml_to_js_string(s){return caml_jsstring_of_string(s)} - function caml_parse_sign_and_base(s) - {var i=0,len=caml_ml_string_length(s),base=10,sign=1; - if(len > 0) - switch(caml_string_unsafe_get(s,i)) - {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break} - if(i + 1 < len && caml_string_unsafe_get(s,i) == 48) - switch(caml_string_unsafe_get(s,i + 1)) - {case 120: - case 88:base = 16;i += 2;break; - case 111: - case 79:base = 8;i += 2;break; - case 98: - case 66:base = 2;i += 2;break; - case 117: - case 85:i += 2;break - } - return [i,sign,base]} - function caml_parse_digit(c) - {if(c >= 48 && c <= 57)return c - 48; - if(c >= 65 && c <= 90)return c - 55; - if(c >= 97 && c <= 122)return c - 87; - return - 1} - function caml_int64_of_string(s) - {var - r=caml_parse_sign_and_base(s), - i=r[0], - sign=r[1], - base=r[2], - base64=caml_int64_of_int32(base), - threshold= - new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient, - c=caml_string_unsafe_get(s,i), - d=caml_parse_digit(c); - if(d < 0 || d >= base)caml_failwith("int_of_string"); - var res=caml_int64_of_int32(d); - for(;;) - {i++; - c = caml_string_unsafe_get(s,i); - if(c == 95)continue; - d = caml_parse_digit(c); - if(d < 0 || d >= base)break; - if(caml_int64_ult(threshold,res))caml_failwith("int_of_string"); - d = caml_int64_of_int32(d); - res = caml_int64_add(caml_int64_mul(base64,res),d); - if(caml_int64_ult(res,d))caml_failwith("int_of_string")} - if(i != caml_ml_string_length(s))caml_failwith("int_of_string"); - if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res)) - caml_failwith("int_of_string"); - if(sign < 0)res = caml_int64_neg(res); - return res} - function re_search_forward(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.search_forward"); - while(pos <= caml_ml_string_length(s)) - {var res=re_match(re,s,pos,0);if(res)return res;pos++} - return [0]} - var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba; - function caml_make_vect(len,init) - {if(len < 0)caml_array_bound_error(); - var len=len + 1 | 0,b=new Array(len); - b[0] = 0; - for(var i=1;i < len;i++)b[i] = init; - return b} - function caml_ml_seek_in(chanid,pos) - {var chan=caml_ml_channels[chanid]; - if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - chan.offset = pos; - return 0} - function caml_sys_read_directory(name) - {var - root=resolve_fs_device(name), - a=root.device.readdir(root.rest), - l=new Array(a.length + 1); - l[0] = 0; - for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]); - return l} - function caml_ml_output_char(chanid,c) - {var s=caml_string_of_jsbytes(String.fromCharCode(c)); - caml_ml_output(chanid,s,0,1); - return 0} - function caml_sys_const_ostype_win32(){return os_type == "Win32"?1:0} - function caml_obj_is_block(x){return + (x instanceof Array)} - function caml_ml_input_char(chanid) - {var chan=caml_ml_channels[chanid]; - caml_ml_may_refill_input(chanid); - if(chan.offset >= chan.file.length())caml_raise_end_of_file(); - var res=chan.file.read_one(chan.offset); - chan.offset++; - return res} - function caml_obj_set_raw_field(o,i,v){return o[i + 1] = v} - function caml_js_var(x) - {var x=caml_jsstring_of_string(x); - if(! x.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*(\.[a-zA-Z_$][a-zA-Z_$0-9]*)*$/)) - js_print_stderr - ('caml_js_var: "' - + - x - + - '" is not a valid JavaScript variable. continuing ..'); - return eval(x)} - function caml_trunc_float(x){return Math.trunc(x)} - function caml_zarith_marshal(writer,v,sz) - {v = bigInt(v); - var bits=v.toArray(Math.pow(2,32)); - writer.write(8,bits.isNegative?1:0); - var block=bits.value.length,len=block * 4; - writer.write(32,len); - for(var i=block - 1;i >= 0;i--) - {writer.write(8,bits.value[i] >>> 0 & 0xff); - writer.write(8,bits.value[i] >>> 8 & 0xff); - writer.write(8,bits.value[i] >>> 16 & 0xff); - writer.write(8,bits.value[i] >>> 24 & 0xff)} - sz[0] = 4 * (1 + ((len + 3) / 4 | 0)); - sz[1] = 8 * (1 + ((len + 7) / 8 | 0))} - function caml_ephe_blit_data(src,dst) - {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} - function caml_is_printable(c){return + (c > 31 && c < 127)} - function caml_equal(x,y){return + (caml_compare_val(x,y,false) == 0)} - function re_partial_match(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.partial_match"); - var res=re_match(re,s,pos,1); - return res?res:[0]} - function caml_sys_random_seed() - {if(globalThis.crypto) - if(typeof globalThis.crypto.getRandomValues === "function") - {var a=new (globalThis.Uint32Array)(1); - globalThis.crypto.getRandomValues(a); - return [0,a[0]]} - else - if(globalThis.crypto.randomBytes === "function") - {var - buff=globalThis.crypto.randomBytes(4), - a=new (globalThis.Uint32Array)(buff); - return [0,a[0]]} - var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random(); - return [0,x]} - function caml_final_register_called_without_value(){return 0} - function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))} - function win_handle_fd(x){return x} - function caml_ba_uint8_set16(ba,i0,v) - {var ofs=ba.offset(i0); - if(ofs + 1 >= ba.data.length)caml_array_bound_error(); - ba.set(ofs + 0,v & 0xff); - ba.set(ofs + 1,v >>> 8 & 0xff); - return 0} - var win_filedescr_of_channel=caml_channel_descriptor; - function caml_js_delete(o,f){delete o[f];return 0} - function caml_int_of_string(s) - {var - r=caml_parse_sign_and_base(s), - i=r[0], - sign=r[1], - base=r[2], - len=caml_ml_string_length(s), - threshold=- 1 >>> 0, - c=i < len?caml_string_unsafe_get(s,i):0, - d=caml_parse_digit(c); - if(d < 0 || d >= base)caml_failwith("int_of_string"); - var res=d; - for(i++;i < len;i++) - {c = caml_string_unsafe_get(s,i); - if(c == 95)continue; - d = caml_parse_digit(c); - if(d < 0 || d >= base)break; - res = base * res + d; - if(res > threshold)caml_failwith("int_of_string")} - if(i != len)caml_failwith("int_of_string"); - res = sign * res; - if(base == 10 && (res | 0) != res)caml_failwith("int_of_string"); - return res | 0} - function caml_list_mount_point() - {var prev=0; - for(var i=0;i < jsoo_mount_point.length;i++) - {var old=prev; - prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]} - return prev} - var - caml_marshal_constants= - {PREFIX_SMALL_BLOCK:0x80, - PREFIX_SMALL_INT:0x40, - PREFIX_SMALL_STRING:0x20, - CODE_INT8:0x00, - CODE_INT16:0x01, - CODE_INT32:0x02, - CODE_INT64:0x03, - CODE_SHARED8:0x04, - CODE_SHARED16:0x05, - CODE_SHARED32:0x06, - CODE_BLOCK32:0x08, - CODE_BLOCK64:0x13, - CODE_STRING8:0x09, - CODE_STRING32:0x0A, - CODE_DOUBLE_BIG:0x0B, - CODE_DOUBLE_LITTLE:0x0C, - CODE_DOUBLE_ARRAY8_BIG:0x0D, - CODE_DOUBLE_ARRAY8_LITTLE:0x0E, - CODE_DOUBLE_ARRAY32_BIG:0x0F, - CODE_DOUBLE_ARRAY32_LITTLE:0x07, - CODE_CODEPOINTER:0x10, - CODE_INFIXPOINTER:0x11, - CODE_CUSTOM:0x12, - CODE_CUSTOM_LEN:0x18, - CODE_CUSTOM_FIXED:0x19}; - function caml_obj_raw_field(o,i){return o[i + 1]} - function caml_js_equals(x,y){return + (x == y)} - function bigstring_to_typed_array(bs){return bs.data} - function ml_z_fits_nativeint(z1){return ml_z_fits_int(z1)} - function caml_gr_arc_aux(ctx,cx,cy,ry,rx,a1,a2) - {while(a1 > a2)a2 += 360; - a1 /= 180; - a2 /= 180; - var - rot=0, - xPos, - yPos, - xPos_prev, - yPos_prev, - space=2, - num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0, - delta=(a2 - a1) * Math.PI / num, - i=a1 * Math.PI; - for(var j=0;j <= num;j++) - {xPos - = - cx - - - rx - * - Math.sin(i) - * - Math.sin(rot * Math.PI) - + - ry - * - Math.cos(i) - * - Math.cos(rot * Math.PI); - xPos = xPos.toFixed(2); - yPos - = - cy - + - ry - * - Math.cos(i) - * - Math.sin(rot * Math.PI) - + - rx - * - Math.sin(i) - * - Math.cos(rot * Math.PI); - yPos = yPos.toFixed(2); - if(j == 0) - ctx.moveTo(xPos,yPos); - else - if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos); - xPos_prev = xPos; - yPos_prev = yPos; - i -= delta} - return 0} - function caml_gr_fill_arc(x,y,rx,ry,a1,a2) - {var s=caml_gr_state_get(); - s.context.beginPath(); - caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); - s.context.fill(); - return 0} - function caml_ba_slice(ba,vind) - {vind = caml_js_from_array(vind); - var num_inds=vind.length,index=[],sub_dims=[],ofs; - if(num_inds > ba.dims.length) - caml_invalid_argument("Bigarray.slice: too many indices"); - if(ba.layout == 0) - {for(var i=0;i < num_inds;i++)index[i] = vind[i]; - for(;i < ba.dims.length;i++)index[i] = 0; - sub_dims = ba.dims.slice(num_inds)} - else - {for(var i=0;i < num_inds;i++) - index[ba.dims.length - num_inds + i] = vind[i]; - for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1; - sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)} - ofs = ba.offset(index); - var - size=caml_ba_get_size(sub_dims), - size_per_element=caml_ba_get_size_per_element(ba.kind), - new_data= - ba.data.subarray - (ofs * size_per_element,(ofs + size) * size_per_element); - return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)} - function ml_z_of_nativeint(z){return ml_z_of_int(z)} - function caml_marshal_data_size(s,ofs) - {function get32(s,i) - {return caml_bytes_unsafe_get(s,i) - << - 24 - | - caml_bytes_unsafe_get(s,i + 1) - << - 16 - | - caml_bytes_unsafe_get(s,i + 2) - << - 8 - | - caml_bytes_unsafe_get(s,i + 3)} - if(get32(s,ofs) != (0x8495A6BE | 0)) - caml_failwith("Marshal.data_size: bad object"); - return get32(s,ofs + 4)} - function caml_input_value(chanid) - {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8); - chan.file.read(chan.offset,buf,0,8); - var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len); - chan.file.read(chan.offset,buf,0,len); - var offset=[0],res=caml_input_value_from_bytes(buf,offset); - chan.offset = chan.offset + offset[0]; - return res} - function caml_ba_kind(ba){return ba.kind} - function caml_js_fun_call(f,a) - {switch(a.length) - {case 1:return f(); - case 2:return f(a[1]); - case 3:return f(a[1],a[2]); - case 4:return f(a[1],a[2],a[3]); - case 5:return f(a[1],a[2],a[3],a[4]); - case 6:return f(a[1],a[2],a[3],a[4],a[5]); - case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]); - case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) - } - return f.apply(null,caml_js_from_array(a))} - function caml_gc_major_slice(work){return 0} - function ml_z_invert(a,n) - {a = bigInt(a); - n = bigInt(n); - var zero=bigInt(0),one=bigInt(1); - if(n.abs().equals(one))return 0; - if(n.equals(zero) && a.abs().equals(one))return a; - if(n.equals(zero) || a.equals(zero))caml_raise_zero_divide(); - var - x=ml_z_gcdext_intern(a,n), - r=bigInt(x[2]), - tmp=bigInt(a).multiply(r).mod(n); - if(tmp.lt(zero))tmp = tmp.add(n.abs()); - if(r.lt(zero))r = r.add(n.abs()); - if(tmp.equals(one))return ml_z_normalize(r); - caml_raise_zero_divide()} - function ml_z_powm(z1,z2,z3) - {var zero=bigInt(0),one=bigInt(1); - z1 = bigInt(z1); - z2 = bigInt(z2); - z3 = bigInt(z3); - if(z3.equals(zero))caml_raise_zero_divide(); - if(z3.abs().equals(one))return 0; - if(z2.equals(zero))return 1; - if(z2.lt(0)) - {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3); - if(r.lt(zero))r = r.add(z3.abs()); - return ml_z_normalize(r)} - else - {var r=bigInt(z1).modPow(z2,z3); - if(r.lt(zero))r = r.add(z3.abs()); - return ml_z_normalize(r)}} - function ml_z_powm_sec(z1,z2,z3) - {z3 = bigInt(z3).abs(); - var one=bigInt(1); - if(bigInt(z2).lt(one)) - caml_invalid_argument("Z.powm_sec: exponent must be positive"); - if(! bigInt(z3).and(one).equals(one)) - caml_invalid_argument("Z.powm_sec: modulus must be odd"); - return ml_z_powm(z1,z2,z3)} - function caml_js_pure_expr(f){return f()} - function compare_digits_nat(nat1,ofs1,nat2,ofs2) - {if(nat1.data[ofs1] > nat2.data[ofs2])return 1; - if(nat1.data[ofs1] < nat2.data[ofs2])return - 1; - return 0} - function caml_ml_input(chanid,s,i,l) - {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset; - if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan); - if(l2 < l)l = l2; - chan.file.read(chan.offset,s,i,l); - chan.offset += l; - return l} - function caml_gr_wait_event(_evl) - {caml_failwith - ("caml_gr_wait_event not Implemented: use Graphics_js instead")} - function caml_gr_sigio_handler(){return 0} - function caml_hash_mix_bigstring(h,bs) - {return caml_hash_mix_bytes_arr(h,bs.data)} - function caml_record_backtrace(){return 0} - function unix_gmtime(t) - {var - d=new Date(t * 1000), - d_num=d.getTime(), - januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(), - doy=Math.floor((d_num - januaryfirst) / 86400000); - return [0, - d.getUTCSeconds(), - d.getUTCMinutes(), - d.getUTCHours(), - d.getUTCDate(), - d.getUTCMonth(), - d.getUTCFullYear() - 1900, - d.getUTCDay(), - doy, - false | 0]} - function caml_sys_const_backend_type() - {return [0,caml_string_of_jsbytes("js_of_ocaml")]} - function caml_sys_get_config() - {return [0,caml_string_of_jsbytes(os_type),32,0]} - function unix_time(){return Math.floor(unix_gettimeofday())} - function caml_ml_out_channels_list() - {var l=0; - for(var c=0;c < caml_ml_channels.length;c++) - if - (caml_ml_channels[c] - && - caml_ml_channels[c].opened - && - caml_ml_channels[c].out) - l = [0,caml_ml_channels[c].fd,l]; - return l} - function caml_asinh_float(x){return Math.asinh(x)} - function ml_z_hash(z1) - {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0; - for(var i=0;i < a.value.length;i++) - acc = caml_hash_mix_int(acc,a.value[i]); - if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); - if(a.isNegative)acc = acc + 1; - return acc | 0} - function bigstring_of_array_buffer(ab) - {var ta=new (globalThis.Uint8Array)(ab); - return caml_ba_create_unsafe(12,0,[ta.length],ta)} - function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y} - function caml_ba_init(){return 0} - function re_string_match(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.string_match"); - var res=re_match(re,s,pos,0); - return res?res:[0]} - function BigStringReader(bs,i){this.s = bs;this.i = i} - BigStringReader.prototype - = - {read8u:function(){return caml_ba_get_1(this.s,this.i++)}, - read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24}, - read16u: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)}, - read16s: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)}, - read32u: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return (caml_ba_get_1(s,i) - << - 24 - | - caml_ba_get_1(s,i + 1) - << - 16 - | - caml_ba_get_1(s,i + 2) - << - 8 - | - caml_ba_get_1(s,i + 3)) - >>> - 0}, - read32s: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return caml_ba_get_1(s,i) - << - 24 - | - caml_ba_get_1(s,i + 1) - << - 16 - | - caml_ba_get_1(s,i + 2) - << - 8 - | - caml_ba_get_1(s,i + 3)}, - readstr: - function(len) - {var i=this.i,arr=new Array(len); - for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j); - this.i = i + len; - return caml_string_of_array(arr)}}; - function caml_gr_dump_image(im) - {var data=[0]; - for(var i=0;i < im.height;i++) - {data[i + 1] = [0]; - for(var j=0;j < im.width;j++) - {var - o=i * (im.width * 4) + j * 4, - r=im.data[o + 0], - g=im.data[o + 1], - b=im.data[o + 2]; - data[i + 1][j + 1] = (r << 16) + (g << 8) + b}} - return data} - function caml_ba_get_generic(ba,i) - {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} - function caml_get_exception_backtrace(){return 0} - function caml_format_float(fmt,x) - {function toFixed(x,dp) - {if(Math.abs(x) < 1.0) - return x.toFixed(dp); - else - {var e=parseInt(x.toString().split("+")[1]); - if(e > 20) - {e -= 20; - x /= Math.pow(10,e); - x += new Array(e + 1).join("0"); - if(dp > 0)x = x + "." + new Array(dp + 1).join("0"); - return x} - else - return x.toFixed(dp)}} - var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec; - if(x < 0 || x == 0 && 1 / x == - Infinity){f.sign = - 1;x = - x} - if(isNaN(x)) - {s = "nan";f.filler = " "} - else - if(! isFinite(x)) - {s = "inf";f.filler = " "} - else - switch(f.conv) - {case "e": - var s=x.toExponential(prec),i=s.length; - if(s.charAt(i - 3) == "e") - s = s.slice(0,i - 1) + "0" + s.slice(i - 1); - break; - case "f":s = toFixed(x,prec);break; - case "g": - prec = prec?prec:1; - s = x.toExponential(prec - 1); - var j=s.indexOf("e"),exp=+ s.slice(j + 1); - if(exp < - 4 || x >= 1e21 || x.toFixed(0).length > prec) - {var i=j - 1; - while(s.charAt(i) == "0")i--; - if(s.charAt(i) == ".")i--; - s = s.slice(0,i + 1) + s.slice(j); - i = s.length; - if(s.charAt(i - 3) == "e") - s = s.slice(0,i - 1) + "0" + s.slice(i - 1); - break} - else - {var p=prec; - if(exp < 0) - {p -= exp + 1;s = x.toFixed(p)} - else - while(s = x.toFixed(p),s.length > prec + 1)p--; - if(p) - {var i=s.length - 1; - while(s.charAt(i) == "0")i--; - if(s.charAt(i) == ".")i--; - s = s.slice(0,i + 1)}} - break - } - return caml_finish_formatting(f,s)} - function caml_mount_autoload(name,f) - {var path=caml_make_path(name),name=caml_trailing_slash(path.join("/")); - jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)}); - return 0} - function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))} - function ml_z_fits_int64(z1) - {z1 = bigInt(z1); - return z1.compare(bigInt("9223372036854775807")) - <= - 0 - && - z1.compare(bigInt("-9223372036854775808")) - >= - 0 - ?1 - :0} - function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len) - {if(12 != ba1.kind) - caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); - if(12 != ba2.kind) - caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2); - if(ofs1 + len > ba1.data.length)caml_array_bound_error(); - if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=ba1.data.subarray(ofs1,ofs1 + len); - ba2.data.set(slice,pos2); - return 0} - var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba; - function ml_z_sqrt_rem(z) - {z = bigInt(z); - var zero=bigInt(0); - if(z.lt(zero)) - caml_invalid_argument("Z.sqrt_rem: square root of a negative number"); - var - root=bigInt(ml_z_root(z,2)), - mul=root.multiply(root), - diff=z.subtract(mul); - return [0,ml_z_normalize(root),ml_z_normalize(diff)]} - function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)} - function caml_string_greaterthan(s1,s2) - {return caml_string_lessthan(s2,s1)} - function caml_div(x,y) - {if(y == 0)caml_raise_zero_divide();return x / y | 0} - function caml_ephe_get_data_copy(x) - {return x[caml_ephe_data_offset] === undefined - ?0 - :[0,caml_obj_dup(x[caml_ephe_data_offset])]} - function caml_memprof_start(rate,stack_size,tracker){return 0} - function ml_z_perfect_square(z) - {z = bigInt(z); - if(z.lt(bigInt(0)))return 0; - var root=bigInt(ml_z_root(z,2)); - return root.multiply(root).eq(z)?1:0} - function caml_sys_get_argv(a){return [0,caml_argv[1],caml_argv]} - function caml_js_to_bool(x){return + x} - function caml_gr_create_image(x,y) - {var s=caml_gr_state_get();return s.context.createImageData(x,y)} - var caml_ephe_get_key_copy=caml_weak_get_copy; - function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)} - function caml_raw_backtrace_next_slot(){return 0} - function ml_z_to_nativeint(z1){return ml_z_to_int(z1)} - function caml_register_global(n,v,name_opt) - {if(name_opt && globalThis.toplevelReloc) - n = globalThis.toplevelReloc(name_opt); - caml_global_data[n + 1] = v; - if(name_opt)caml_global_data[name_opt] = v} - function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3) - {var carry=0; - for(var i=0;i < len3;i++) - carry - += - mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i); - return carry} - function square_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {var carry=0; - carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0); - carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2); - return carry} - function caml_js_from_float(x){return x} - function caml_floatarray_create(len) - {if(len < 0)caml_array_bound_error(); - var len=len + 1 | 0,b=new Array(len); - b[0] = 254; - for(var i=1;i < len;i++)b[i] = 0; - return b} - function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} - function caml_get_major_credit(n){return 0} - function caml_sys_modify_argv(arg){caml_argv = arg;return 0} - var caml_method_cache=[]; - function caml_get_public_method(obj,tag,cacheid) - {var meths=obj[1],ofs=caml_method_cache[cacheid]; - if(ofs === undefined) - for(var i=caml_method_cache.length;i < cacheid;i++) - caml_method_cache[i] = 0; - else - if(meths[ofs] === tag)return meths[ofs - 1]; - var li=3,hi=meths[1] * 2 + 1,mi; - while(li < hi) - {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi} - caml_method_cache[cacheid] = li + 1; - return tag == meths[li + 1]?meths[li]:0} - function caml_js_get_console() - {var - c=globalThis.console?globalThis.console:{}, - m= - ["log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "trace", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd"]; - function f(){} - for(var i=0;i < m.length;i++)if(! c[m[i]])c[m[i]] = f; - return c} - function caml_sys_unsafe_getenv(name){return caml_sys_getenv(name)} - function caml_ml_open_descriptor_in(fd) - {var data=caml_global_data.fds[fd]; - if(data.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); - var refill=null; - if(fd == 0 && fs_node_supported()) - {var fs=require("fs"); - refill - = - function(){return caml_string_of_jsstring(fs.readFileSync(0,"utf8"))}} - var - channel= - {file:data.file, - offset:data.offset, - fd:fd, - opened:true, - out:false, - refill:refill}; - caml_ml_channels[channel.fd] = channel; - return channel.fd} - function bigstring_of_typed_array(ba) - {var - ta= - new - (globalThis.Uint8Array) - (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT); - return caml_ba_create_unsafe(12,0,[ta.length],ta)} - function caml_round_float(x){return Math.round(x)} - function ml_z_of_bits(z1) - {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one; - for(var i=0;i < caml_ml_string_length(z1);i++) - {var d=caml_string_unsafe_get(z1,i); - r = bigInt(base).multiply(d).add(r); - base = bigInt(base).multiply(base1)} - return ml_z_normalize(r)} - function unix_stat(name) - {var root=resolve_fs_device(name); - if(! root.device.stat)caml_failwith("unix_stat: not implemented"); - return root.device.stat(root.rest,true)} - var unix_stat_64=unix_stat; - function caml_ojs_new_arr(c,a) - {switch(a.length) - {case 0:return new c(); - case 1:return new c(a[0]); - case 2:return new c(a[0],a[1]); - case 3:return new c(a[0],a[1],a[2]); - case 4:return new c(a[0],a[1],a[2],a[3]); - case 5:return new c(a[0],a[1],a[2],a[3],a[4]); - case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]); - case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6]) - } - function F(){return c.apply(this,a)} - F.prototype = c.prototype; - return new F()} - function complement_nat(nat,ofs,len) - {for(var i=0;i < len;i++) - nat.data[ofs + i] = (- 1 >>> 0) - (nat.data[ofs + i] >>> 0)} - function ml_z_logxor(z1,z2) - {return ml_z_normalize(bigInt(z1).xor(bigInt(z2)))} - var caml_js_regexps={amp:/&/g,lt:/ 1023) - {exp -= 1023; - x *= Math.pow(2,1023); - if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}} - if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)} - x *= Math.pow(2,exp); - return x} - function caml_gr_state_set(ctx) - {caml_gr_state = ctx;caml_gr_state_init();return 0} - function caml_zarith_unmarshal(reader,sz) - {var negate; - switch(reader.read8u()) - {case 1:negate = true;break; - case 0:negate = false;break; - default:caml_failwith("input_value: z (malformed input)")} - var len=reader.read32u(),x=bigInt(0); - for(var i=0;i < len / 4;i++) - {var y=bigInt(reader.read8u()); - y = y.add(reader.read8u() << 8); - y = y.add(reader.read8u() << 16); - y = y.add(reader.read8u() << 24 >>> 0); - x = y.shiftLeft(i * 32).add(x)} - if(negate)x = x.negate(); - sz[0] = len + 4; - return ml_z_normalize(x)} - function ml_z_trailing_zeros(z) - {z = bigInt(z).abs(); - var zero=bigInt(0),one=bigInt(1); - if(z.equals(zero))return 0x7fffffff; - var i=0; - z = z.xor(z.prev()).shiftRight(1); - for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1); - return i} - function caml_js_wrap_callback_strict(arity,f) - {return function() - {var n=arguments.length; - if(n == arity && f.length == arity)return f.apply(null,arguments); - var args=new Array(arity),len=Math.min(arguments.length,arity); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,args)}} - function caml_gc_minor_words(unit){return 0} - function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} - function caml_get_current_callstack(){return [0]} - function land_digit_nat(nat1,ofs1,nat2,ofs2) - {nat1.data[ofs1] &= nat2.data[ofs2];return 0} - function caml_int64_mod(x,y){return x.mod(y)} - function unix_readlink(name) - {var root=resolve_fs_device(name); - if(! root.device.readlink) - caml_failwith("unix_readlink: not implemented"); - return root.device.readlink(root.rest,true)} - function caml_obj_set_tag(x,tag){x[0] = tag;return 0} - function caml_int32_bswap(x) - {return (x & 0x000000FF) - << - 24 - | - (x & 0x0000FF00) - << - 8 - | - (x & 0x00FF0000) - >>> - 8 - | - (x & 0xFF000000) - >>> - 24} - function win_startup(){} - function caml_ba_set_3(ba,i0,i1,i2,v) - {ba.set(ba.offset([i0,i1,i2]),v);return 0} - function caml_js_instanceof(o,c){return o instanceof c?1:0} - function caml_get_major_bucket(n){return 0} - var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes; - function set_digit_nat_native(nat,ofs,digit) - {nat.data[ofs] = digit;return 0} - function nth_digit_nat_native(nat,ofs){return nat.data[ofs]} - function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)} - function caml_gr_state_create(canvas,w,h) - {var context=canvas.getContext("2d"); - return {context:context, - canvas:canvas, - x:0, - y:0, - width:w, - height:h, - line_width:1, - font:caml_string_of_jsbytes("fixed"), - text_size:26, - color:0x000000, - title:caml_string_of_jsbytes("")}} - function caml_js_wrap_callback(f) - {return function() - {var len=arguments.length; - if(len > 0) - {var args=new Array(len); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,args)} - else - return caml_call_gen(f,[undefined])}} - function caml_gr_draw_arc(x,y,rx,ry,a1,a2) - {var s=caml_gr_state_get(); - s.context.beginPath(); - caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); - s.context.stroke(); - return 0} - function caml_ba_map_file(vfd,kind,layout,shared,dims,pos) - {caml_failwith("caml_ba_map_file not implemented")} - function caml_ba_map_file_bytecode(argv,argn) - {return caml_ba_map_file(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5])} - function unix_symlink(to_dir,src,dst) - {var src_root=resolve_fs_device(src),dst_root=resolve_fs_device(dst); - if(src_root.device != dst_root.device) - caml_failwith("unix_symlink: cannot symlink between two filesystems"); - if(! src_root.device.symlink) - caml_failwith("unix_symlink: not implemented"); - return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)} - function caml_ba_create_from(data1,data2,jstyp,kind,layout,dims) - {if(data2 || caml_ba_get_size_per_element(kind) == 2) - caml_invalid_argument - ("caml_ba_create_from: use return caml_ba_create_unsafe"); - return caml_ba_create_unsafe(kind,layout,dims,data1)} - function caml_tanh_float(x){return Math.tanh(x)} - function caml_gr_draw_str(str) - {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width; - s.context.fillText(str,s.x,s.height - s.y); - s.x += dx | 0; - return 0} - function caml_gr_draw_string(str) - {caml_gr_draw_str(caml_jsstring_of_string(str));return 0} - function caml_gr_draw_char(c) - {caml_gr_draw_str(String.fromCharCode(c));return 0} - function caml_unmount(name) - {var - path=caml_make_path(name), - name=caml_trailing_slash(path.join("/")), - idx=- 1; - for(var i=0;i < jsoo_mount_point.length;i++) - if(jsoo_mount_point[i].path == name)idx = i; - if(idx > - 1)jsoo_mount_point.splice(idx,1); - return 0} - function caml_input_value_from_string(s,ofs) - {var reader=new MlStringReader(s,typeof ofs == "number"?ofs:ofs[0]); - return caml_input_value_from_reader(reader,ofs)} - function caml_ml_pos_in_64(chanid) - {return caml_int64_of_float(caml_ml_channels[chanid].offset)} - function caml_gr_draw_image(im,x,y) - {var s=caml_gr_state_get(); - if(! im.image) - {var canvas=document.createElement("canvas"); - canvas.width = s.width; - canvas.height = s.height; - canvas.getContext("2d").putImageData(im,0,0); - var image=new (globalThis.Image)(); - image.onload - = - function() - {s.context.drawImage(image,x,s.height - im.height - y); - im.image = image}; - image.src = canvas.toDataURL("image/png")} - else - s.context.drawImage(im.image,x,s.height - im.height - y); - return 0} - function caml_register_channel_for_spacetime(_channel){return 0} - function caml_string_set(s,i,c) - {if(i >>> 0 >= s.l)caml_string_bound_error(); - return caml_string_unsafe_set(s,i,c)} - function caml_sys_rmdir(name) - {var root=resolve_fs_device(name);root.device.rmdir(root.rest);return 0} - function caml_ml_pos_out(chanid) - {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset} - function caml_spacetime_enabled(_unit){return 0} - function caml_bytes_notequal(s1,s2){return 1 - caml_bytes_equal(s1,s2)} - function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")} - function caml_js_object(a) - {var o={}; - for(var i=1;i < a.length;i++) - {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]} - return o} - function caml_ba_create(kind,layout,dims_ml) - {var - dims=caml_js_from_array(dims_ml), - data=caml_ba_create_buffer(kind,caml_ba_get_size(dims)); - return caml_ba_create_unsafe(kind,layout,dims,data)} - function caml_weak_blit(a1,i1,a2,i2,len) - {caml_array_blit - (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len); - return 0} - function caml_gr_remember_mode() - {caml_failwith("caml_gr_remember_mode not Implemented")} - function caml_fma_float(x,y,z) - {var - SPLIT=Math.pow(2,27) + 1, - MIN_VALUE=Math.pow(2,- 1022), - EPSILON=Math.pow(2,- 52), - C=416, - A=Math.pow(2,+ C), - B=Math.pow(2,- C); - function multiply(a,b) - {var - at=SPLIT * a, - ahi=at - (at - a), - alo=a - ahi, - bt=SPLIT * b, - bhi=bt - (bt - b), - blo=b - bhi, - p=a * b, - e=ahi * bhi - p + ahi * blo + alo * bhi + alo * blo; - return {p:p,e:e}} - function add(a,b) - {var s=a + b,v=s - a,e=a - (s - v) + (b - v);return {s:s,e:e}} - function adjust(x,y) - {return x !== 0 && y !== 0 && SPLIT * x - (SPLIT * x - x) === x - ?x * (1 + (x < 0?- 1:+ 1) * (y < 0?- 1:+ 1) * EPSILON) - :x} - if - (x - === - 0 - || - x - !== - x - || - x - === - + - (1 / 0) - || - x - === - - - (1 / 0) - || - y - === - 0 - || - y - !== - y - || - y - === - + - (1 / 0) - || - y - === - - - (1 / 0)) - return x * y + z; - if(z === 0)return x * y; - if(z !== z || z === + (1 / 0) || z === - (1 / 0))return z; - var scale=1; - while(Math.abs(x) > A){scale *= A;x *= B} - while(Math.abs(y) > A){scale *= A;y *= B} - if(scale === 1 / 0)return x * y * scale; - while(Math.abs(x) < B){scale *= B;x *= A} - while(Math.abs(y) < B){scale *= B;y *= A} - if(scale === 0)return z; - var xs=x,ys=y,zs=z / scale; - if(Math.abs(zs) > Math.abs(xs * ys) * 4 / EPSILON)return z; - if(Math.abs(zs) < Math.abs(xs * ys) * EPSILON / 4 * EPSILON / 4) - zs = (z < 0?- 1:+ 1) * MIN_VALUE; - var - xy=multiply(xs,ys), - s=add(xy.p,zs), - u=add(xy.e,s.e), - i=add(s.s,u.s), - f=i.s + adjust(i.e,u.e); - if(f === 0)return f; - var fs=f * scale; - if(Math.abs(fs) > MIN_VALUE)return fs; - return fs + adjust(f - fs / scale,i.e) * scale} - function caml_bswap16(x){return (x & 0x00FF) << 8 | (x & 0xFF00) >> 8} - function caml_ml_set_binary_mode(chanid,mode) - {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd]; - data.flags.text = ! mode; - data.flags.binary = mode; - return 0} - function caml_final_register(){return 0} - function caml_gr_draw_rect(x,y,w,h) - {var s=caml_gr_state_get(); - s.context.strokeRect(x,s.height - y,w,- h); - return 0} - function caml_string_get16(s,i) - {if(i >>> 0 >= caml_ml_string_length(s) - 1)caml_string_bound_error(); - var b1=caml_string_unsafe_get(s,i),b2=caml_string_unsafe_get(s,i + 1); - return b2 << 8 | b1} - function caml_ephe_unset_data(x,data) - {x[caml_ephe_data_offset] = undefined;return 0} - function caml_output_value(chanid,v,flags) - {var s=caml_output_value_to_string(v,flags); - caml_ml_output(chanid,s,0,caml_ml_string_length(s)); - return 0} - function caml_ba_get_3(ba,i0,i1,i2){return ba.get(ba.offset([i0,i1,i2]))} - var caml_ephe_blit_key=caml_weak_blit; - function ml_z_to_int32(z1){return ml_z_to_int(z1)} - var caml_initial_time=new Date().getTime() * 0.001; - function caml_sys_time() - {var now=new Date().getTime();return now * 0.001 - caml_initial_time} - function caml_sys_time_include_children(b){return caml_sys_time()} - function caml_check_bound(array,index) - {if(index >>> 0 >= array.length - 1)caml_array_bound_error(); - return array} - function unix_getpwuid(unit){caml_raise_not_found()} - function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))} - function caml_hash_mix_string(h,v) - {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} - function caml_hash(count,limit,seed,obj) - {var queue,rd,wr,sz,num,h,v,i,len; - sz = limit; - if(sz < 0 || sz > 256)sz = 256; - num = count; - h = seed; - queue = [obj]; - rd = 0; - wr = 1; - while(rd < wr && num > 0) - {v = queue[rd++]; - if(v && v.caml_custom) - {if - (caml_custom_ops[v.caml_custom] - && - caml_custom_ops[v.caml_custom].hash) - {var hh=caml_custom_ops[v.caml_custom].hash(v); - h = caml_hash_mix_int(h,hh); - num--}} - else - if(v instanceof Array && v[0] === (v[0] | 0)) - switch(v[0]) - {case 248:h = caml_hash_mix_int(h,v[2]);num--;break; - case 250:queue[--rd] = v[1];break; - default: - var tag=v.length - 1 << 10 | v[0]; - h = caml_hash_mix_int(h,tag); - for(i = 1,len = v.length;i < len;i++) - {if(wr >= sz)break;queue[wr++] = v[i]} - break} - else - if(caml_is_ml_bytes(v)) - {h = caml_hash_mix_bytes(h,v);num--} - else - if(caml_is_ml_string(v)) - {h = caml_hash_mix_string(h,v);num--} - else - if(typeof v === "string") - {h = caml_hash_mix_jsbytes(h,v);num--} - else - if(v === (v | 0)) - {h = caml_hash_mix_int(h,v + v + 1);num--} - else - if(v === + v){h = caml_hash_mix_float(h,v);num--}} - h = caml_hash_mix_final(h); - return h & 0x3FFFFFFF} - function caml_obj_tag(x) - {if(x instanceof Array && x[0] == x[0] >>> 0) - return x[0]; - else - if(caml_is_ml_bytes(x)) - return 252; - else - if(caml_is_ml_string(x)) - return 252; - else - if(x instanceof Function || typeof x == "function") - return 247; - else - if(x && x.caml_custom)return 255;else return 1000} - function caml_ba_to_typed_array(ba){return ba.data} - function caml_bytes_get32(s,i) - {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); - var - b1=caml_bytes_unsafe_get(s,i), - b2=caml_bytes_unsafe_get(s,i + 1), - b3=caml_bytes_unsafe_get(s,i + 2), - b4=caml_bytes_unsafe_get(s,i + 3); - return b4 << 24 | b3 << 16 | b2 << 8 | b1} - function caml_frexp_float(x) - {if(x == 0 || ! isFinite(x))return [0,x,0]; - var neg=x < 0; - if(neg)x = - x; - var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1); - x *= Math.pow(2,- exp); - while(x < 0.5){x *= 2;exp--} - while(x >= 1){x *= 0.5;exp++} - if(neg)x = - x; - return [0,x,exp]} - function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())} - function caml_string_get64(s,i) - {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error(); - var a=new Array(8); - for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j); - return caml_int64_of_bytes(a)} - function caml_js_error_option_of_exception(exn) - {if(exn.js_error)return [0,exn.js_error];return 0} - function caml_ml_pos_out_64(chanid) - {caml_ml_flush(chanid); - return caml_int64_of_float(caml_ml_channels[chanid].offset)} - function ml_z_extract(z1,pos,len) - {z1 = bigInt(z1); - return ml_z_normalize - (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))} - function ml_z_of_float(f1) - {if(f1 == Infinity || f1 == - Infinity || f1 != f1) - caml_raise_constant(caml_named_value("ml_z_overflow")); - return ml_z_normalize(bigInt(f1 < 0?Math.ceil(f1):Math.floor(f1)))} - function ml_z_lognot(z1){return ml_z_normalize(bigInt(z1).not())} - function caml_gr_close_subwindow(a) - {caml_failwith("caml_gr_close_subwindow not Implemented")} - function caml_floatarray_blit(a1,i1,a2,i2,len) - {if(i2 <= i1) - for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; - else - for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; - return 0} - function caml_get_minor_free(unit){return 0} - function caml_set_static_env(k,v) - {if(! globalThis.jsoo_static_env)globalThis.jsoo_static_env = {}; - globalThis.jsoo_static_env[k] = v; - return 0} - function caml_ba_change_layout(ba,layout) - {if(ba.layout == layout)return ba; - var new_dims=[]; - for(var i=0;i < ba.dims.length;i++) - new_dims[i] = ba.dims[ba.dims.length - i - 1]; - return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)} - function caml_js_new(c,a) - {switch(a.length) - {case 1:return new c(); - case 2:return new c(a[1]); - case 3:return new c(a[1],a[2]); - case 4:return new c(a[1],a[2],a[3]); - case 5:return new c(a[1],a[2],a[3],a[4]); - case 6:return new c(a[1],a[2],a[3],a[4],a[5]); - case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]); - case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) - } - function F(){return c.apply(this,caml_js_from_array(a))} - F.prototype = c.prototype; - return new F()} - function unix_mkdir(name,perm) - {var root=resolve_fs_device(name); - if(! root.device.mkdir)caml_failwith("unix_mkdir: not implemented"); - return root.device.mkdir(root.rest,perm,true)} - function caml_gr_current_y(){var s=caml_gr_state_get();return s.y} - function caml_format_int(fmt,i) - {if(caml_jsbytes_of_string(fmt) == "%d") - return caml_string_of_jsbytes("" + i); - var f=caml_parse_format(fmt); - if(i < 0)if(f.signedconv){f.sign = - 1;i = - i}else i >>>= 0; - var s=i.toString(f.base); - if(f.prec >= 0) - {f.filler = " "; - var n=f.prec - s.length; - if(n > 0)s = caml_str_repeat(n,"0") + s} - return caml_finish_formatting(f,s)} - function caml_obj_truncate(x,s) - {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate"); - if(x.length != s + 1)x.length = s + 1; - return 0} - function caml_js_to_string(s){return caml_string_of_jsstring(s)} - function is_digit_odd(nat,ofs){if(nat.data[ofs] & 1)return 1;return 0} - function caml_runtime_variant(_unit){return caml_string_of_jsbytes("")} - function caml_ml_open_descriptor_out(fd) - {var data=caml_global_data.fds[fd]; - if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); - var - channel= - {file:data.file, - offset:data.offset, - fd:fd, - opened:true, - out:true, - buffer:""}; - caml_ml_channels[channel.fd] = channel; - return channel.fd} - function caml_array_concat(l) - {var a=[0]; - while(l !== 0) - {var b=l[1];for(var i=1;i < b.length;i++)a.push(b[i]);l = l[2]} - return a} - function caml_gr_open_graph(info) - {var g=globalThis,info=caml_jsstring_of_string(info); - function get(name) - {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); - if(res)return res[2]} - var specs=[]; - if(! (info == ""))specs.push(info); - var target=get("target"); - if(! target)target = ""; - var status=get("status"); - if(! status)specs.push("status=1"); - var w=get("width"); - w = w?parseInt(w):200; - specs.push("width=" + w); - var h=get("height"); - h = h?parseInt(h):200; - specs.push("height=" + h); - var win=g.open("about:blank",target,specs.join(",")); - if(! win)caml_failwith("Graphics.open_graph: cannot open the window"); - var doc=win.document,canvas=doc.createElement("canvas"); - canvas.width = w; - canvas.height = h; - var ctx=caml_gr_state_create(canvas,w,h); - ctx.set_title = function(title){doc.title = title}; - caml_gr_state_set(ctx); - var body=doc.body; - body.style.margin = "0px"; - body.appendChild(canvas); - return 0} - function caml_ephe_set_data(x,data) - {x[caml_ephe_data_offset] = data;return 0} - function caml_make_float_vect(len) - {if(len < 0)caml_array_bound_error(); - var len=len + 1 | 0,b=new Array(len); - b[0] = 254; - for(var i=1;i < len;i++)b[i] = 0; - return b} - function caml_cbrt_float(x){return Math.cbrt(x)} - function caml_memprof_stop(unit){return 0} - function caml_eventlog_pause(unit){return 0} - function caml_greaterequal(x,y) - {return + (caml_compare_val(x,y,false) >= 0)} - function ml_z_numbits(z1) - {z1 = bigInt(z1).abs(); - var n=0,upperBound=bigInt.one; - while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)} - return n} - function caml_get_exception_raw_backtrace(){return [0]} - function caml_log1p_float(x){return Math.log1p(x)} - function caml_int64_or(x,y){return x.or(y)} - function caml_lazy_make_forward(v){return [250,v]} - function lor_digit_nat(nat1,ofs1,nat2,ofs2) - {nat1.data[ofs1] |= nat2.data[ofs2];return 0} - function caml_gr_blit_image(im,x,y) - {var - s=caml_gr_state_get(), - im2= - s.context.getImageData(x,s.height - im.height - y,im.width,im.height); - for(var i=0;i < im2.data.length;i += 4) - {im.data[i] = im2.data[i]; - im.data[i + 1] = im2.data[i + 1]; - im.data[i + 2] = im2.data[i + 2]; - im.data[i + 3] = im2.data[i + 3]} - return 0} - function caml_gr_window_id(a) - {caml_failwith("caml_gr_window_id not Implemented")} - function caml_js_on_ie() - {var ua=globalThis.navigator?globalThis.navigator.userAgent:""; - return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0} - function caml_int64_shift_right(x,s){return x.shift_right(s)} - function caml_ba_layout(ba){return ba.layout} - function caml_convert_raw_backtrace(){return [0]} - function caml_array_set(array,index,newval) - {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); - array[index + 1] = newval; - return 0} - function caml_bytes_greaterequal(s1,s2) - {return caml_bytes_lessequal(s2,s1)} - function ml_z_perfect_power(z) - {z = bigInt(z); - var zero=bigInt(0),one=bigInt(1); - if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1; - var log2z=ml_z_numbits(z.abs()); - for(var b=2;b <= log2z;b++) - {if(z.lt(zero) && b % 2 == 0)continue; - var zp=z.abs(),p=bigInt(ml_z_root(zp,b)); - if(z.lt(zero))p = p.negate(); - var r=bigInt(ml_z_pow(p,b)); - if(z.equals(r))return 1} - return 0} - function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0} - function ml_z_init(unit) - {caml_custom_ops["_z"] - = - {serialize:caml_zarith_marshal, - deserialize:caml_zarith_unmarshal, - hash:ml_z_hash, - compare:ml_z_compare}; - return 0} - function caml_gr_doc_of_state(state) - {if(state.canvas.ownerDocument)return state.canvas.ownerDocument} - function caml_ml_output_int(chanid,i) - {var - arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF], - s=caml_string_of_array(arr); - caml_ml_output(chanid,s,0,4); - return 0} - function caml_obj_with_tag(tag,x) - {var l=x.length,a=new Array(l); - a[0] = tag; - for(var i=1;i < l;i++)a[i] = x[i]; - return a} - function caml_ml_channel_size(chanid) - {var chan=caml_ml_channels[chanid];return chan.file.length()} - function caml_raw_backtrace_slot() - {caml_invalid_argument - ("Printexc.get_raw_backtrace_slot: index out of bounds")} - function caml_hexstring_of_float(x,prec,style) - {if(! isFinite(x)) - {if(isNaN(x))return caml_string_of_jsstring("nan"); - return caml_string_of_jsstring(x > 0?"infinity":"-infinity")} - var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1; - if(sign)x = - x; - var exp=0; - if(x == 0) - ; - else - if(x < 1) - while(x < 1 && exp > - 1022){x *= 2;exp--} - else - while(x >= 2){x /= 2;exp++} - var exp_sign=exp < 0?"":"+",sign_str=""; - if(sign) - sign_str = "-"; - else - switch(style) - {case 43:sign_str = "+";break; - case 32:sign_str = " ";break; - default:break} - if(prec >= 0 && prec < 13) - {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst} - var x_str=x.toString(16); - if(prec >= 0) - {var idx=x_str.indexOf("."); - if(idx < 0) - x_str += "." + caml_str_repeat(prec,"0"); - else - {var size=idx + 1 + prec; - if(x_str.length < size) - x_str += caml_str_repeat(size - x_str.length,"0"); - else - x_str = x_str.substr(0,size)}} - return caml_string_of_jsstring - (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))} - function caml_js_wrap_meth_callback_strict(arity,f) - {return function() - {var args=new Array(arity + 1),len=Math.min(arguments.length,arity); - args[0] = this; - for(var i=0;i < len;i++)args[i + 1] = arguments[i]; - return caml_call_gen(f,args)}} - function ml_z_format(fmt,z1) - {z1 = bigInt(z1); - var - fmt=caml_jsbytes_of_string(fmt), - base=10, - cas=0, - width=0, - alt=0, - dir=0, - sign="", - pad=" ", - idx=0, - prefix=""; - while(fmt[idx] == "%")idx++; - for(;;idx++) - if(fmt[idx] == "#") - alt = 1; - else - if(fmt[idx] == "0") - pad = "0"; - else - if(fmt[idx] == "-") - dir = 1; - else - if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break; - if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()} - for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++) - width = 10 * width + + fmt[idx]; - switch(fmt[idx]) - {case "i": - case "d": - case "u":break; - case "b":base = 2;if(alt)prefix = "0b";break; - case "o":base = 8;if(alt)prefix = "0o";break; - case "x":base = 16;if(alt)prefix = "0x";break; - case "X":base = 16;if(alt)prefix = "0X";cas = 1;break; - default:caml_failwith("Unsupported format '" + fmt + "'")} - if(dir)pad = " "; - var res=z1.toString(base); - if(cas === 1)res = res.toUpperCase(); - var size=res.length; - if(pad == " ") - if(dir) - {res = sign + prefix + res;for(;res.length < width;)res = res + pad} - else - {res = sign + prefix + res;for(;res.length < width;)res = pad + res} - else - {var pre=sign + prefix; - for(;res.length + pre.length < width;)res = pad + res; - res = pre + res} - return caml_string_of_jsbytes(res)} - function ml_z_to_int64(z1) - {z1 = bigInt(z1); - if(! ml_z_fits_int64(z1)) - caml_raise_constant(caml_named_value("ml_z_overflow")); - var - mask=bigInt(0xffffffff), - lo=z1.and(mask).toJSNumber(), - hi=z1.shiftRight(32).and(mask).toJSNumber(), - x=caml_int64_create_lo_hi(lo,hi); - return x} - function ml_z_size(z1) - {return bigInt(z1).toArray(Math.pow(2,32)).value.length} - function caml_backtrace_status(){return 0} - function caml_sys_argv(a){return caml_argv} - function caml_install_signal_handler(){return 0} - function caml_ba_fill(ba,v){ba.fill(v);return 0} - function caml_modf_float(x) - {if(isFinite(x)) - {var neg=1 / x < 0; - x = Math.abs(x); - var i=Math.floor(x),f=x - i; - if(neg){i = - i;f = - f} - return [0,f,i]} - if(isNaN(x))return [0,NaN,NaN]; - return [0,1 / x,x]} - function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]} - function caml_float_compare(x,y) - {if(x === y)return 0; - if(x < y)return - 1; - if(x > y)return 1; - if(x === x)return 1; - if(y === y)return - 1; - return 0} - function ml_z_shift_right_trunc(z1,z2) - {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))} - function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)} - function caml_parse_engine(tables,env,cmd,arg) - {var - ERRCODE=256, - loop=6, - testshift=7, - shift=8, - shift_recover=9, - reduce=10, - READ_TOKEN=0, - RAISE_PARSE_ERROR=1, - GROW_STACKS_1=2, - GROW_STACKS_2=3, - COMPUTE_SEMANTIC_ACTION=4, - CALL_ERROR_FUNCTION=5, - env_s_stack=1, - env_v_stack=2, - env_symb_start_stack=3, - env_symb_end_stack=4, - env_stacksize=5, - env_stackbase=6, - env_curr_char=7, - env_lval=8, - env_symb_start=9, - env_symb_end=10, - env_asp=11, - env_rule_len=12, - env_rule_number=13, - env_sp=14, - env_state=15, - env_errflag=16, - tbl_transl_const=2, - tbl_transl_block=3, - tbl_lhs=4, - tbl_len=5, - tbl_defred=6, - tbl_dgoto=7, - tbl_sindex=8, - tbl_rindex=9, - tbl_gindex=10, - tbl_tablesize=11, - tbl_table=12, - tbl_check=13; - if(! tables.dgoto) - {tables.defred = caml_lex_array(tables[tbl_defred]); - tables.sindex = caml_lex_array(tables[tbl_sindex]); - tables.check = caml_lex_array(tables[tbl_check]); - tables.rindex = caml_lex_array(tables[tbl_rindex]); - tables.table = caml_lex_array(tables[tbl_table]); - tables.len = caml_lex_array(tables[tbl_len]); - tables.lhs = caml_lex_array(tables[tbl_lhs]); - tables.gindex = caml_lex_array(tables[tbl_gindex]); - tables.dgoto = caml_lex_array(tables[tbl_dgoto])} - var - res=0, - n, - n1, - n2, - state1, - sp=env[env_sp], - state=env[env_state], - errflag=env[env_errflag]; - exit: - for(;;) - switch(cmd) - {case 0:state = 0;errflag = 0; - case 6: - n = tables.defred[state]; - if(n != 0){cmd = reduce;break} - if(env[env_curr_char] >= 0){cmd = testshift;break} - res = READ_TOKEN; - break exit; - case 1: - if(arg instanceof Array) - {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1]; - env[env_lval] = arg[1]} - else - {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; - env[env_lval] = 0} - case 7: - n1 = tables.sindex[state]; - n2 = n1 + env[env_curr_char]; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - env[env_curr_char]) - {cmd = shift;break} - n1 = tables.rindex[state]; - n2 = n1 + env[env_curr_char]; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - env[env_curr_char]) - {n = tables.table[n2];cmd = reduce;break} - if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit} - case 5: - if(errflag < 3) - {errflag = 3; - for(;;) - {state1 = env[env_s_stack][sp + 1]; - n1 = tables.sindex[state1]; - n2 = n1 + ERRCODE; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - ERRCODE) - {cmd = shift_recover;break} - else - {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} - else - {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; - env[env_curr_char] = - 1; - cmd = loop; - break} - case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; - case 9: - state = tables.table[n2]; - sp++; - if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} - case 2: - env[env_s_stack][sp + 1] = state; - env[env_v_stack][sp + 1] = env[env_lval]; - env[env_symb_start_stack][sp + 1] = env[env_symb_start]; - env[env_symb_end_stack][sp + 1] = env[env_symb_end]; - cmd = loop; - break; - case 10: - var m=tables.len[n]; - env[env_asp] = sp; - env[env_rule_number] = n; - env[env_rule_len] = m; - sp = sp - m + 1; - m = tables.lhs[n]; - state1 = env[env_s_stack][sp]; - n1 = tables.gindex[m]; - n2 = n1 + state1; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - state1) - state = tables.table[n2]; - else - state = tables.dgoto[m]; - if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit} - case 3:res = COMPUTE_SEMANTIC_ACTION;break exit; - case 4: - env[env_s_stack][sp + 1] = state; - env[env_v_stack][sp + 1] = arg; - var asp=env[env_asp]; - env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; - if(sp > asp) - env[env_symb_start_stack][sp + 1] - = - env[env_symb_end_stack][asp + 1]; - cmd = loop; - break; - default:return RAISE_PARSE_ERROR} - env[env_sp] = sp; - env[env_state] = state; - env[env_errflag] = errflag; - return res} - function caml_update_dummy(x,y) - {if(typeof y === "function"){x.fun = y;return 0} - if(y.fun){x.fun = y.fun;return 0} - var i=y.length; - while(i--)x[i] = y[i]; - return 0} - function caml_array_fill(array,ofs,len,v) - {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0} - function ml_z_install_frametable(unit){return 0} - function caml_sys_mkdir(name,perm) - {var root=resolve_fs_device(name); - root.device.mkdir(root.rest,perm); - return 0} - function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)} - function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)} - function caml_gr_make_image(arr) - {var - s=caml_gr_state_get(), - h=arr.length - 1, - w=arr[1].length - 1, - im=s.context.createImageData(w,h); - for(var i=0;i < h;i++) - for(var j=0;j < w;j++) - {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4; - if(c == - 1) - {im.data[o + 0] = 0; - im.data[o + 1] = 0; - im.data[o + 2] = 0; - im.data[o + 3] = 0} - else - {im.data[o + 0] = c >> 16 & 0xff; - im.data[o + 1] = c >> 8 & 0xff; - im.data[o + 2] = c >> 0 & 0Xff; - im.data[o + 3] = 0xff}} - return im} - function caml_ml_set_channel_output(chanid,f) - {var chan=caml_ml_channels[chanid]; - caml_global_data.fds[chan.fd].output = f; - return 0} - function caml_read_file_content(name) - {var - name=typeof name == "string"?caml_string_of_jsbytes(name):name, - root=resolve_fs_device(name); - if(root.device.exists(root.rest)) - {var - file=root.device.open(root.rest,{rdonly:1}), - len=file.length(), - buf=caml_create_bytes(len); - file.read(0,buf,0,len); - return caml_string_of_bytes(buf)} - caml_raise_no_such_file(caml_jsbytes_of_string(name))} - function caml_js_to_float(x){return x} - function caml_setup_uncaught_exception_handler() - {var g=globalThis; - if(g.process && g.process.on) - g.process.on - ("uncaughtException", - function(err,origin) - {caml_fatal_uncaught_exception(err);g.process.exit(2)}); - else - if(g.addEventListener) - g.addEventListener - ("error", - function(event) - {if(event.error)caml_fatal_uncaught_exception(event.error)})} - caml_setup_uncaught_exception_handler(); - globalThis.jsoo_runtime - = - {ml_z_normalize:ml_z_normalize, - ml_z_mul_overflows:ml_z_mul_overflows, - ml_z_init:ml_z_init, - ml_z_install_frametable:ml_z_install_frametable, - ml_z_neg:ml_z_neg, - ml_z_add:ml_z_add, - ml_z_sub:ml_z_sub, - ml_z_mul:ml_z_mul, - ml_z_div:ml_z_div, - ml_z_cdiv:ml_z_cdiv, - ml_z_fdiv:ml_z_fdiv, - ml_z_rem:ml_z_rem, - ml_z_div_rem:ml_z_div_rem, - ml_z_succ:ml_z_succ, - ml_z_pred:ml_z_pred, - ml_z_abs:ml_z_abs, - ml_z_logand:ml_z_logand, - ml_z_logor:ml_z_logor, - ml_z_logxor:ml_z_logxor, - ml_z_lognot:ml_z_lognot, - ml_z_shift_left:ml_z_shift_left, - ml_z_shift_right:ml_z_shift_right, - ml_z_shift_right_trunc:ml_z_shift_right_trunc, - ml_z_of_int:ml_z_of_int, - ml_z_of_int32:ml_z_of_int32, - ml_z_of_nativeint:ml_z_of_nativeint, - ml_z_of_int64:ml_z_of_int64, - ml_z_of_float:ml_z_of_float, - ml_z_to_int:ml_z_to_int, - ml_z_to_int32:ml_z_to_int32, - ml_z_to_int64:ml_z_to_int64, - ml_z_testbit:ml_z_testbit, - ml_z_to_nativeint:ml_z_to_nativeint, - ml_z_format:ml_z_format, - jsoo_z_of_js_string_base:jsoo_z_of_js_string_base, - ml_z_of_substring_base:ml_z_of_substring_base, - ml_z_compare:ml_z_compare, - ml_z_equal:ml_z_equal, - ml_z_sign:ml_z_sign, - ml_z_gcd:ml_z_gcd, - ml_z_numbits:ml_z_numbits, - ml_z_fits_int:ml_z_fits_int, - ml_z_fits_int32:ml_z_fits_int32, - ml_z_fits_int64:ml_z_fits_int64, - ml_z_fits_nativeint:ml_z_fits_nativeint, - ml_z_powm:ml_z_powm, - ml_z_pow:ml_z_pow, - ml_z_hash:ml_z_hash, - ml_z_to_bits:ml_z_to_bits, - ml_z_of_bits:ml_z_of_bits, - ml_z_powm_sec:ml_z_powm_sec, - ml_z_root:ml_z_root, - ml_z_invert:ml_z_invert, - ml_z_perfect_power:ml_z_perfect_power, - ml_z_perfect_square:ml_z_perfect_square, - ml_z_probab_prime:ml_z_probab_prime, - ml_z_nextprime:ml_z_nextprime, - ml_z_extract:ml_z_extract, - ml_z_gcdext_intern:ml_z_gcdext_intern, - ml_z_sqrt:ml_z_sqrt, - ml_z_sqrt_rem:ml_z_sqrt_rem, - ml_z_trailing_zeros:ml_z_trailing_zeros, - ml_z_popcount:ml_z_popcount, - ml_z_hamdist:ml_z_hamdist, - ml_z_size:ml_z_size, - ml_z_divexact:ml_z_divexact, - caml_zarith_marshal:caml_zarith_marshal, - caml_zarith_unmarshal:caml_zarith_unmarshal, - bigInt:bigInt, - caml_ephe_key_offset:caml_ephe_key_offset, - caml_ephe_data_offset:caml_ephe_data_offset, - caml_weak_create:caml_weak_create, - caml_weak_set:caml_weak_set, - caml_weak_get:caml_weak_get, - caml_weak_get_copy:caml_weak_get_copy, - caml_weak_check:caml_weak_check, - caml_weak_blit:caml_weak_blit, - caml_ephe_create:caml_ephe_create, - caml_ephe_blit_key:caml_ephe_blit_key, - caml_ephe_get_key:caml_ephe_get_key, - caml_ephe_get_key_copy:caml_ephe_get_key_copy, - caml_ephe_check_key:caml_ephe_check_key, - caml_ephe_set_key:caml_ephe_set_key, - caml_ephe_unset_key:caml_ephe_unset_key, - caml_ephe_blit_data:caml_ephe_blit_data, - caml_ephe_get_data:caml_ephe_get_data, - caml_ephe_get_data_copy:caml_ephe_get_data_copy, - caml_ephe_set_data:caml_ephe_set_data, - caml_ephe_unset_data:caml_ephe_unset_data, - caml_ephe_check_data:caml_ephe_check_data, - unix_gettimeofday:unix_gettimeofday, - unix_time:unix_time, - unix_gmtime:unix_gmtime, - unix_localtime:unix_localtime, - unix_mktime:unix_mktime, - win_startup:win_startup, - win_cleanup:win_cleanup, - win_handle_fd:win_handle_fd, - unix_isatty:unix_isatty, - make_unix_err_args:make_unix_err_args, - unix_stat:unix_stat, - unix_stat_64:unix_stat_64, - unix_lstat:unix_lstat, - unix_lstat_64:unix_lstat_64, - unix_mkdir:unix_mkdir, - unix_rmdir:unix_rmdir, - unix_symlink:unix_symlink, - unix_readlink:unix_readlink, - unix_unlink:unix_unlink, - unix_getuid:unix_getuid, - unix_getpwuid:unix_getpwuid, - unix_has_symlink:unix_has_symlink, - re_match:re_match, - re_search_forward:re_search_forward, - re_search_backward:re_search_backward, - re_string_match:re_string_match, - re_partial_match:re_partial_match, - re_replacement_text:re_replacement_text, - caml_raise_sys_error:caml_raise_sys_error, - caml_sys_exit:caml_sys_exit, - caml_is_special_exception:caml_is_special_exception, - caml_format_exception:caml_format_exception, - caml_fatal_uncaught_exception:caml_fatal_uncaught_exception, - caml_set_static_env:caml_set_static_env, - caml_sys_getenv:caml_sys_getenv, - caml_sys_unsafe_getenv:caml_sys_unsafe_getenv, - caml_argv:caml_argv, - caml_executable_name:caml_executable_name, - caml_sys_get_argv:caml_sys_get_argv, - caml_sys_argv:caml_sys_argv, - caml_sys_modify_argv:caml_sys_modify_argv, - caml_sys_executable_name:caml_sys_executable_name, - caml_sys_system_command:caml_sys_system_command, - caml_sys_time:caml_sys_time, - caml_sys_time_include_children:caml_sys_time_include_children, - caml_sys_random_seed:caml_sys_random_seed, - caml_sys_const_big_endian:caml_sys_const_big_endian, - caml_sys_const_word_size:caml_sys_const_word_size, - caml_sys_const_int_size:caml_sys_const_int_size, - caml_sys_const_max_wosize:caml_sys_const_max_wosize, - caml_sys_const_ostype_unix:caml_sys_const_ostype_unix, - caml_sys_const_ostype_win32:caml_sys_const_ostype_win32, - caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin, - caml_sys_const_backend_type:caml_sys_const_backend_type, - os_type:os_type, - caml_sys_get_config:caml_sys_get_config, - caml_sys_isatty:caml_sys_isatty, - caml_runtime_variant:caml_runtime_variant, - caml_runtime_parameters:caml_runtime_parameters, - caml_install_signal_handler:caml_install_signal_handler, - unix_inet_addr_of_string:unix_inet_addr_of_string, - caml_runtime_warnings:caml_runtime_warnings, - caml_ml_enable_runtime_warnings:caml_ml_enable_runtime_warnings, - caml_ml_runtime_warnings_enabled:caml_ml_runtime_warnings_enabled, - caml_spacetime_enabled:caml_spacetime_enabled, - caml_sys_const_naked_pointers_checked: - caml_sys_const_naked_pointers_checked, - caml_register_channel_for_spacetime:caml_register_channel_for_spacetime, - caml_spacetime_only_works_for_native_code: - caml_spacetime_only_works_for_native_code, - caml_call_gen:caml_call_gen, - caml_named_values:caml_named_values, - caml_register_named_value:caml_register_named_value, - caml_named_value:caml_named_value, - caml_global_data:caml_global_data, - caml_register_global:caml_register_global, - caml_get_global_data:caml_get_global_data, - caml_is_printable:caml_is_printable, - caml_parse_engine:caml_parse_engine, - caml_set_parser_trace:caml_set_parser_trace, - caml_update_dummy:caml_update_dummy, - caml_obj_is_block:caml_obj_is_block, - caml_obj_tag:caml_obj_tag, - caml_obj_set_tag:caml_obj_set_tag, - caml_obj_block:caml_obj_block, - caml_obj_with_tag:caml_obj_with_tag, - caml_obj_dup:caml_obj_dup, - caml_obj_truncate:caml_obj_truncate, - caml_obj_make_forward:caml_obj_make_forward, - caml_lazy_make_forward:caml_lazy_make_forward, - caml_get_public_method:caml_get_public_method, - caml_oo_last_id:caml_oo_last_id, - caml_set_oo_id:caml_set_oo_id, - caml_fresh_oo_id:caml_fresh_oo_id, - caml_obj_raw_field:caml_obj_raw_field, - caml_obj_set_raw_field:caml_obj_set_raw_field, - caml_obj_reachable_words:caml_obj_reachable_words, - caml_obj_add_offset:caml_obj_add_offset, - initialize_nat:initialize_nat, - MlNat:MlNat, - caml_hash_nat:caml_hash_nat, - nat_of_array:nat_of_array, - create_nat:create_nat, - set_to_zero_nat:set_to_zero_nat, - blit_nat:blit_nat, - set_digit_nat:set_digit_nat, - nth_digit_nat:nth_digit_nat, - set_digit_nat_native:set_digit_nat_native, - nth_digit_nat_native:nth_digit_nat_native, - num_digits_nat:num_digits_nat, - num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit, - is_digit_int:is_digit_int, - is_digit_zero:is_digit_zero, - is_digit_odd:is_digit_odd, - incr_nat:incr_nat, - add_nat:add_nat, - complement_nat:complement_nat, - decr_nat:decr_nat, - sub_nat:sub_nat, - mult_digit_nat:mult_digit_nat, - mult_nat:mult_nat, - square_nat:square_nat, - shift_left_nat:shift_left_nat, - div_helper:div_helper, - div_digit_nat:div_digit_nat, - div_nat:div_nat, - shift_right_nat:shift_right_nat, - compare_digits_nat:compare_digits_nat, - compare_nat:compare_nat, - compare_nat_real:compare_nat_real, - land_digit_nat:land_digit_nat, - lor_digit_nat:lor_digit_nat, - lxor_digit_nat:lxor_digit_nat, - serialize_nat:serialize_nat, - deserialize_nat:deserialize_nat, - caml_str_repeat:caml_str_repeat, - caml_subarray_to_jsbytes:caml_subarray_to_jsbytes, - caml_utf8_of_utf16:caml_utf8_of_utf16, - caml_utf16_of_utf8:caml_utf16_of_utf8, - jsoo_is_ascii:jsoo_is_ascii, - caml_bytes_unsafe_get:caml_bytes_unsafe_get, - caml_bytes_unsafe_set:caml_bytes_unsafe_set, - caml_string_bound_error:caml_string_bound_error, - caml_bytes_bound_error:caml_bytes_bound_error, - caml_string_get:caml_string_get, - caml_string_get16:caml_string_get16, - caml_bytes_get16:caml_bytes_get16, - caml_string_get32:caml_string_get32, - caml_bytes_get32:caml_bytes_get32, - caml_string_get64:caml_string_get64, - caml_bytes_get64:caml_bytes_get64, - caml_bytes_get:caml_bytes_get, - caml_string_set:caml_string_set, - caml_bytes_set16:caml_bytes_set16, - caml_string_set16:caml_string_set16, - caml_bytes_set32:caml_bytes_set32, - caml_string_set32:caml_string_set32, - caml_bytes_set64:caml_bytes_set64, - caml_string_set64:caml_string_set64, - caml_bytes_set:caml_bytes_set, - caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring, - MlBytes:MlBytes, - caml_convert_string_to_bytes:caml_convert_string_to_bytes, - caml_convert_bytes_to_array:caml_convert_bytes_to_array, - caml_array_of_bytes:caml_array_of_bytes, - caml_array_of_string:caml_array_of_string, - caml_create_string:caml_create_string, - caml_create_bytes:caml_create_bytes, - caml_string_of_array:caml_string_of_array, - caml_bytes_of_array:caml_bytes_of_array, - caml_bytes_compare:caml_bytes_compare, - caml_bytes_equal:caml_bytes_equal, - caml_string_notequal:caml_string_notequal, - caml_bytes_notequal:caml_bytes_notequal, - caml_bytes_lessequal:caml_bytes_lessequal, - caml_bytes_lessthan:caml_bytes_lessthan, - caml_string_greaterequal:caml_string_greaterequal, - caml_bytes_greaterequal:caml_bytes_greaterequal, - caml_string_greaterthan:caml_string_greaterthan, - caml_bytes_greaterthan:caml_bytes_greaterthan, - caml_fill_bytes:caml_fill_bytes, - caml_fill_string:caml_fill_string, - caml_blit_bytes:caml_blit_bytes, - caml_blit_string:caml_blit_string, - caml_ml_bytes_length:caml_ml_bytes_length, - caml_bytes_of_jsbytes:caml_bytes_of_jsbytes, - caml_string_unsafe_get:caml_string_unsafe_get, - caml_string_unsafe_set:caml_string_unsafe_set, - caml_ml_string_length:caml_ml_string_length, - caml_string_compare:caml_string_compare, - caml_string_equal:caml_string_equal, - caml_string_lessequal:caml_string_lessequal, - caml_string_lessthan:caml_string_lessthan, - caml_string_of_bytes:caml_string_of_bytes, - caml_bytes_of_string:caml_bytes_of_string, - caml_string_of_jsbytes:caml_string_of_jsbytes, - caml_jsbytes_of_string:caml_jsbytes_of_string, - caml_jsstring_of_string:caml_jsstring_of_string, - caml_string_of_jsstring:caml_string_of_jsstring, - caml_is_ml_bytes:caml_is_ml_bytes, - caml_ml_bytes_content:caml_ml_bytes_content, - caml_is_ml_string:caml_is_ml_string, - caml_js_to_byte_string:caml_js_to_byte_string, - caml_new_string:caml_new_string, - caml_js_from_string:caml_js_from_string, - caml_to_js_string:caml_to_js_string, - caml_js_to_string:caml_js_to_string, - caml_md5_chan:caml_md5_chan, - caml_md5_string:caml_md5_string, - caml_md5_bytes:caml_md5_bytes, - caml_marshal_constants:caml_marshal_constants, - MlStringReader:MlStringReader, - BigStringReader:BigStringReader, - caml_float_of_bytes:caml_float_of_bytes, - caml_input_value_from_string:caml_input_value_from_string, - caml_input_value_from_bytes:caml_input_value_from_bytes, - caml_int64_unmarshal:caml_int64_unmarshal, - caml_int64_marshal:caml_int64_marshal, - caml_int32_unmarshal:caml_int32_unmarshal, - caml_nativeint_unmarshal:caml_nativeint_unmarshal, - caml_custom_ops:caml_custom_ops, - caml_input_value_from_reader:caml_input_value_from_reader, - caml_marshal_data_size:caml_marshal_data_size, - MlObjectTable:MlObjectTable, - caml_legacy_custom_code:caml_legacy_custom_code, - caml_output_val:caml_output_val, - caml_output_value_to_string:caml_output_value_to_string, - caml_output_value_to_bytes:caml_output_value_to_bytes, - caml_output_value_to_buffer:caml_output_value_to_buffer, - caml_lex_array:caml_lex_array, - caml_lex_engine:caml_lex_engine, - caml_new_lex_engine:caml_new_lex_engine, - caml_js_on_ie:caml_js_on_ie, - caml_js_html_escape:caml_js_html_escape, - caml_js_html_entities:caml_js_html_entities, - caml_js_get_console:caml_js_get_console, - caml_xmlhttprequest_create:caml_xmlhttprequest_create, - caml_js_error_of_exception:caml_js_error_of_exception, - caml_js_pure_expr:caml_js_pure_expr, - caml_js_set:caml_js_set, - caml_js_get:caml_js_get, - caml_js_delete:caml_js_delete, - caml_js_instanceof:caml_js_instanceof, - caml_js_typeof:caml_js_typeof, - caml_trampoline:caml_trampoline, - caml_trampoline_return:caml_trampoline_return, - js_print_stdout:js_print_stdout, - js_print_stderr:js_print_stderr, - caml_is_js:caml_is_js, - caml_wrap_exception:caml_wrap_exception, - caml_exn_with_js_backtrace:caml_exn_with_js_backtrace, - caml_js_error_option_of_exception:caml_js_error_option_of_exception, - caml_js_from_bool:caml_js_from_bool, - caml_js_to_bool:caml_js_to_bool, - caml_js_from_float:caml_js_from_float, - caml_js_to_float:caml_js_to_float, - caml_js_from_array:caml_js_from_array, - caml_js_to_array:caml_js_to_array, - caml_list_of_js_array:caml_list_of_js_array, - caml_list_to_js_array:caml_list_to_js_array, - caml_js_var:caml_js_var, - caml_js_call:caml_js_call, - caml_js_fun_call:caml_js_fun_call, - caml_js_meth_call:caml_js_meth_call, - caml_js_new:caml_js_new, - caml_ojs_new_arr:caml_ojs_new_arr, - caml_js_wrap_callback:caml_js_wrap_callback, - caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments, - caml_js_wrap_callback_strict:caml_js_wrap_callback_strict, - caml_js_wrap_meth_callback:caml_js_wrap_meth_callback, - caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments, - caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict, - caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe, - caml_js_equals:caml_js_equals, - caml_js_eval_string:caml_js_eval_string, - caml_js_expr:caml_js_expr, - caml_pure_js_expr:caml_pure_js_expr, - caml_js_object:caml_js_object, - caml_sys_close:caml_sys_close, - caml_std_output:caml_std_output, - caml_sys_open:caml_sys_open, - caml_ml_set_channel_name:caml_ml_set_channel_name, - caml_ml_channels:caml_ml_channels, - caml_ml_out_channels_list:caml_ml_out_channels_list, - caml_ml_open_descriptor_out:caml_ml_open_descriptor_out, - caml_ml_open_descriptor_in:caml_ml_open_descriptor_in, - caml_channel_descriptor:caml_channel_descriptor, - win_filedescr_of_channel:win_filedescr_of_channel, - caml_ml_set_binary_mode:caml_ml_set_binary_mode, - caml_ml_close_channel:caml_ml_close_channel, - caml_ml_channel_size:caml_ml_channel_size, - caml_ml_channel_size_64:caml_ml_channel_size_64, - caml_ml_set_channel_output:caml_ml_set_channel_output, - caml_ml_set_channel_refill:caml_ml_set_channel_refill, - caml_ml_refill_input:caml_ml_refill_input, - caml_ml_may_refill_input:caml_ml_may_refill_input, - caml_ml_input:caml_ml_input, - caml_input_value:caml_input_value, - caml_ml_input_char:caml_ml_input_char, - caml_ml_input_int:caml_ml_input_int, - caml_ml_seek_in:caml_ml_seek_in, - caml_ml_seek_in_64:caml_ml_seek_in_64, - caml_ml_pos_in:caml_ml_pos_in, - caml_ml_pos_in_64:caml_ml_pos_in_64, - caml_ml_input_scan_line:caml_ml_input_scan_line, - caml_ml_flush:caml_ml_flush, - caml_ml_output_bytes:caml_ml_output_bytes, - caml_ml_output:caml_ml_output, - caml_ml_output_char:caml_ml_output_char, - caml_output_value:caml_output_value, - caml_ml_seek_out:caml_ml_seek_out, - caml_ml_seek_out_64:caml_ml_seek_out_64, - caml_ml_pos_out:caml_ml_pos_out, - caml_ml_pos_out_64:caml_ml_pos_out_64, - caml_ml_output_int:caml_ml_output_int, - caml_ml_is_buffered:caml_ml_is_buffered, - caml_ml_set_buffered:caml_ml_set_buffered, - caml_format_int:caml_format_int, - caml_parse_sign_and_base:caml_parse_sign_and_base, - caml_parse_digit:caml_parse_digit, - caml_int_of_string:caml_int_of_string, - caml_mul:caml_mul, - caml_div:caml_div, - caml_mod:caml_mod, - caml_bswap16:caml_bswap16, - caml_int32_bswap:caml_int32_bswap, - caml_int64_bswap:caml_int64_bswap, - caml_int64_offset:caml_int64_offset, - MlInt64:MlInt64, - caml_int64_ult:caml_int64_ult, - caml_int64_compare:caml_int64_compare, - caml_int64_neg:caml_int64_neg, - caml_int64_add:caml_int64_add, - caml_int64_sub:caml_int64_sub, - caml_int64_mul:caml_int64_mul, - caml_int64_is_zero:caml_int64_is_zero, - caml_int64_is_negative:caml_int64_is_negative, - caml_int64_and:caml_int64_and, - caml_int64_or:caml_int64_or, - caml_int64_xor:caml_int64_xor, - caml_int64_shift_left:caml_int64_shift_left, - caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned, - caml_int64_shift_right:caml_int64_shift_right, - caml_int64_div:caml_int64_div, - caml_int64_mod:caml_int64_mod, - caml_int64_of_int32:caml_int64_of_int32, - caml_int64_to_int32:caml_int64_to_int32, - caml_int64_to_float:caml_int64_to_float, - caml_int64_of_float:caml_int64_of_float, - caml_int64_format:caml_int64_format, - caml_int64_of_string:caml_int64_of_string, - caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi, - caml_int64_create_lo_hi:caml_int64_create_lo_hi, - caml_int64_lo32:caml_int64_lo32, - caml_int64_hi32:caml_int64_hi32, - caml_int64_of_bytes:caml_int64_of_bytes, - caml_int64_to_bytes:caml_int64_to_bytes, - caml_int64_hash:caml_int64_hash, - jsoo_floor_log2:jsoo_floor_log2, - caml_int64_bits_of_float:caml_int64_bits_of_float, - caml_int32_bits_of_float:caml_int32_bits_of_float, - caml_hexstring_of_float:caml_hexstring_of_float, - caml_int64_float_of_bits:caml_int64_float_of_bits, - caml_nextafter_float:caml_nextafter_float, - caml_trunc_float:caml_trunc_float, - caml_int32_float_of_bits:caml_int32_float_of_bits, - caml_classify_float:caml_classify_float, - caml_modf_float:caml_modf_float, - caml_ldexp_float:caml_ldexp_float, - caml_frexp_float:caml_frexp_float, - caml_float_compare:caml_float_compare, - caml_copysign_float:caml_copysign_float, - caml_signbit_float:caml_signbit_float, - caml_expm1_float:caml_expm1_float, - caml_exp2_float:caml_exp2_float, - caml_log1p_float:caml_log1p_float, - caml_log2_float:caml_log2_float, - caml_hypot_float:caml_hypot_float, - caml_log10_float:caml_log10_float, - caml_cosh_float:caml_cosh_float, - caml_acosh_float:caml_acosh_float, - caml_sinh_float:caml_sinh_float, - caml_asinh_float:caml_asinh_float, - caml_tanh_float:caml_tanh_float, - caml_atanh_float:caml_atanh_float, - caml_round_float:caml_round_float, - caml_cbrt_float:caml_cbrt_float, - caml_erf_float:caml_erf_float, - caml_erfc_float:caml_erfc_float, - caml_fma_float:caml_fma_float, - caml_format_float:caml_format_float, - caml_float_of_string:caml_float_of_string, - caml_hash_univ_param:caml_hash_univ_param, - caml_hash_mix_int:caml_hash_mix_int, - caml_hash_mix_final:caml_hash_mix_final, - caml_hash_mix_float:caml_hash_mix_float, - caml_hash_mix_int64:caml_hash_mix_int64, - caml_hash_mix_jsbytes:caml_hash_mix_jsbytes, - caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr, - caml_hash_mix_bytes:caml_hash_mix_bytes, - caml_hash_mix_string:caml_hash_mix_string, - caml_hash:caml_hash, - caml_gr_state:caml_gr_state, - caml_gr_state_get:caml_gr_state_get, - caml_gr_state_set:caml_gr_state_set, - caml_gr_open_graph:caml_gr_open_graph, - caml_gr_state_init:caml_gr_state_init, - caml_gr_state_create:caml_gr_state_create, - caml_gr_doc_of_state:caml_gr_doc_of_state, - caml_gr_close_graph:caml_gr_close_graph, - caml_gr_set_window_title:caml_gr_set_window_title, - caml_gr_resize_window:caml_gr_resize_window, - caml_gr_clear_graph:caml_gr_clear_graph, - caml_gr_size_x:caml_gr_size_x, - caml_gr_size_y:caml_gr_size_y, - caml_gr_set_color:caml_gr_set_color, - caml_gr_plot:caml_gr_plot, - caml_gr_point_color:caml_gr_point_color, - caml_gr_moveto:caml_gr_moveto, - caml_gr_current_x:caml_gr_current_x, - caml_gr_current_y:caml_gr_current_y, - caml_gr_lineto:caml_gr_lineto, - caml_gr_draw_rect:caml_gr_draw_rect, - caml_gr_arc_aux:caml_gr_arc_aux, - caml_gr_draw_arc:caml_gr_draw_arc, - caml_gr_set_line_width:caml_gr_set_line_width, - caml_gr_fill_rect:caml_gr_fill_rect, - caml_gr_fill_poly:caml_gr_fill_poly, - caml_gr_fill_arc:caml_gr_fill_arc, - caml_gr_draw_str:caml_gr_draw_str, - caml_gr_draw_char:caml_gr_draw_char, - caml_gr_draw_string:caml_gr_draw_string, - caml_gr_set_font:caml_gr_set_font, - caml_gr_set_text_size:caml_gr_set_text_size, - caml_gr_text_size:caml_gr_text_size, - caml_gr_make_image:caml_gr_make_image, - caml_gr_dump_image:caml_gr_dump_image, - caml_gr_draw_image:caml_gr_draw_image, - caml_gr_create_image:caml_gr_create_image, - caml_gr_blit_image:caml_gr_blit_image, - caml_gr_sigio_handler:caml_gr_sigio_handler, - caml_gr_sigio_signal:caml_gr_sigio_signal, - caml_gr_wait_event:caml_gr_wait_event, - caml_gr_synchronize:caml_gr_synchronize, - caml_gr_remember_mode:caml_gr_remember_mode, - caml_gr_display_mode:caml_gr_display_mode, - caml_gr_window_id:caml_gr_window_id, - caml_gr_open_subwindow:caml_gr_open_subwindow, - caml_gr_close_subwindow:caml_gr_close_subwindow, - caml_gc_minor:caml_gc_minor, - caml_gc_major:caml_gc_major, - caml_gc_full_major:caml_gc_full_major, - caml_gc_compaction:caml_gc_compaction, - caml_gc_counters:caml_gc_counters, - caml_gc_quick_stat:caml_gc_quick_stat, - caml_gc_stat:caml_gc_stat, - caml_gc_set:caml_gc_set, - caml_gc_get:caml_gc_get, - caml_memprof_set:caml_memprof_set, - caml_final_register:caml_final_register, - caml_final_register_called_without_value: - caml_final_register_called_without_value, - caml_final_release:caml_final_release, - caml_memprof_start:caml_memprof_start, - caml_memprof_stop:caml_memprof_stop, - caml_eventlog_resume:caml_eventlog_resume, - caml_eventlog_pause:caml_eventlog_pause, - caml_gc_huge_fallback_count:caml_gc_huge_fallback_count, - caml_gc_major_slice:caml_gc_major_slice, - caml_gc_minor_words:caml_gc_minor_words, - caml_get_minor_free:caml_get_minor_free, - caml_get_major_bucket:caml_get_major_bucket, - caml_get_major_credit:caml_get_major_credit, - fs_node_supported:fs_node_supported, - MlNodeDevice:MlNodeDevice, - MlNodeFile:MlNodeFile, - MlFakeDevice:MlFakeDevice, - MlFakeFile:MlFakeFile, - caml_trailing_slash:caml_trailing_slash, - caml_current_dir:caml_current_dir, - caml_get_root:caml_get_root, - caml_root:caml_root, - MlFile:MlFile, - path_is_absolute:path_is_absolute, - caml_make_path:caml_make_path, - jsoo_mount_point:jsoo_mount_point, - caml_list_mount_point:caml_list_mount_point, - resolve_fs_device:resolve_fs_device, - caml_mount_autoload:caml_mount_autoload, - caml_unmount:caml_unmount, - caml_sys_getcwd:caml_sys_getcwd, - caml_sys_chdir:caml_sys_chdir, - caml_raise_no_such_file:caml_raise_no_such_file, - caml_raise_not_a_dir:caml_raise_not_a_dir, - caml_sys_file_exists:caml_sys_file_exists, - caml_sys_read_directory:caml_sys_read_directory, - caml_sys_remove:caml_sys_remove, - caml_sys_is_directory:caml_sys_is_directory, - caml_sys_rename:caml_sys_rename, - caml_sys_mkdir:caml_sys_mkdir, - caml_sys_rmdir:caml_sys_rmdir, - caml_ba_map_file:caml_ba_map_file, - caml_ba_map_file_bytecode:caml_ba_map_file_bytecode, - jsoo_create_file_extern:jsoo_create_file_extern, - caml_fs_init:caml_fs_init, - caml_create_file:caml_create_file, - jsoo_create_file:jsoo_create_file, - caml_read_file_content:caml_read_file_content, - caml_parse_format:caml_parse_format, - caml_finish_formatting:caml_finish_formatting, - caml_raise_constant:caml_raise_constant, - caml_return_exn_constant:caml_return_exn_constant, - caml_raise_with_arg:caml_raise_with_arg, - caml_raise_with_args:caml_raise_with_args, - caml_raise_with_string:caml_raise_with_string, - caml_failwith:caml_failwith, - caml_invalid_argument:caml_invalid_argument, - caml_raise_end_of_file:caml_raise_end_of_file, - caml_raise_zero_divide:caml_raise_zero_divide, - caml_raise_not_found:caml_raise_not_found, - caml_array_bound_error:caml_array_bound_error, - caml_compare_val_tag:caml_compare_val_tag, - caml_compare_val_get_custom:caml_compare_val_get_custom, - caml_compare_val_number_custom:caml_compare_val_number_custom, - caml_compare_val:caml_compare_val, - caml_compare:caml_compare, - caml_int_compare:caml_int_compare, - caml_equal:caml_equal, - caml_notequal:caml_notequal, - caml_greaterequal:caml_greaterequal, - caml_greaterthan:caml_greaterthan, - caml_lessequal:caml_lessequal, - caml_lessthan:caml_lessthan, - caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring, - caml_blit_bigstring_to_string:caml_blit_bigstring_to_string, - caml_blit_string_to_bigstring:caml_blit_string_to_bigstring, - caml_hash_mix_bigstring:caml_hash_mix_bigstring, - bigstring_to_array_buffer:bigstring_to_array_buffer, - bigstring_to_typed_array:bigstring_to_typed_array, - bigstring_of_array_buffer:bigstring_of_array_buffer, - bigstring_of_typed_array:bigstring_of_typed_array, - caml_bigstring_memcmp:caml_bigstring_memcmp, - caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba, - caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba, - caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba, - caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes, - caml_ba_init:caml_ba_init, - caml_ba_get_size:caml_ba_get_size, - caml_ba_get_size_per_element:caml_ba_get_size_per_element, - caml_ba_create_buffer:caml_ba_create_buffer, - caml_ba_custom_name:caml_ba_custom_name, - Ml_Bigarray:Ml_Bigarray, - Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1, - caml_ba_compare:caml_ba_compare, - caml_ba_create_unsafe:caml_ba_create_unsafe, - caml_ba_create:caml_ba_create, - caml_ba_change_layout:caml_ba_change_layout, - caml_ba_kind:caml_ba_kind, - caml_ba_layout:caml_ba_layout, - caml_ba_num_dims:caml_ba_num_dims, - caml_ba_dim:caml_ba_dim, - caml_ba_dim_1:caml_ba_dim_1, - caml_ba_dim_2:caml_ba_dim_2, - caml_ba_dim_3:caml_ba_dim_3, - caml_ba_get_generic:caml_ba_get_generic, - caml_ba_uint8_get16:caml_ba_uint8_get16, - caml_ba_uint8_get32:caml_ba_uint8_get32, - caml_ba_uint8_get64:caml_ba_uint8_get64, - caml_ba_get_1:caml_ba_get_1, - caml_ba_get_2:caml_ba_get_2, - caml_ba_get_3:caml_ba_get_3, - caml_ba_set_generic:caml_ba_set_generic, - caml_ba_uint8_set16:caml_ba_uint8_set16, - caml_ba_uint8_set32:caml_ba_uint8_set32, - caml_ba_uint8_set64:caml_ba_uint8_set64, - caml_ba_set_1:caml_ba_set_1, - caml_ba_set_2:caml_ba_set_2, - caml_ba_set_3:caml_ba_set_3, - caml_ba_fill:caml_ba_fill, - caml_ba_blit:caml_ba_blit, - caml_ba_sub:caml_ba_sub, - caml_ba_slice:caml_ba_slice, - caml_ba_reshape:caml_ba_reshape, - caml_ba_serialize:caml_ba_serialize, - caml_ba_deserialize:caml_ba_deserialize, - caml_ba_create_from:caml_ba_create_from, - caml_ba_hash:caml_ba_hash, - caml_ba_to_typed_array:caml_ba_to_typed_array, - caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array, - caml_ba_from_typed_array:caml_ba_from_typed_array, - caml_ml_debug_info_status:caml_ml_debug_info_status, - caml_backtrace_status:caml_backtrace_status, - caml_get_exception_backtrace:caml_get_exception_backtrace, - caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace, - caml_record_backtrace:caml_record_backtrace, - caml_convert_raw_backtrace:caml_convert_raw_backtrace, - caml_raw_backtrace_length:caml_raw_backtrace_length, - caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot, - caml_raw_backtrace_slot:caml_raw_backtrace_slot, - caml_restore_raw_backtrace:caml_restore_raw_backtrace, - caml_get_current_callstack:caml_get_current_callstack, - caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot, - caml_array_sub:caml_array_sub, - caml_array_append:caml_array_append, - caml_array_concat:caml_array_concat, - caml_array_blit:caml_array_blit, - caml_floatarray_blit:caml_floatarray_blit, - caml_array_set:caml_array_set, - caml_array_get:caml_array_get, - caml_array_fill:caml_array_fill, - caml_check_bound:caml_check_bound, - caml_make_vect:caml_make_vect, - caml_make_float_vect:caml_make_float_vect, - caml_floatarray_create:caml_floatarray_create}; - caml_fs_init(); - caml_register_global - (0,[248,caml_string_of_jsbytes("Out_of_memory"),-1],"Out_of_memory"); - caml_register_global - (1,[248,caml_string_of_jsbytes("Sys_error"),-2],"Sys_error"); - caml_register_global - (2,[248,caml_string_of_jsbytes("Failure"),-3],"Failure"); - caml_register_global - (3, - [248,caml_string_of_jsbytes("Invalid_argument"),-4], - "Invalid_argument"); - caml_register_global - (4,[248,caml_string_of_jsbytes("End_of_file"),-5],"End_of_file"); - caml_register_global - (5, - [248,caml_string_of_jsbytes("Division_by_zero"),-6], - "Division_by_zero"); - caml_register_global - (6,[248,caml_string_of_jsbytes("Not_found"),-7],"Not_found"); - caml_register_global - (7,[248,caml_string_of_jsbytes("Match_failure"),-8],"Match_failure"); - caml_register_global - (8,[248,caml_string_of_jsbytes("Stack_overflow"),-9],"Stack_overflow"); - caml_register_global - (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-10],"Sys_blocked_io"); - caml_register_global - (10,[248,caml_string_of_jsbytes("Assert_failure"),-11],"Assert_failure"); - caml_register_global - (11, - [248,caml_string_of_jsbytes("Undefined_recursive_module"),-12], - "Undefined_recursive_module"); - return} - (globalThis)); - - -//# 1 "../../.js/stdlib/stdlib.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_array_concat=runtime.caml_array_concat, - caml_array_get=runtime.caml_array_get, - caml_array_set=runtime.caml_array_set, - caml_array_sub=runtime.caml_array_sub, - caml_ba_change_layout=runtime.caml_ba_change_layout, - caml_ba_create=runtime.caml_ba_create, - caml_ba_dim_1=runtime.caml_ba_dim_1, - caml_ba_dim_2=runtime.caml_ba_dim_2, - caml_ba_kind=runtime.caml_ba_kind, - caml_ba_num_dims=runtime.caml_ba_num_dims, - caml_ba_reshape=runtime.caml_ba_reshape, - caml_ba_set_1=runtime.caml_ba_set_1, - caml_ba_set_2=runtime.caml_ba_set_2, - caml_ba_set_3=runtime.caml_ba_set_3, - caml_ba_set_generic=runtime.caml_ba_set_generic, - caml_ba_slice=runtime.caml_ba_slice, - caml_blit_bytes=runtime.caml_blit_bytes, - caml_blit_string=runtime.caml_blit_string, - caml_bswap16=runtime.caml_bswap16, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_get16=runtime.caml_bytes_get16, - caml_bytes_get32=runtime.caml_bytes_get32, - caml_bytes_get64=runtime.caml_bytes_get64, - caml_bytes_of_string=runtime.caml_bytes_of_string, - caml_bytes_set=runtime.caml_bytes_set, - caml_bytes_set16=runtime.caml_bytes_set16, - caml_bytes_set32=runtime.caml_bytes_set32, - caml_bytes_set64=runtime.caml_bytes_set64, - caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, - caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, - caml_check_bound=runtime.caml_check_bound, - caml_compare=runtime.caml_compare, - caml_create_bytes=runtime.caml_create_bytes, - caml_div=runtime.caml_div, - caml_ephe_set_key=runtime.caml_ephe_set_key, - caml_ephe_unset_key=runtime.caml_ephe_unset_key, - caml_equal=runtime.caml_equal, - caml_fill_bytes=runtime.caml_fill_bytes, - caml_float_compare=runtime.caml_float_compare, - caml_float_of_string=runtime.caml_float_of_string, - caml_floatarray_blit=runtime.caml_floatarray_blit, - caml_floatarray_create=runtime.caml_floatarray_create, - caml_format_float=runtime.caml_format_float, - caml_format_int=runtime.caml_format_int, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace, - caml_get_public_method=runtime.caml_get_public_method, - caml_greaterequal=runtime.caml_greaterequal, - caml_greaterthan=runtime.caml_greaterthan, - caml_hash=runtime.caml_hash, - caml_input_value=runtime.caml_input_value, - caml_int32_bswap=runtime.caml_int32_bswap, - caml_int64_add=runtime.caml_int64_add, - caml_int64_bswap=runtime.caml_int64_bswap, - caml_int64_compare=runtime.caml_int64_compare, - caml_int64_float_of_bits=runtime.caml_int64_float_of_bits, - caml_int64_format=runtime.caml_int64_format, - caml_int64_mul=runtime.caml_int64_mul, - caml_int64_of_int32=runtime.caml_int64_of_int32, - caml_int64_of_string=runtime.caml_int64_of_string, - caml_int64_or=runtime.caml_int64_or, - caml_int64_shift_left=runtime.caml_int64_shift_left, - caml_int64_sub=runtime.caml_int64_sub, - caml_int_compare=runtime.caml_int_compare, - caml_int_of_string=runtime.caml_int_of_string, - caml_lessequal=runtime.caml_lessequal, - caml_lessthan=runtime.caml_lessthan, - caml_make_vect=runtime.caml_make_vect, - caml_marshal_data_size=runtime.caml_marshal_data_size, - caml_md5_string=runtime.caml_md5_string, - caml_ml_bytes_length=runtime.caml_ml_bytes_length, - caml_ml_channel_size=runtime.caml_ml_channel_size, - caml_ml_channel_size_64=runtime.caml_ml_channel_size_64, - caml_ml_close_channel=runtime.caml_ml_close_channel, - caml_ml_flush=runtime.caml_ml_flush, - caml_ml_input=runtime.caml_ml_input, - caml_ml_input_char=runtime.caml_ml_input_char, - caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in, - caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out, - caml_ml_output=runtime.caml_ml_output, - caml_ml_output_bytes=runtime.caml_ml_output_bytes, - caml_ml_output_char=runtime.caml_ml_output_char, - caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode, - caml_ml_set_channel_name=runtime.caml_ml_set_channel_name, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_mod=runtime.caml_mod, - caml_mul=runtime.caml_mul, - caml_nextafter_float=runtime.caml_nextafter_float, - caml_notequal=runtime.caml_notequal, - caml_obj_block=runtime.caml_obj_block, - caml_obj_make_forward=runtime.caml_obj_make_forward, - caml_obj_tag=runtime.caml_obj_tag, - caml_output_value=runtime.caml_output_value, - caml_register_global=runtime.caml_register_global, - caml_register_named_value=runtime.caml_register_named_value, - caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace, - caml_set_oo_id=runtime.caml_set_oo_id, - caml_signbit_float=runtime.caml_signbit_float, - caml_string_compare=runtime.caml_string_compare, - caml_string_equal=runtime.caml_string_equal, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_bytes=runtime.caml_string_of_bytes, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_unsafe_get=runtime.caml_string_unsafe_get, - caml_sys_argv=runtime.caml_sys_argv, - caml_sys_getenv=runtime.caml_sys_getenv, - caml_sys_open=runtime.caml_sys_open, - caml_sys_random_seed=runtime.caml_sys_random_seed, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - var - global_data=runtime.caml_get_global_data(), - cst$0=caml_string_of_jsbytes("%,"), - cst_really_input=caml_string_of_jsbytes("really_input"), - cst_input=caml_string_of_jsbytes("input"), - cst_output_substring=caml_string_of_jsbytes("output_substring"), - cst_output=caml_string_of_jsbytes("output"), - cst_12g=caml_string_of_jsbytes("%.12g"), - cst=caml_string_of_jsbytes("."), - cst_false$1=caml_string_of_jsbytes("false"), - cst_true$1=caml_string_of_jsbytes("true"), - cst_false$0=caml_string_of_jsbytes("false"), - cst_true$0=caml_string_of_jsbytes("true"), - cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst_char_of_int=caml_string_of_jsbytes("char_of_int"), - cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"), - cst_Stdlib_Pervasives_Exit= - caml_string_of_jsbytes("Stdlib.Pervasives.Exit"), - cst_option_is_None=caml_string_of_jsbytes("option is None"), - cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"), - cst_result_is_Error=caml_string_of_jsbytes("result is Error _"), - cst_true$2=caml_string_of_jsbytes("true"), - cst_false$2=caml_string_of_jsbytes("false"), - cst$1=caml_string_of_jsbytes("\\\\"), - cst$2=caml_string_of_jsbytes("\\'"), - cst_b=caml_string_of_jsbytes("\\b"), - cst_t=caml_string_of_jsbytes("\\t"), - cst_n=caml_string_of_jsbytes("\\n"), - cst_r=caml_string_of_jsbytes("\\r"), - cst_Char_chr=caml_string_of_jsbytes("Char.chr"), - cst_is_not_a_latin1_character= - caml_string_of_jsbytes(" is not a latin1 character"), - cst_04X=caml_string_of_jsbytes("%04X"), - cst_U=caml_string_of_jsbytes("U+"), - cst_is_not_an_Unicode_scalar_v= - caml_string_of_jsbytes(" is not an Unicode scalar value"), - cst_X=caml_string_of_jsbytes("%X"), - err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"), - err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"), - cst_Stdlib_Sys_Break=caml_string_of_jsbytes("Stdlib.Sys.Break"), - ocaml_version=caml_string_of_jsbytes("4.13.1"), - cst_List_map2=caml_string_of_jsbytes("List.map2"), - cst_List_iter2=caml_string_of_jsbytes("List.iter2"), - cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"), - cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"), - cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"), - cst_List_exists2=caml_string_of_jsbytes("List.exists2"), - cst_List_combine=caml_string_of_jsbytes("List.combine"), - cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"), - cst_List_init=caml_string_of_jsbytes("List.init"), - cst_List_nth$0=caml_string_of_jsbytes("List.nth"), - cst_nth=caml_string_of_jsbytes("nth"), - cst_List_nth=caml_string_of_jsbytes("List.nth"), - cst_tl=caml_string_of_jsbytes("tl"), - cst_hd=caml_string_of_jsbytes("hd"), - cst_Bytes_of_seq_cannot_grow_b= - caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"), - cst_String_rcontains_from_Byte= - caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), - cst_String_contains_from_Bytes= - caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), - cst_String_rindex_from_opt_Byt= - caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), - cst_String_rindex_from_Bytes_r= - caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), - cst_String_index_from_opt_Byte= - caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), - cst_String_index_from_Bytes_in= - caml_string_of_jsbytes("String.index_from / Bytes.index_from"), - cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"), - cst_String_blit_Bytes_blit_str= - caml_string_of_jsbytes("String.blit / Bytes.blit_string"), - cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"), - cst_String_fill_Bytes_fill= - caml_string_of_jsbytes("String.fill / Bytes.fill"), - cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"), - cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"), - cst_String_rcontains_from_Byte$0= - caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), - cst_String_contains_from_Bytes$0= - caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), - cst_String_rindex_from_opt_Byt$0= - caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), - cst_String_rindex_from_Bytes_r$0= - caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), - cst_String_index_from_opt_Byte$0= - caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), - cst_String_index_from_Bytes_in$0= - caml_string_of_jsbytes("String.index_from / Bytes.index_from"), - cst$4=caml_string_of_jsbytes(""), - cst$3=caml_string_of_jsbytes(""), - cst_String_concat=caml_string_of_jsbytes("String.concat"), - empty$1=caml_string_of_jsbytes(""), - cst$5=caml_string_of_jsbytes("()"), - cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"), - cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"), - cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"), - cst_Marshal_to_buffer_substrin= - caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"), - cst_Obj_Ephemeron_blit_key= - caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), - cst_Obj_Ephemeron_check_key= - caml_string_of_jsbytes("Obj.Ephemeron.check_key"), - cst_Obj_Ephemeron_unset_key= - caml_string_of_jsbytes("Obj.Ephemeron.unset_key"), - cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"), - cst_Obj_Ephemeron_get_key_copy= - caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"), - cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"), - cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"), - cst_Obj_extension_constructor$0= - caml_string_of_jsbytes("Obj.extension_constructor"), - cst_Obj_extension_constructor= - caml_string_of_jsbytes("Obj.extension_constructor"), - cst_Array_combine=caml_string_of_jsbytes("Array.combine"), - cst_Array_exists2=caml_string_of_jsbytes("Array.exists2"), - cst_Array_for_all2=caml_string_of_jsbytes("Array.for_all2"), - cst_Array_map2_arrays_must_hav= - caml_string_of_jsbytes("Array.map2: arrays must have the same length"), - cst_Array_iter2_arrays_must_ha= - caml_string_of_jsbytes("Array.iter2: arrays must have the same length"), - cst_Array_blit=caml_string_of_jsbytes("Array.blit"), - cst_Array_fill=caml_string_of_jsbytes("Array.fill"), - cst_Array_sub=caml_string_of_jsbytes("Array.sub"), - cst_Array_init=caml_string_of_jsbytes("Array.init"), - cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"), - cst_Float_Array_map2_arrays_mu= - caml_string_of_jsbytes - ("Float.Array.map2: arrays must have the same length"), - cst_Float_Array_iter2_arrays_m= - caml_string_of_jsbytes - ("Float.Array.iter2: arrays must have the same length"), - cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"), - cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"), - cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"), - cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"), - cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"), - cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"), - cst_Stdlib_Float_Array_Bottom= - caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"), - cst_d=caml_string_of_jsbytes("%d"), - cst_d$0=caml_string_of_jsbytes("%d"), - zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0), - one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0), - minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), - min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768), - max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767), - cst_d$1=caml_string_of_jsbytes("%d"), - cst_Lexing_lex_refill_cannot_g= - caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"), - dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1], - zero_pos=[0,caml_string_of_jsbytes(""),1,0,0], - cst_syntax_error=caml_string_of_jsbytes("syntax error"), - cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"), - cst_Stdlib_Parsing_Parse_error= - caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"), - cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"), - cst_Set_bal=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"), - cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"), - cst_Map_bal=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"), - cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"), - cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"), - cst_CamlinternalLazy_Undefined= - caml_string_of_jsbytes("CamlinternalLazy.Undefined"), - cst_count=caml_string_of_jsbytes("{count = "), - cst_data=caml_string_of_jsbytes("; data = "), - cst$6=caml_string_of_jsbytes("}"), - cst_Sempty=caml_string_of_jsbytes("Sempty"), - cst_Scons=caml_string_of_jsbytes("Scons ("), - cst$7=caml_string_of_jsbytes(", "), - cst$8=caml_string_of_jsbytes(")"), - cst_Sapp=caml_string_of_jsbytes("Sapp ("), - cst$9=caml_string_of_jsbytes(", "), - cst$10=caml_string_of_jsbytes(")"), - cst_Slazy=caml_string_of_jsbytes("Slazy"), - cst_Sgen=caml_string_of_jsbytes("Sgen"), - cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"), - cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"), - cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"), - cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"), - cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"), - cst_Buffer_add_substring_add_s= - caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"), - cst_Buffer_add_cannot_grow_buf= - caml_string_of_jsbytes("Buffer.add: cannot grow buffer"), - cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"), - cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"), - cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"), - cst_c=caml_string_of_jsbytes("%c"), - cst_s=caml_string_of_jsbytes("%s"), - cst_i=caml_string_of_jsbytes("%i"), - cst_li=caml_string_of_jsbytes("%li"), - cst_ni=caml_string_of_jsbytes("%ni"), - cst_Li=caml_string_of_jsbytes("%Li"), - cst_f=caml_string_of_jsbytes("%f"), - cst_B=caml_string_of_jsbytes("%B"), - cst$21=caml_string_of_jsbytes("%{"), - cst$22=caml_string_of_jsbytes("%}"), - cst$23=caml_string_of_jsbytes("%("), - cst$24=caml_string_of_jsbytes("%)"), - cst_a=caml_string_of_jsbytes("%a"), - cst_t$0=caml_string_of_jsbytes("%t"), - cst$25=caml_string_of_jsbytes("%?"), - cst_r$0=caml_string_of_jsbytes("%r"), - cst_r$1=caml_string_of_jsbytes("%_r"), - cst_u$0=caml_string_of_jsbytes("%u"), - cst_Printf_bad_conversion= - caml_string_of_jsbytes("Printf: bad conversion %["), - cst_Printf_bad_conversion$0= - caml_string_of_jsbytes("Printf: bad conversion %_"), - cst$30=caml_string_of_jsbytes("@{"), - cst$31=caml_string_of_jsbytes("@["), - cst$32=caml_string_of_jsbytes("@{"), - cst$33=caml_string_of_jsbytes("@["), - cst$34=caml_string_of_jsbytes("@{"), - cst$35=caml_string_of_jsbytes("@["), - cst_0=caml_string_of_jsbytes("0"), - cst_padding=caml_string_of_jsbytes("padding"), - cst_precision=caml_string_of_jsbytes("precision"), - cst$40=caml_string_of_jsbytes("'*'"), - cst$38=caml_string_of_jsbytes("'-'"), - cst_0$2=caml_string_of_jsbytes("'0'"), - cst$39=caml_string_of_jsbytes("'*'"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_0$1=caml_string_of_jsbytes("0"), - cst_precision$0=caml_string_of_jsbytes("precision"), - cst_precision$1=caml_string_of_jsbytes("precision"), - cst$41=caml_string_of_jsbytes("'+'"), - cst$42=caml_string_of_jsbytes("'#'"), - cst$43=caml_string_of_jsbytes("' '"), - cst_padding$0=caml_string_of_jsbytes("`padding'"), - cst_precision$2=caml_string_of_jsbytes("`precision'"), - cst$44=caml_string_of_jsbytes("'+'"), - cst$45=caml_string_of_jsbytes("'_'"), - sub_format=[0,0,caml_string_of_jsbytes("")], - formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0], - cst_digit=caml_string_of_jsbytes("digit"), - cst_character=caml_string_of_jsbytes("character ')'"), - cst_character$0=caml_string_of_jsbytes("character '}'"), - cst$49=caml_string_of_jsbytes("'#'"), - cst$46=caml_string_of_jsbytes("'+'"), - cst$47=caml_string_of_jsbytes("'+'"), - cst$48=caml_string_of_jsbytes("' '"), - cst$50=caml_string_of_jsbytes("'+'"), - cst_non_zero_widths_are_unsupp= - caml_string_of_jsbytes - ("non-zero widths are unsupported for %c conversions"), - cst_unexpected_end_of_format= - caml_string_of_jsbytes("unexpected end of format"), - cst$36=caml_string_of_jsbytes(""), - cst$37=caml_string_of_jsbytes(""), - cst_b$0=caml_string_of_jsbytes("b"), - cst_h=caml_string_of_jsbytes("h"), - cst_hov=caml_string_of_jsbytes("hov"), - cst_hv=caml_string_of_jsbytes("hv"), - cst_v=caml_string_of_jsbytes("v"), - cst_nan=caml_string_of_jsbytes("nan"), - cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"), - cst_infinity=caml_string_of_jsbytes("infinity"), - cst$29=caml_string_of_jsbytes("."), - cst_nd$0=caml_string_of_jsbytes("%+nd"), - cst_nd$1=caml_string_of_jsbytes("% nd"), - cst_ni$1=caml_string_of_jsbytes("%+ni"), - cst_ni$2=caml_string_of_jsbytes("% ni"), - cst_nx=caml_string_of_jsbytes("%nx"), - cst_nx$0=caml_string_of_jsbytes("%#nx"), - cst_nX=caml_string_of_jsbytes("%nX"), - cst_nX$0=caml_string_of_jsbytes("%#nX"), - cst_no=caml_string_of_jsbytes("%no"), - cst_no$0=caml_string_of_jsbytes("%#no"), - cst_nd=caml_string_of_jsbytes("%nd"), - cst_ni$0=caml_string_of_jsbytes("%ni"), - cst_nu=caml_string_of_jsbytes("%nu"), - cst_ld$0=caml_string_of_jsbytes("%+ld"), - cst_ld$1=caml_string_of_jsbytes("% ld"), - cst_li$1=caml_string_of_jsbytes("%+li"), - cst_li$2=caml_string_of_jsbytes("% li"), - cst_lx=caml_string_of_jsbytes("%lx"), - cst_lx$0=caml_string_of_jsbytes("%#lx"), - cst_lX=caml_string_of_jsbytes("%lX"), - cst_lX$0=caml_string_of_jsbytes("%#lX"), - cst_lo=caml_string_of_jsbytes("%lo"), - cst_lo$0=caml_string_of_jsbytes("%#lo"), - cst_ld=caml_string_of_jsbytes("%ld"), - cst_li$0=caml_string_of_jsbytes("%li"), - cst_lu=caml_string_of_jsbytes("%lu"), - cst_Ld$0=caml_string_of_jsbytes("%+Ld"), - cst_Ld$1=caml_string_of_jsbytes("% Ld"), - cst_Li$1=caml_string_of_jsbytes("%+Li"), - cst_Li$2=caml_string_of_jsbytes("% Li"), - cst_Lx=caml_string_of_jsbytes("%Lx"), - cst_Lx$0=caml_string_of_jsbytes("%#Lx"), - cst_LX=caml_string_of_jsbytes("%LX"), - cst_LX$0=caml_string_of_jsbytes("%#LX"), - cst_Lo=caml_string_of_jsbytes("%Lo"), - cst_Lo$0=caml_string_of_jsbytes("%#Lo"), - cst_Ld=caml_string_of_jsbytes("%Ld"), - cst_Li$0=caml_string_of_jsbytes("%Li"), - cst_Lu=caml_string_of_jsbytes("%Lu"), - cst_d$3=caml_string_of_jsbytes("%+d"), - cst_d$4=caml_string_of_jsbytes("% d"), - cst_i$1=caml_string_of_jsbytes("%+i"), - cst_i$2=caml_string_of_jsbytes("% i"), - cst_x=caml_string_of_jsbytes("%x"), - cst_x$0=caml_string_of_jsbytes("%#x"), - cst_X$0=caml_string_of_jsbytes("%X"), - cst_X$1=caml_string_of_jsbytes("%#X"), - cst_o=caml_string_of_jsbytes("%o"), - cst_o$0=caml_string_of_jsbytes("%#o"), - cst_d$2=caml_string_of_jsbytes("%d"), - cst_i$0=caml_string_of_jsbytes("%i"), - cst_u=caml_string_of_jsbytes("%u"), - cst$26=caml_string_of_jsbytes("%!"), - cst$27=caml_string_of_jsbytes("@{"), - cst$28=caml_string_of_jsbytes("@["), - cst_0c=caml_string_of_jsbytes("0c"), - cst$20=caml_string_of_jsbytes("%%"), - cst$12=caml_string_of_jsbytes("@]"), - cst$13=caml_string_of_jsbytes("@}"), - cst$14=caml_string_of_jsbytes("@?"), - cst$15=caml_string_of_jsbytes("@\n"), - cst$16=caml_string_of_jsbytes("@."), - cst$17=caml_string_of_jsbytes("@@"), - cst$18=caml_string_of_jsbytes("@%"), - cst$19=caml_string_of_jsbytes("@"), - cst$11=caml_string_of_jsbytes(".*"), - cst_CamlinternalFormat_Type_mi= - caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"), - cst$58=caml_string_of_jsbytes(""), - cst$59=caml_string_of_jsbytes("\n"), - cst_a_boolean=caml_string_of_jsbytes("a boolean"), - cst_an_integer=caml_string_of_jsbytes("an integer"), - cst_an_integer$0=caml_string_of_jsbytes("an integer"), - cst_a_float=caml_string_of_jsbytes("a float"), - cst_a_float$0=caml_string_of_jsbytes("a float"), - cst$55=caml_string_of_jsbytes(""), - cst$56=caml_string_of_jsbytes(" "), - cst$57=caml_string_of_jsbytes(""), - cst_one_of=caml_string_of_jsbytes("one of: "), - cst_Arg_Expand_is_is_only_allo= - caml_string_of_jsbytes - ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"), - cst_no_argument=caml_string_of_jsbytes("no argument"), - cst$54=caml_string_of_jsbytes("(?)"), - cst_help$3=caml_string_of_jsbytes("--help"), - cst_help$4=caml_string_of_jsbytes("-help"), - cst_help$2=caml_string_of_jsbytes("-help"), - cst_Display_this_list_of_optio= - caml_string_of_jsbytes(" Display this list of options"), - cst_help=caml_string_of_jsbytes("-help"), - cst_help$1=caml_string_of_jsbytes("--help"), - cst_Display_this_list_of_optio$0= - caml_string_of_jsbytes(" Display this list of options"), - cst_help$0=caml_string_of_jsbytes("--help"), - cst$51=caml_string_of_jsbytes("}"), - cst$52=caml_string_of_jsbytes("|"), - cst$53=caml_string_of_jsbytes("{"), - cst_none=caml_string_of_jsbytes(""), - cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"), - cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"), - cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"), - cst$61=caml_string_of_jsbytes(""), - cst_Fatal_error_out_of_memory_= - caml_string_of_jsbytes - ("Fatal error: out of memory in uncaught exception handler"), - cst$65=caml_string_of_jsbytes(""), - cst_Program_not_linked_with_g_= - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n"), - cst_Raised_at=caml_string_of_jsbytes("Raised at"), - cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"), - cst_Raised_by_primitive_operat= - caml_string_of_jsbytes("Raised by primitive operation at"), - cst_Called_from=caml_string_of_jsbytes("Called from"), - cst_inlined=caml_string_of_jsbytes(" (inlined)"), - cst$64=caml_string_of_jsbytes(""), - partial=[4,0,0,0,[12,45,[4,0,0,0,0]]], - cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"), - cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"), - cst_Pattern_matching_failed= - caml_string_of_jsbytes("Pattern matching failed"), - cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"), - cst_Undefined_recursive_module= - caml_string_of_jsbytes("Undefined recursive module"), - cst$62=caml_string_of_jsbytes(""), - cst$63=caml_string_of_jsbytes(""), - cst$60=caml_string_of_jsbytes("_"), - locfmt= - [0, - [11, - caml_string_of_jsbytes('File "'), - [2, - 0, - [11, - caml_string_of_jsbytes('", line '), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", characters "), - [4, - 0, - 0, - 0, - [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]], - caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')], - cst_Fun_Finally_raised=caml_string_of_jsbytes("Fun.Finally_raised: "), - cst_Stdlib_Fun_Finally_raised= - caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"), - cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"), - cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"), - cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"), - cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"), - cst_Random_int64=caml_string_of_jsbytes("Random.int64"), - cst_Random_int32=caml_string_of_jsbytes("Random.int32"), - cst_Random_full_int=caml_string_of_jsbytes("Random.full_int"), - cst_Random_int=caml_string_of_jsbytes("Random.int"), - cst_x$1=caml_string_of_jsbytes("x"), - cst_Hashtbl_unsupported_hash_t= - caml_string_of_jsbytes("Hashtbl: unsupported hash table format"), - cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"), - cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"), - cst$66=caml_string_of_jsbytes(""), - cst_Weak_Make_hash_bucket_cann= - caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"), - cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"), - cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"), - cst_Weak_check=caml_string_of_jsbytes("Weak.check"), - cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"), - cst_Weak_get=caml_string_of_jsbytes("Weak.get"), - cst_Weak_set=caml_string_of_jsbytes("Weak.set"), - cst_Weak_create=caml_string_of_jsbytes("Weak.create"), - cst$84=caml_string_of_jsbytes(""), - cst$85=caml_string_of_jsbytes(""), - cst$83=caml_string_of_jsbytes("."), - cst$80=caml_string_of_jsbytes(">"), - cst$81=caml_string_of_jsbytes("<\/"), - cst$82=caml_string_of_jsbytes(""), - cst$77=caml_string_of_jsbytes(">"), - cst$78=caml_string_of_jsbytes("<"), - cst$79=caml_string_of_jsbytes(""), - cst$76=caml_string_of_jsbytes("\n"), - cst_Format_pp_set_geometry= - caml_string_of_jsbytes("Format.pp_set_geometry: "), - cst$72=caml_string_of_jsbytes(""), - cst$73=caml_string_of_jsbytes(""), - cst$74=caml_string_of_jsbytes(""), - cst$75=caml_string_of_jsbytes(""), - cst$68=caml_string_of_jsbytes(""), - cst$69=caml_string_of_jsbytes(""), - cst$70=caml_string_of_jsbytes(""), - cst$71=caml_string_of_jsbytes(""), - cst$67=caml_string_of_jsbytes(""), - cst_Stdlib_Format_String_tag= - caml_string_of_jsbytes("Stdlib.Format.String_tag"), - cst_end_of_input_not_found= - caml_string_of_jsbytes("end of input not found"), - cst_scanf_bad_conversion_a= - caml_string_of_jsbytes('scanf: bad conversion "%a"'), - cst_scanf_bad_conversion_t= - caml_string_of_jsbytes('scanf: bad conversion "%t"'), - cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"), - cst_scanf_bad_conversion_custo= - caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'), - cst_scanf_bad_conversion= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst_scanf_bad_conversion$0= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst_scanf_bad_conversion$1= - caml_string_of_jsbytes('scanf: bad conversion "%-"'), - cst_scanf_bad_conversion$2= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst$91=caml_string_of_jsbytes('"'), - cst$92=caml_string_of_jsbytes('"'), - cst$89=caml_string_of_jsbytes('"'), - cst$90=caml_string_of_jsbytes('"'), - cst$88=caml_string_of_jsbytes('"'), - cst_in_format=caml_string_of_jsbytes(' in format "'), - cst_an=caml_string_of_jsbytes("an"), - cst_x$2=caml_string_of_jsbytes("x"), - cst_nfinity=caml_string_of_jsbytes("nfinity"), - cst_digits=caml_string_of_jsbytes("digits"), - cst_decimal_digits=caml_string_of_jsbytes("decimal digits"), - cst_0b=caml_string_of_jsbytes("0b"), - cst_0o=caml_string_of_jsbytes("0o"), - cst_0u=caml_string_of_jsbytes("0u"), - cst_0x=caml_string_of_jsbytes("0x"), - cst_false$3=caml_string_of_jsbytes("false"), - cst_true$3=caml_string_of_jsbytes("true"), - cst_not_a_valid_float_in_hexad= - caml_string_of_jsbytes("not a valid float in hexadecimal notation"), - cst_no_dot_or_exponent_part_fo= - caml_string_of_jsbytes("no dot or exponent part found in float token"), - cst$87=caml_string_of_jsbytes("-"), - cst_unnamed_function=caml_string_of_jsbytes("unnamed function"), - cst_unnamed_character_string= - caml_string_of_jsbytes("unnamed character string"), - cst_unnamed_Stdlib_input_chann= - caml_string_of_jsbytes("unnamed Stdlib input channel"), - cst$86=caml_string_of_jsbytes("-"), - cst_Stdlib_Scanf_Scan_failure= - caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"), - cst_binary=caml_string_of_jsbytes("binary"), - cst_octal=caml_string_of_jsbytes("octal"), - cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"), - cst_a_Char=caml_string_of_jsbytes("a Char"), - cst_a_String=caml_string_of_jsbytes("a String"), - cst$93=caml_string_of_jsbytes(""), - cst_CamlinternalMod_update_mod= - caml_string_of_jsbytes("CamlinternalMod.update_mod: not a module"), - cst_CamlinternalMod_init_mod_n= - caml_string_of_jsbytes("CamlinternalMod.init_mod: not a module"), - cst$94=caml_string_of_jsbytes(""), - cst$95=caml_string_of_jsbytes(""), - cst$96=caml_string_of_jsbytes(""), - cst$97=caml_string_of_jsbytes(""), - cst$99=caml_string_of_jsbytes(""), - cst$98=caml_string_of_jsbytes(""), - cst_Illegal_character=caml_string_of_jsbytes("Illegal character "), - cst_Filename_chop_extension= - caml_string_of_jsbytes("Filename.chop_extension"), - cst$127=caml_string_of_jsbytes(""), - cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"), - cst$126=caml_string_of_jsbytes(""), - cst_2_1$0=caml_string_of_jsbytes(" 2>&1"), - cst_2$0=caml_string_of_jsbytes(" 2>"), - cst$125=caml_string_of_jsbytes(""), - cst$117=caml_string_of_jsbytes(" >"), - cst$124=caml_string_of_jsbytes(""), - cst$118=caml_string_of_jsbytes(" <"), - cst$123=caml_string_of_jsbytes(""), - cst$119=caml_string_of_jsbytes(" "), - cst$120=caml_string_of_jsbytes(" "), - cst$121=caml_string_of_jsbytes('"'), - cst$122=caml_string_of_jsbytes(""), - cst_Filename_quote_command_bad= - caml_string_of_jsbytes("Filename.quote_command: bad file name "), - cst$115=caml_string_of_jsbytes('"'), - cst$116=caml_string_of_jsbytes('"'), - cst$113=caml_string_of_jsbytes("./"), - cst$112=caml_string_of_jsbytes(".\\"), - cst$111=caml_string_of_jsbytes("../"), - cst$110=caml_string_of_jsbytes("..\\"), - cst_2_1=caml_string_of_jsbytes(" 2>&1"), - cst_2=caml_string_of_jsbytes(" 2>"), - cst$109=caml_string_of_jsbytes(""), - cst$104=caml_string_of_jsbytes(" >"), - cst$108=caml_string_of_jsbytes(""), - cst$105=caml_string_of_jsbytes(" <"), - cst$107=caml_string_of_jsbytes(""), - cst$106=caml_string_of_jsbytes(" "), - cst$103=caml_string_of_jsbytes("./"), - cst$102=caml_string_of_jsbytes("../"), - cst$101=caml_string_of_jsbytes(""), - cst$100=caml_string_of_jsbytes(""), - null$0=caml_string_of_jsbytes("/dev/null"), - current_dir_name=caml_string_of_jsbytes("."), - parent_dir_name=caml_string_of_jsbytes(".."), - dir_sep=caml_string_of_jsbytes("/"), - cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"), - cst_tmp=caml_string_of_jsbytes("/tmp"), - quotequote=caml_string_of_jsbytes("'\\''"), - null$1=caml_string_of_jsbytes("NUL"), - current_dir_name$0=caml_string_of_jsbytes("."), - parent_dir_name$0=caml_string_of_jsbytes(".."), - dir_sep$0=caml_string_of_jsbytes("\\"), - cst_TEMP=caml_string_of_jsbytes("TEMP"), - cst$114=caml_string_of_jsbytes("."), - null$2=caml_string_of_jsbytes("/dev/null"), - current_dir_name$1=caml_string_of_jsbytes("."), - parent_dir_name$1=caml_string_of_jsbytes(".."), - dir_sep$1=caml_string_of_jsbytes("/"), - cst_Cygwin=caml_string_of_jsbytes("Cygwin"), - cst_Win32=caml_string_of_jsbytes("Win32"), - zero$4=[254,0.,0.], - one$4=[254,1.,0.], - i=[254,0.,1.], - cst_Bigarray_array3_of_genarra= - caml_string_of_jsbytes("Bigarray.array3_of_genarray"), - cst_Bigarray_array2_of_genarra= - caml_string_of_jsbytes("Bigarray.array2_of_genarray"), - cst_Bigarray_array1_of_genarra= - caml_string_of_jsbytes("Bigarray.array1_of_genarray"), - cst_Bigarray_array0_of_genarra= - caml_string_of_jsbytes("Bigarray.array0_of_genarray"), - cst_Bigarray_Array3_of_array_n= - caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), - cst_Bigarray_Array3_of_array_n$0= - caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), - cst_Bigarray_Array2_of_array_n= - caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"), - Invalid_argument=global_data.Invalid_argument, - Failure=global_data.Failure, - Match_failure=global_data.Match_failure, - Assert_failure=global_data.Assert_failure, - Not_found=global_data.Not_found, - Out_of_memory=global_data.Out_of_memory, - Stack_overflow=global_data.Stack_overflow, - Sys_error=global_data.Sys_error, - End_of_file=global_data.End_of_file, - Division_by_zero=global_data.Division_by_zero, - Sys_blocked_io=global_data.Sys_blocked_io, - Undefined_recursive_module=global_data.Undefined_recursive_module, - _l_=[0,0,[0,6,0]], - _k_=[0,0,[0,7,0]], - _j_=[0,1,[0,3,[0,4,[0,6,0]]]], - _i_=[0,1,[0,3,[0,4,[0,7,0]]]], - _g_=[0,1], - _h_=[0,0], - _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752), - _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520), - _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752), - _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751), - _e_=runtime.caml_int64_create_lo_mi_hi(0,0,16), - _f_=runtime.caml_int64_create_lo_mi_hi(0,0,15536), - _p_=[0,0,0], - _q_=[0,caml_string_of_jsbytes("obj.ml"),100,4], - _u_=[0,caml_string_of_jsbytes("array.ml"),322,4], - _w_=[0,caml_string_of_jsbytes("float.ml"),395,6], - _v_=[0,caml_string_of_jsbytes("float.ml"),222,14], - _H_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), - _G_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _F_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _E_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _I_=[0,0,0,0], - _J_=[0,0,0], - _K_=[0,caml_string_of_jsbytes("set.ml"),570,18], - _L_=[0,0,0,0], - _M_=[0,caml_string_of_jsbytes("map.ml"),400,10], - _N_=[0,0,0], - _O_=[0,caml_string_of_jsbytes("stream.ml"),53,12], - _P_=[0,0], - _Q_=[0,caml_string_of_jsbytes("stream.ml"),82,12], - ___=[0,caml_string_of_jsbytes("buffer.ml"),282,9], - _Z_=[0,caml_string_of_jsbytes("buffer.ml"),263,2], - _Y_=[0,caml_string_of_jsbytes("buffer.ml"),195,19], - _X_=[0,caml_string_of_jsbytes("buffer.ml"),213,8], - _W_=[0,caml_string_of_jsbytes("buffer.ml"),174,19], - _V_=[0,caml_string_of_jsbytes("buffer.ml"),192,8], - _U_=[0,caml_string_of_jsbytes("buffer.ml"),138,19], - _T_=[0,caml_string_of_jsbytes("buffer.ml"),171,8], - _S_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], - _R_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], - _aa_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], - _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], - _ad_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], - _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], - _ae_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], - _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], - _af_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], - _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], - _ag_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], - _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], - _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], - _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], - _ab_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], - _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], - _ac_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], - _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], - _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], - _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], - _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], - _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], - _av_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], - _aZ_= - [0, - [11, - caml_string_of_jsbytes("bad input: format type mismatch between "), - [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], - caml_string_of_jsbytes - ("bad input: format type mismatch between %S and %S")], - _aY_= - [0, - [11, - caml_string_of_jsbytes("bad input: format type mismatch between "), - [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], - caml_string_of_jsbytes - ("bad input: format type mismatch between %S and %S")], - _aB_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4,0,0,0,[11,caml_string_of_jsbytes(", duplicate flag "),[1,0]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, duplicate flag %C")], - _aC_=[0,1,0], - _aD_=[0,0], - _aE_=[1,0], - _aF_=[1,1], - _aH_=[1,1], - _aG_=[1,1], - _aL_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", flag "), - [1, - [11, - caml_string_of_jsbytes(" is only allowed after the '"), - [12, - 37, - [11, - caml_string_of_jsbytes("', before padding and precision"), - 0]]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], - _aI_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(', invalid conversion "'), - [12,37,[0,[12,34,0]]]]]]]], - caml_string_of_jsbytes - ('invalid format %S: at character number %d, invalid conversion "%%%c"')], - _aJ_=[0,0], - _aK_=[0,0], - _aM_=[0,[12,64,0]], - _aN_=[0,caml_string_of_jsbytes("@ "),1,0], - _aO_=[0,caml_string_of_jsbytes("@,"),0,0], - _aP_=[2,60], - _aQ_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": '"), - [12, - 37, - [11, - caml_string_of_jsbytes - ("' alone is not accepted in character sets, use "), - [12, - 37, - [12, - 37, - [11, - caml_string_of_jsbytes(" instead at position "), - [4,0,0,0,[12,46,0]]]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d.")], - _aR_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": integer "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(" is greater than the limit "), - [4,0,0,0,0]]]]]], - caml_string_of_jsbytes - ("invalid format %S: integer %d is greater than the limit %d")], - _aS_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], - _aT_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(': unclosed sub-format, expected "'), - [12, - 37, - [0, - [11,caml_string_of_jsbytes('" at character number '),[4,0,0,0,0]]]]]]], - caml_string_of_jsbytes - ('invalid format %S: unclosed sub-format, expected "%%%c" at character number %d')], - _aU_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], - _aV_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], - _aW_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], - _aX_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2, - 0, - [11, - caml_string_of_jsbytes(" is incompatible with '"), - [0,[11,caml_string_of_jsbytes("' in sub-format "),[3,0,0]]]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S")], - _aA_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2,0,[11,caml_string_of_jsbytes(" expected, read "),[1,0]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, %s expected, read %C")], - _az_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", '"), - [0,[11,caml_string_of_jsbytes("' without "),[2,0,0]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, '%c' without %s")], - _ay_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4,0,0,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]], - caml_string_of_jsbytes("invalid format %S: at character number %d, %s")], - _ax_= - [0, - [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]], - caml_string_of_jsbytes("invalid box description %S")], - _aw_=[0,0,4], - _aq_=[0,103], - _$_=[0,0,0], - _bj_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], - _bd_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _be_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _bb_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _bc_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _ba_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _a5_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(": unknown option '"), - [2,0,[11,caml_string_of_jsbytes("'.\n"),0]]]], - caml_string_of_jsbytes("%s: unknown option '%s'.\n")], - _a8_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(": wrong argument '"), - [2, - 0, - [11, - caml_string_of_jsbytes("'; option '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' expects "), - [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], - caml_string_of_jsbytes - ("%s: wrong argument '%s'; option '%s' expects %s.\n")], - _a9_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(": option '"), - [2,0,[11,caml_string_of_jsbytes("' needs an argument.\n"),0]]]], - caml_string_of_jsbytes("%s: option '%s' needs an argument.\n")], - _a__= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(": "), - [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]], - caml_string_of_jsbytes("%s: %s.\n")], - _a6_=[0,caml_string_of_jsbytes("-help")], - _a7_=[0,caml_string_of_jsbytes("--help")], - _a4_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _a3_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _a2_=[0,caml_string_of_jsbytes("-help")], - _a0_= - [0, - [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], - caml_string_of_jsbytes(" %s %s\n")], - _a1_= - [0, - [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]], - caml_string_of_jsbytes(" %s %s%s\n")], - _bo_= - [0, - [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], - caml_string_of_jsbytes(", %s%s")], - _bA_= - [0, - [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bB_= - [0, - [11, - caml_string_of_jsbytes - ("Fatal error in uncaught exception handler: exception "), - [2,0,[12,10,0]]], - caml_string_of_jsbytes - ("Fatal error in uncaught exception handler: exception %s\n")], - _bz_= - [0, - [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bx_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _bv_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _bw_= - [0, - [11, - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n"), - 0], - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n")], - _bt_= - [0, - [2, - 0, - [12, - 32, - [2, - 0, - [11, - caml_string_of_jsbytes(' in file "'), - [2, - 0, - [12, - 34, - [2, - 0, - [11, - caml_string_of_jsbytes(", line "), - [4,0,0,0,[11,caml_string_of_jsbytes(", characters "),partial]]]]]]]]]], - caml_string_of_jsbytes - ('%s %s in file "%s"%s, line %d, characters %d-%d')], - _bu_= - [0, - [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], - caml_string_of_jsbytes("%s unknown location")], - _bs_= - [0, - [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Uncaught exception: %s\n")], - _br_= - [0, - [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Uncaught exception: %s\n")], - _bp_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], - _bq_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], - _bn_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bm_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _by_= - [0, - caml_string_of_jsbytes(""), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file not found)"), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file has wrong magic number)"), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")], - _bI_= - [0, - [11, - caml_string_of_jsbytes("minor_collections: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("minor_collections: %d\n")], - _bJ_= - [0, - [11, - caml_string_of_jsbytes("major_collections: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("major_collections: %d\n")], - _bK_= - [0, - [11, - caml_string_of_jsbytes("compactions: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("compactions: %d\n")], - _bL_= - [0, - [11, - caml_string_of_jsbytes("forced_major_collections: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("forced_major_collections: %d\n")], - _bM_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _bN_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], - _bO_= - [0, - [11, - caml_string_of_jsbytes("minor_words: "), - [8,[0,0,0],[1,1],[0,0],[12,10,0]]], - caml_string_of_jsbytes("minor_words: %*.0f\n")], - _bP_= - [0, - [11, - caml_string_of_jsbytes("promoted_words: "), - [8,[0,0,0],[1,1],[0,0],[12,10,0]]], - caml_string_of_jsbytes("promoted_words: %*.0f\n")], - _bQ_= - [0, - [11, - caml_string_of_jsbytes("major_words: "), - [8,[0,0,0],[1,1],[0,0],[12,10,0]]], - caml_string_of_jsbytes("major_words: %*.0f\n")], - _bR_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _bS_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bT_= - [0, - [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("top_heap_words: %*d\n")], - _bU_= - [0, - [11,caml_string_of_jsbytes("heap_words: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("heap_words: %*d\n")], - _bV_= - [0, - [11,caml_string_of_jsbytes("live_words: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("live_words: %*d\n")], - _bW_= - [0, - [11,caml_string_of_jsbytes("free_words: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("free_words: %*d\n")], - _bX_= - [0, - [11,caml_string_of_jsbytes("largest_free: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("largest_free: %*d\n")], - _bY_= - [0, - [11,caml_string_of_jsbytes("fragments: "),[4,0,[1,1],0,[12,10,0]]], - caml_string_of_jsbytes("fragments: %*d\n")], - _bZ_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _b0_= - [0, - [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("live_blocks: %d\n")], - _b1_= - [0, - [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("free_blocks: %d\n")], - _b2_= - [0, - [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("heap_chunks: %d\n")], - _b__=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _b$_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _ca_= - [0, - 987910699, - 495797812, - 364182224, - 414272206, - 318284740, - 990407751, - 383018966, - 270373319, - 840823159, - 24560019, - 536292337, - 512266505, - 189156120, - 730249596, - 143776328, - 51606627, - 140166561, - 366354223, - 1003410265, - 700563762, - 981890670, - 913149062, - 526082594, - 1021425055, - 784300257, - 667753350, - 630144451, - 949649812, - 48546892, - 415514493, - 258888527, - 511570777, - 89983870, - 283659902, - 308386020, - 242688715, - 482270760, - 865188196, - 1027664170, - 207196989, - 193777847, - 619708188, - 671350186, - 149669678, - 257044018, - 87658204, - 558145612, - 183450813, - 28133145, - 901332182, - 710253903, - 510646120, - 652377910, - 409934019, - 801085050], - _cd_=[0,0], - _cj_=[3,0,3], - _ci_=[1,caml_string_of_jsbytes("max_indent < 2")], - _cg_=[1,caml_string_of_jsbytes("margin <= max_indent")], - _ch_=[0,0], - _cf_=[0,caml_string_of_jsbytes("")], - _ce_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], - _cz_=[0,91], - _cy_=[0,123], - _cA_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], - _cB_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], - _cx_=[0,37,caml_string_of_jsbytes("")], - _cw_= - [0, - [11, - caml_string_of_jsbytes("scanf: bad input at char number "), - [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]], - caml_string_of_jsbytes("scanf: bad input at char number %i: %s")], - _cv_= - [0, - [11, - caml_string_of_jsbytes("the character "), - [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]], - caml_string_of_jsbytes("the character %C cannot start a boolean")], - _cu_= - [0, - [11, - caml_string_of_jsbytes("bad character hexadecimal encoding \\"), - [0,[0,0]]], - caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], - _ct_= - [0, - [11, - caml_string_of_jsbytes("bad character decimal encoding \\"), - [0,[0,[0,0]]]], - caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")], - _cs_= - [0, - [11, - caml_string_of_jsbytes("character "), - [1, - [11, - caml_string_of_jsbytes(" is not a valid "), - [2,0,[11,caml_string_of_jsbytes(" digit"),0]]]]], - caml_string_of_jsbytes("character %C is not a valid %s digit")], - _cr_= - [0, - [11, - caml_string_of_jsbytes("character "), - [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]], - caml_string_of_jsbytes("character %C is not a decimal digit")], - _cq_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], - _cp_= - [0, - [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], - caml_string_of_jsbytes("invalid boolean '%s'")], - _co_= - [0, - [11, - caml_string_of_jsbytes("looking for "), - [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]], - caml_string_of_jsbytes("looking for %C, found %C")], - _cn_= - [0, - [11, - caml_string_of_jsbytes("scanning of "), - [2, - 0, - [11, - caml_string_of_jsbytes - (" failed: premature end of file occurred before end of token"), - 0]]], - caml_string_of_jsbytes - ("scanning of %s failed: premature end of file occurred before end of token")], - _cm_= - [0, - [11, - caml_string_of_jsbytes("scanning of "), - [2, - 0, - [11, - caml_string_of_jsbytes - (" failed: the specified length was too short for token"), - 0]]], - caml_string_of_jsbytes - ("scanning of %s failed: the specified length was too short for token")], - _cl_= - [0, - [11,caml_string_of_jsbytes("illegal escape character "),[1,0]], - caml_string_of_jsbytes("illegal escape character %C")], - _cI_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], - _cH_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], - _cG_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], - _cF_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], - _cE_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], - _cD_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], - _cC_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], - _cJ_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], - _cK_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], - _cN_=[0,0], - _cM_=[0,0], - _cL_=[0,0], - _cS_=[0,7,0], - _cR_=[0,1,[0,3,[0,5,0]]], - _cQ_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], - _cP_=[0,caml_string_of_jsbytes('"'),0], - _cT_=[254,0.,0.]; - function erase_rel(param) - {if(typeof param === "number") - return 0; - else - switch(param[0]) - {case 0:var rest=param[1];return [0,erase_rel(rest)]; - case 1:var rest$0=param[1];return [1,erase_rel(rest$0)]; - case 2:var rest$1=param[1];return [2,erase_rel(rest$1)]; - case 3:var rest$2=param[1];return [3,erase_rel(rest$2)]; - case 4:var rest$3=param[1];return [4,erase_rel(rest$3)]; - case 5:var rest$4=param[1];return [5,erase_rel(rest$4)]; - case 6:var rest$5=param[1];return [6,erase_rel(rest$5)]; - case 7:var rest$6=param[1];return [7,erase_rel(rest$6)]; - case 8: - var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)]; - case 9: - var rest$8=param[3],ty1=param[1]; - return [9,ty1,ty1,erase_rel(rest$8)]; - case 10:var rest$9=param[1];return [10,erase_rel(rest$9)]; - case 11:var rest$10=param[1];return [11,erase_rel(rest$10)]; - case 12:var rest$11=param[1];return [12,erase_rel(rest$11)]; - case 13:var rest$12=param[1];return [13,erase_rel(rest$12)]; - default:var rest$13=param[1];return [14,erase_rel(rest$13)]}} - function concat_fmtty(fmtty1,fmtty2) - {if(typeof fmtty1 === "number") - return fmtty2; - else - switch(fmtty1[0]) - {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)]; - case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)]; - case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)]; - case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)]; - case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)]; - case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)]; - case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)]; - case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)]; - case 8: - var rest$7=fmtty1[2],ty=fmtty1[1]; - return [8,ty,concat_fmtty(rest$7,fmtty2)]; - case 9: - var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1]; - return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)]; - case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)]; - case 11: - var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)]; - case 12: - var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)]; - case 13: - var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)]; - default: - var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}} - function concat_fmt(fmt1,fmt2) - {if(typeof fmt1 === "number") - return fmt2; - else - switch(fmt1[0]) - {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)]; - case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)]; - case 2: - var rest$1=fmt1[2],pad=fmt1[1]; - return [2,pad,concat_fmt(rest$1,fmt2)]; - case 3: - var rest$2=fmt1[2],pad$0=fmt1[1]; - return [3,pad$0,concat_fmt(rest$2,fmt2)]; - case 4: - var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1]; - return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)]; - case 5: - var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1]; - return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)]; - case 6: - var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1]; - return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)]; - case 7: - var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1]; - return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)]; - case 8: - var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1]; - return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)]; - case 9: - var rest$8=fmt1[2],pad$6=fmt1[1]; - return [9,pad$6,concat_fmt(rest$8,fmt2)]; - case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)]; - case 11: - var rest$10=fmt1[2],str=fmt1[1]; - return [11,str,concat_fmt(rest$10,fmt2)]; - case 12: - var rest$11=fmt1[2],chr=fmt1[1]; - return [12,chr,concat_fmt(rest$11,fmt2)]; - case 13: - var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1]; - return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)]; - case 14: - var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1]; - return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)]; - case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)]; - case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)]; - case 17: - var rest$16=fmt1[2],fmting_lit=fmt1[1]; - return [17,fmting_lit,concat_fmt(rest$16,fmt2)]; - case 18: - var rest$17=fmt1[2],fmting_gen=fmt1[1]; - return [18,fmting_gen,concat_fmt(rest$17,fmt2)]; - case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)]; - case 20: - var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1]; - return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)]; - case 21: - var rest$20=fmt1[2],counter=fmt1[1]; - return [21,counter,concat_fmt(rest$20,fmt2)]; - case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)]; - case 23: - var rest$22=fmt1[2],ign=fmt1[1]; - return [23,ign,concat_fmt(rest$22,fmt2)]; - default: - var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1]; - return [24,arity,f,concat_fmt(rest$23,fmt2)]}} - var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt]; - caml_register_global - (745,CamlinternalFormatBasics,"CamlinternalFormatBasics"); - function make(v){return [0,v]} - function get(r){return r[1]} - function set(r,v){r[1] = v;return 0} - function exchange(r,v){var cur=r[1];r[1] = v;return cur} - function compare_and_set(r,seen,v) - {var cur=r[1];return cur === seen?(r[1] = v,1):0} - function fetch_and_add(r,n){var cur=r[1];r[1] = cur + n | 0;return cur} - function incr(r){fetch_and_add(r,1);return 0} - function decr(r){fetch_and_add(r,-1);return 0} - var - include= - [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; - caml_register_global(746,include,"CamlinternalAtomic"); - function failwith(s){throw [0,Failure,s]} - function invalid_arg(s){throw [0,Invalid_argument,s]} - var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)]; - function min(x,y){return caml_lessequal(x,y)?x:y} - function max(x,y){return caml_greaterequal(x,y)?x:y} - function abs(x){return 0 <= x?x:- x | 0} - function lnot(x){return x ^ -1} - var - infinity=caml_int64_float_of_bits(_a_), - neg_infinity=caml_int64_float_of_bits(_b_), - nan=caml_int64_float_of_bits(_c_), - max_float=caml_int64_float_of_bits(_d_), - min_float=caml_int64_float_of_bits(_e_), - epsilon=caml_int64_float_of_bits(_f_), - max_int=2147483647, - min_int=-2147483648; - function cat(s1,s2) - {var - l1=caml_ml_string_length(s1), - l2=caml_ml_string_length(s2), - s=caml_create_bytes(l1 + l2 | 0); - caml_blit_string(s1,0,s,0,l1); - caml_blit_string(s2,0,s,l1,l2); - return caml_string_of_bytes(s)} - function char_of_int(n) - {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)} - function string_of_bool(b){return b?cst_true:cst_false} - function bool_of_string(param) - {return caml_string_notequal(param,cst_false$0) - ?caml_string_notequal(param,cst_true$0) - ?invalid_arg(cst_bool_of_string) - :1 - :0} - function bool_of_string_opt(param) - {return caml_string_notequal(param,cst_false$1) - ?caml_string_notequal(param,cst_true$1)?0:_g_ - :_h_} - function string_of_int(n){return caml_string_of_jsbytes("" + n)} - function int_of_string_opt(s) - {try - {var _CD_=[0,caml_int_of_string(s)];return _CD_} - catch(_CE_) - {_CE_ = caml_wrap_exception(_CE_); - if(_CE_[1] === Failure)return 0; - throw _CE_}} - function valid_float_lexem(s) - {var l=caml_ml_string_length(s),i=0; - for(;;) - {if(l <= i)return cat(s,cst); - var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(switch$0){var i$0=i + 1 | 0,i=i$0;continue} - return s}} - function to_string(f) - {return valid_float_lexem(caml_format_float(cst_12g,f))} - function of_string_opt(s) - {try - {var _CB_=[0,caml_float_of_string(s)];return _CB_} - catch(_CC_) - {_CC_ = caml_wrap_exception(_CC_); - if(_CC_[1] === Failure)return 0; - throw _CC_}} - function append(l1,l2) - {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} - var - stdin=caml_ml_open_descriptor_in(0), - stdout=caml_ml_open_descriptor_out(1), - stderr=caml_ml_open_descriptor_out(2); - function open_out_gen(mode,perm,name) - {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm)); - caml_ml_set_channel_name(c,name); - return c} - function open_out(name){return open_out_gen(_i_,438,name)} - function open_out_bin(name){return open_out_gen(_j_,438,name)} - function flush_all(param) - {function iter(param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1]; - try - {caml_ml_flush(a)} - catch(_CA_) - {_CA_ = caml_wrap_exception(_CA_); - if(_CA_[1] !== Sys_error)throw _CA_; - var _Cz_=_CA_} - var param$0=l; - continue} - return 0}} - return iter(runtime.caml_ml_out_channels_list(0))} - function output_bytes(oc,s) - {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))} - function output_string(oc,s) - {return caml_ml_output(oc,s,0,caml_ml_string_length(s))} - function output(oc,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_ml_output_bytes(oc,s,ofs,len); - return invalid_arg(cst_output)} - function output_substring(oc,s,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_string_length(s) - len | 0) < ofs)) - return caml_ml_output(oc,s,ofs,len); - return invalid_arg(cst_output_substring)} - function output_value(chan,v){return caml_output_value(chan,v,0)} - function close_out(oc){caml_ml_flush(oc);return caml_ml_close_channel(oc)} - function close_out_noerr(oc) - {try {caml_ml_flush(oc)}catch(_Cy_){} - try - {var _Cw_=caml_ml_close_channel(oc);return _Cw_} - catch(_Cx_){return 0}} - function open_in_gen(mode,perm,name) - {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm)); - caml_ml_set_channel_name(c,name); - return c} - function open_in(name){return open_in_gen(_k_,0,name)} - function open_in_bin(name){return open_in_gen(_l_,0,name)} - function input(ic,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_ml_input(ic,s,ofs,len); - return invalid_arg(cst_input)} - function unsafe_really_input(ic,s,ofs,len) - {var ofs$0=ofs,len$0=len; - for(;;) - {if(0 < len$0) - {var r=caml_ml_input(ic,s,ofs$0,len$0); - if(0 === r)throw End_of_file; - var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1; - continue} - return 0}} - function really_input(ic,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return unsafe_really_input(ic,s,ofs,len); - return invalid_arg(cst_really_input)} - function really_input_string(ic,len) - {var s=caml_create_bytes(len); - really_input(ic,s,0,len); - return caml_string_of_bytes(s)} - function input_line(chan) - {function build_result(buf,pos,param) - {var pos$0=pos,param$0=param; - for(;;) - {if(param$0) - {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd); - caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len); - var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl; - continue} - return buf}} - var accu=0,len=0; - for(;;) - {var n=runtime.caml_ml_input_scan_line(chan); - if(0 === n) - {if(! accu)throw End_of_file; - var _Cv_=build_result(caml_create_bytes(len),len,accu)} - else - {if(! (0 < n)) - {var beg=caml_create_bytes(- n | 0); - caml_ml_input(chan,beg,0,- n | 0); - var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1; - continue} - var res=caml_create_bytes(n - 1 | 0); - caml_ml_input(chan,res,0,n - 1 | 0); - caml_ml_input_char(chan); - if(accu) - var - len$0=(len + n | 0) - 1 | 0, - _Cv_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); - else - var _Cv_=res} - return caml_string_of_bytes(_Cv_)}} - function close_in_noerr(ic) - {try - {var _Ct_=caml_ml_close_channel(ic);return _Ct_} - catch(_Cu_){return 0}} - function print_char(c){return caml_ml_output_char(stdout,c)} - function print_string(s){return output_string(stdout,s)} - function print_bytes(s){return output_bytes(stdout,s)} - function print_int(i) - {return output_string(stdout,caml_string_of_jsbytes("" + i))} - function print_float(f){return output_string(stdout,to_string(f))} - function print_endline(s) - {output_string(stdout,s); - caml_ml_output_char(stdout,10); - return caml_ml_flush(stdout)} - function print_newline(param) - {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)} - function prerr_char(c){return caml_ml_output_char(stderr,c)} - function prerr_string(s){return output_string(stderr,s)} - function prerr_bytes(s){return output_bytes(stderr,s)} - function prerr_int(i) - {return output_string(stderr,caml_string_of_jsbytes("" + i))} - function prerr_float(f){return output_string(stderr,to_string(f))} - function prerr_endline(s) - {output_string(stderr,s); - caml_ml_output_char(stderr,10); - return caml_ml_flush(stderr)} - function prerr_newline(param) - {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)} - function read_line(param){caml_ml_flush(stdout);return input_line(stdin)} - function read_int(param){return caml_int_of_string(read_line(0))} - function read_int_opt(param){return int_of_string_opt(read_line(0))} - function read_float(param){return caml_float_of_string(read_line(0))} - function read_float_opt(param){return of_string_opt(read_line(0))} - function string_of_format(param){var str=param[2];return str} - function symbol(param,_Cr_) - {var - str2=_Cr_[2], - fmt2=_Cr_[1], - str1=param[2], - fmt1=param[1], - _Cs_=cat(str1,cat(cst$0,str2)); - return [0,concat_fmt(fmt1,fmt2),_Cs_]} - var exit_function=[0,flush_all]; - function at_exit(f) - {for(;;) - {var - f_yet_to_run=[0,1], - old_exit=exit_function[1], - new_exit$0= - function(f_yet_to_run,old_exit) - {function new_exit(param) - {if(compare_and_set(f_yet_to_run,1,0))caml_call1(f,0); - return caml_call1(old_exit,0)} - return new_exit}, - new_exit=new_exit$0(f_yet_to_run,old_exit), - success=compare_and_set(exit_function,old_exit,new_exit), - _Cq_=1 - success; - if(_Cq_)continue; - return _Cq_}} - function do_at_exit(param){return caml_call1(exit_function[1],0)} - function exit(retcode) - {do_at_exit(0);return runtime.caml_sys_exit(retcode)} - caml_register_named_value - (caml_string_of_jsbytes("Pervasives.do_at_exit"),do_at_exit); - var - set_binary_mode_in=caml_ml_set_binary_mode, - close_in=caml_ml_close_channel, - in_channel_length=caml_ml_channel_size, - pos_in=runtime.caml_ml_pos_in, - seek_in=runtime.caml_ml_seek_in, - input_value=caml_input_value, - input_binary_int=runtime.caml_ml_input_int, - input_byte=caml_ml_input_char, - input_char=caml_ml_input_char, - set_binary_mode_out=caml_ml_set_binary_mode, - out_channel_length=caml_ml_channel_size, - pos_out=runtime.caml_ml_pos_out, - seek_out=runtime.caml_ml_seek_out, - output_binary_int=runtime.caml_ml_output_int, - output_byte=caml_ml_output_char, - output_char=caml_ml_output_char, - flush=caml_ml_flush, - Stdlib= - [0, - invalid_arg, - failwith, - Exit, - Match_failure, - Assert_failure, - Invalid_argument, - Failure, - Not_found, - Out_of_memory, - Stack_overflow, - Sys_error, - End_of_file, - Division_by_zero, - Sys_blocked_io, - Undefined_recursive_module, - min, - max, - abs, - max_int, - min_int, - lnot, - infinity, - neg_infinity, - nan, - max_float, - min_float, - epsilon, - cat, - char_of_int, - string_of_bool, - bool_of_string_opt, - bool_of_string, - string_of_int, - int_of_string_opt, - to_string, - of_string_opt, - append, - stdin, - stdout, - stderr, - print_char, - print_string, - print_bytes, - print_int, - print_float, - print_endline, - print_newline, - prerr_char, - prerr_string, - prerr_bytes, - prerr_int, - prerr_float, - prerr_endline, - prerr_newline, - read_line, - read_int_opt, - read_int, - read_float_opt, - read_float, - open_out, - open_out_bin, - open_out_gen, - flush, - flush_all, - output_char, - output_string, - output_bytes, - output, - output_substring, - output_byte, - output_binary_int, - output_value, - seek_out, - pos_out, - out_channel_length, - close_out, - close_out_noerr, - set_binary_mode_out, - open_in, - open_in_bin, - open_in_gen, - input_char, - input_line, - input, - really_input, - really_input_string, - input_byte, - input_binary_int, - input_value, - seek_in, - pos_in, - in_channel_length, - close_in, - close_in_noerr, - set_binary_mode_in, - [0, - runtime.caml_ml_seek_out_64, - runtime.caml_ml_pos_out_64, - caml_ml_channel_size_64, - runtime.caml_ml_seek_in_64, - runtime.caml_ml_pos_in_64, - caml_ml_channel_size_64], - string_of_format, - symbol, - exit, - at_exit, - valid_float_lexem, - unsafe_really_input, - do_at_exit]; - caml_register_global(759,Stdlib,"Stdlib"); - var - Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)], - Stdlib_Pervasives= - [0, - invalid_arg, - failwith, - Exit$0, - min, - max, - abs, - max_int, - min_int, - lnot, - infinity, - neg_infinity, - nan, - max_float, - min_float, - epsilon, - cat, - char_of_int, - string_of_bool, - bool_of_string, - bool_of_string_opt, - string_of_int, - int_of_string_opt, - to_string, - of_string_opt, - append, - stdin, - stdout, - stderr, - print_char, - print_string, - print_bytes, - print_int, - print_float, - print_endline, - print_newline, - prerr_char, - prerr_string, - prerr_bytes, - prerr_int, - prerr_float, - prerr_endline, - prerr_newline, - read_line, - read_int, - read_int_opt, - read_float, - read_float_opt, - open_out, - open_out_bin, - open_out_gen, - flush, - flush_all, - output_char, - output_string, - output_bytes, - output, - output_substring, - output_byte, - output_binary_int, - output_value, - seek_out, - pos_out, - out_channel_length, - close_out, - close_out_noerr, - set_binary_mode_out, - open_in, - open_in_bin, - open_in_gen, - input_char, - input_line, - input, - really_input, - really_input_string, - input_byte, - input_binary_int, - input_value, - seek_in, - pos_in, - in_channel_length, - close_in, - close_in_noerr, - set_binary_mode_in, - string_of_format, - symbol, - exit, - at_exit, - valid_float_lexem, - do_at_exit]; - caml_register_global(760,Stdlib_Pervasives,"Stdlib__Pervasives"); - function empty(param){return 0} - function return$0(x,param){return [0,x,empty]} - function cons(x,next,param){return [0,x,next]} - function append$0(seq1,seq2,param) - {var match=caml_call1(seq1,0); - if(match) - {var next=match[2],x=match[1]; - return [0,x,function(_Cp_){return append$0(next,seq2,_Cp_)}]} - return caml_call1(seq2,0)} - function map(f,seq,param) - {var match=caml_call1(seq,0); - if(match) - {var - next=match[2], - x=match[1], - _Cn_=function(_Co_){return map(f,next,_Co_)}; - return [0,caml_call1(f,x),_Cn_]} - return 0} - function filter_map(f,seq,param) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var next=match[2],x=match[1],match$0=caml_call1(f,x); - if(match$0) - {var y=match$0[1]; - return [0,y,function(_Cm_){return filter_map(f,next,_Cm_)}]} - var seq$0=next; - continue} - return 0}} - function filter(f,seq,param) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var next=match[2],x=match[1]; - if(caml_call1(f,x)) - return [0,x,function(_Cl_){return filter(f,next,_Cl_)}]; - var seq$0=next; - continue} - return 0}} - function concat(seq,param) - {var match=caml_call1(seq,0); - if(match) - {var next=match[2],x=match[1],_Cj_=0; - return append$0(x,function(_Ck_){return concat(next,_Ck_)},_Cj_)} - return 0} - function flat_map(f,seq,param) - {var match=caml_call1(seq,0); - if(match) - {var - next=match[2], - x=match[1], - _Cg_=0, - _Ch_=function(_Ci_){return flat_map(f,next,_Ci_)}; - return append$0(caml_call1(f,x),_Ch_,_Cg_)} - return 0} - function fold_left(f,acc,seq) - {var acc$0=acc,seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var - next=match[2], - x=match[1], - acc$1=caml_call2(f,acc$0,x), - acc$0=acc$1, - seq$0=next; - continue} - return acc$0}} - function iter(f,seq) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var next=match[2],x=match[1]; - caml_call1(f,x); - var seq$0=next; - continue} - return 0}} - function unfold(f,u,param) - {var match=caml_call1(f,u); - if(match) - {var match$0=match[1],u$0=match$0[2],x=match$0[1]; - return [0,x,function(_Cf_){return unfold(f,u$0,_Cf_)}]} - return 0} - var - Stdlib_Seq= - [0, - empty, - return$0, - cons, - append$0, - map, - filter, - filter_map, - concat, - flat_map, - flat_map, - fold_left, - iter, - unfold]; - caml_register_global(761,Stdlib_Seq,"Stdlib__Seq"); - var none=0; - function some(v){return [0,v]} - function value(o,default$0){if(o){var v=o[1];return v}return default$0} - function get$0(param) - {if(param){var v=param[1];return v} - return invalid_arg(cst_option_is_None)} - function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0} - function join(param){if(param){var o=param[1];return o}return 0} - function map$0(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0} - function fold(none,some,param) - {if(param){var v=param[1];return caml_call1(some,v)}return none} - function iter$0(f,param) - {if(param){var v=param[1];return caml_call1(f,v)}return 0} - function is_none(param){return param?0:1} - function is_some(param){return param?1:0} - function equal(eq,o0,o1) - {if(o0) - {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}} - else - if(! o1)return 1; - return 0} - function compare(cmp,o0,o1) - {if(o0) - {var _Ce_=o0[1]; - if(o1){var v1=o1[1];return caml_call2(cmp,_Ce_,v1)} - return 1} - return o1?-1:0} - function to_result(none,param) - {if(param){var v=param[1];return [0,v]}return [1,none]} - function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0} - function to_seq(param) - {if(param){var v=param[1];return function(_Cd_){return return$0(v,_Cd_)}} - return empty} - var - Stdlib_Option= - [0, - none, - some, - value, - get$0, - bind, - join, - map$0, - fold, - iter$0, - is_none, - is_some, - equal, - compare, - to_result, - to_list, - to_seq]; - caml_register_global(762,Stdlib_Option,"Stdlib__Option"); - function left(v){return [0,v]} - function right(v){return [1,v]} - function is_left(param){return 0 === param[0]?1:0} - function is_right(param){return 0 === param[0]?0:1} - function find_left(param) - {if(0 === param[0]){var v=param[1];return [0,v]}return 0} - function find_right(param) - {if(0 === param[0])return 0;var v=param[1];return [0,v]} - function map_left(f,e) - {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} - function map_right(f,e) - {if(0 === e[0])return e;var v=e[1];return [1,caml_call1(f,v)]} - function map$1(left,right,param) - {if(0 === param[0]){var v=param[1];return [0,caml_call1(left,v)]} - var v$0=param[1]; - return [1,caml_call1(right,v$0)]} - function fold$0(left,right,param) - {if(0 === param[0]){var v=param[1];return caml_call1(left,v)} - var v$0=param[1]; - return caml_call1(right,v$0)} - function equal$0(left,right,e1,e2) - {if(0 === e1[0]) - {var _Cb_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Cb_,v2)}} - else - {var _Cc_=e1[1]; - if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Cc_,v2$0)}} - return 0} - function compare$0(left,right,e1,e2) - {if(0 === e1[0]) - {var _B$_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_B$_,v2)} - return -1} - var _Ca_=e1[1]; - if(0 === e2[0])return 1; - var v2$0=e2[1]; - return caml_call2(right,_Ca_,v2$0)} - var - Stdlib_Either= - [0, - left, - right, - is_left, - is_right, - find_left, - find_right, - map_left, - map_right, - map$1, - fold$0, - fold$0, - fold$0, - equal$0, - compare$0]; - caml_register_global(763,Stdlib_Either,"Stdlib__Either"); - function ok(v){return [0,v]} - function error(e){return [1,e]} - function value$0(r,default$0) - {if(0 === r[0]){var v=r[1];return v}return default$0} - function get_ok(param) - {if(0 === param[0]){var v=param[1];return v} - return invalid_arg(cst_result_is_Error)} - function get_error(param) - {if(0 === param[0])return invalid_arg(cst_result_is_Ok); - var e=param[1]; - return e} - function bind$0(r,f) - {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r} - function join$0(e){if(0 === e[0]){var r=e[1];return r}return e} - function map$2(f,e) - {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} - function map_error(f,v) - {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]} - function fold$1(ok,error,param) - {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)} - var e=param[1]; - return caml_call1(error,e)} - function iter$1(f,param) - {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0} - function iter_error(f,param) - {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)} - function is_ok(param){return 0 === param[0]?1:0} - function is_error(param){return 0 === param[0]?0:1} - function equal$1(ok,error,r0,r1) - {if(0 === r0[0]) - {var _B9_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_B9_,v1)}} - else - {var _B__=r0[1]; - if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_B__,e1)}} - return 0} - function compare$1(ok,error,r0,r1) - {if(0 === r0[0]) - {var _B7_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_B7_,v1)} - return -1} - var _B8_=r0[1]; - if(0 === r1[0])return 1; - var e1=r1[1]; - return caml_call2(error,_B8_,e1)} - function to_option(param) - {if(0 === param[0]){var v=param[1];return [0,v]}return 0} - function to_list$0(param) - {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0} - function to_seq$0(param) - {if(0 === param[0]) - {var v=param[1];return function(_B6_){return return$0(v,_B6_)}} - return empty} - var - Stdlib_Result= - [0, - ok, - error, - value$0, - get_ok, - get_error, - bind$0, - join$0, - map$2, - map_error, - fold$1, - iter$1, - iter_error, - is_ok, - is_error, - equal$1, - compare$1, - to_option, - to_list$0, - to_seq$0]; - caml_register_global(764,Stdlib_Result,"Stdlib__Result"); - function equal$2(_B5_,_B4_){return _B5_ === _B4_?1:0} - var compare$2=caml_int_compare; - function to_float(param){return param?1.:0.} - function to_string$0(param){return param?cst_true$2:cst_false$2} - function _m_(_B3_){return _B3_} - var - Stdlib_Bool= - [0, - function(_B2_){return 1 - _B2_}, - equal$2, - compare$2, - _m_, - to_float, - to_string$0]; - caml_register_global(765,Stdlib_Bool,"Stdlib__Bool"); - function chr(n) - {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)} - function escaped(c) - {var switch$0=0; - if(40 <= c) - {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1} - else - if(32 <= c) - {if(39 <= c)return cst$2;switch$0 = 1} - else - if(! (14 <= c)) - switch(c) - {case 8:return cst_b; - case 9:return cst_t; - case 10:return cst_n; - case 13:return cst_r - } - if(switch$0) - {var s$0=caml_create_bytes(1); - caml_bytes_unsafe_set(s$0,0,c); - return caml_string_of_bytes(s$0)} - var s=caml_create_bytes(4); - caml_bytes_unsafe_set(s,0,92); - caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0); - caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0); - caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0); - return caml_string_of_bytes(s)} - function lowercase(c) - {var _B1_=c - 192 | 0,switch$0=0; - if(30 < _B1_ >>> 0) - {if(! (25 < _B1_ + 127 >>> 0))switch$0 = 1} - else - if(23 !== _B1_)switch$0 = 1; - return switch$0?c + 32 | 0:c} - function uppercase(c) - {var _B0_=c - 224 | 0,switch$0=0; - if(30 < _B0_ >>> 0) - {if(! (25 < _B0_ + 127 >>> 0))switch$0 = 1} - else - if(23 !== _B0_)switch$0 = 1; - return switch$0?c - 32 | 0:c} - function lowercase_ascii(c){return 25 < c - 65 >>> 0?c:c + 32 | 0} - function uppercase_ascii(c){return 25 < c - 97 >>> 0?c:c - 32 | 0} - function compare$3(c1,c2){return c1 - c2 | 0} - function equal$3(c1,c2){return 0 === (c1 - c2 | 0)?1:0} - var - Stdlib_Char= - [0, - chr, - escaped, - lowercase, - uppercase, - lowercase_ascii, - uppercase_ascii, - compare$3, - equal$3]; - caml_register_global(766,Stdlib_Char,"Stdlib__Char"); - var - min$0=0, - max$0=1114111, - lo_bound=55295, - hi_bound=57344, - bom=65279, - rep=65533; - function succ(u) - {return u === 55295 - ?hi_bound - :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0} - function pred(u) - {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0} - function is_valid(i) - {var _BW_=0 <= i?1:0,_BX_=_BW_?i <= 55295?1:0:_BW_; - if(_BX_) - var _BY_=_BX_; - else - var _BZ_=57344 <= i?1:0,_BY_=_BZ_?i <= 1114111?1:0:_BZ_; - return _BY_} - function of_int(i) - {return is_valid(i) - ?i - :invalid_arg - (cat(caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))} - function is_char(u){return u < 256?1:0} - function of_char(c){return c} - function to_char(u) - {return 255 < u - ?invalid_arg - (cat - (cst_U, - cat - (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character))) - :u} - function unsafe_to_char(_BV_){return _BV_} - function equal$4(_BU_,_BT_){return _BU_ === _BT_?1:0} - var compare$4=caml_int_compare; - function hash(_BS_){return _BS_} - function _n_(_BR_){return _BR_} - var - Stdlib_Uchar= - [0, - min$0, - max$0, - bom, - rep, - succ, - pred, - is_valid, - of_int, - function(_BQ_){return _BQ_}, - _n_, - is_char, - of_char, - to_char, - unsafe_to_char, - equal$4, - compare$4, - hash]; - caml_register_global(767,Stdlib_Uchar,"Stdlib__Uchar"); - var - executable_name=runtime.caml_sys_executable_name(0), - match=runtime.caml_sys_get_config(0), - os_type=match[1], - match$0=[0,caml_string_of_jsbytes("js_of_ocaml")], - unix=runtime.caml_sys_const_ostype_unix(0), - win32=runtime.caml_sys_const_ostype_win32(0), - cygwin=runtime.caml_sys_const_ostype_cygwin(0), - max_array_length=runtime.caml_sys_const_max_wosize(0), - max_floatarray_length=max_array_length / 2 | 0, - max_string_length=(4 * max_array_length | 0) - 1 | 0, - big_endian=0, - match$1=32, - int_size=32; - function getenv_opt(s) - {try - {var _BO_=[0,caml_sys_getenv(s)];return _BO_} - catch(_BP_) - {_BP_ = caml_wrap_exception(_BP_); - if(_BP_ === Not_found)return 0; - throw _BP_}} - var interactive=[0,0]; - function set_signal(sig_num,sig_beh){return 0} - var - Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)], - sigabrt=-1, - sigalrm=-2, - sigfpe=-3, - sighup=-4, - sigill=-5, - sigint=-6, - sigkill=-7, - sigpipe=-8, - sigquit=-9, - sigsegv=-10, - sigterm=-11, - sigusr1=-12, - sigusr2=-13, - sigchld=-14, - sigcont=-15, - sigstop=-16, - sigtstp=-17, - sigttin=-18, - sigttou=-19, - sigvtalrm=-20, - sigprof=-21, - sigbus=-22, - sigpoll=-23, - sigsys=-24, - sigtrap=-25, - sigurg=-26, - sigxcpu=-27, - sigxfsz=-28; - function catch_break(on){return on?0:0} - function Make(_BN_,_BM_){return [0,1]} - var - Immediate64=[0,Make], - Stdlib_Sys= - [0, - executable_name, - getenv_opt, - interactive, - os_type, - match$0, - unix, - win32, - cygwin, - match$1, - int_size, - big_endian, - max_string_length, - max_array_length, - max_floatarray_length, - set_signal, - sigabrt, - sigalrm, - sigfpe, - sighup, - sigill, - sigint, - sigkill, - sigpipe, - sigquit, - sigsegv, - sigterm, - sigusr1, - sigusr2, - sigchld, - sigcont, - sigstop, - sigtstp, - sigttin, - sigttou, - sigvtalrm, - sigprof, - sigbus, - sigpoll, - sigsys, - sigtrap, - sigurg, - sigxcpu, - sigxfsz, - Break, - catch_break, - ocaml_version, - runtime.caml_ml_enable_runtime_warnings, - runtime.caml_ml_runtime_warnings_enabled, - Immediate64]; - caml_register_global(768,Stdlib_Sys,"Stdlib__Sys"); - function length(l) - {var len=0,param=l; - for(;;) - {if(param) - {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0; - continue} - return len}} - function cons$0(a,l){return [0,a,l]} - function hd(param) - {if(param){var a=param[1];return a}return failwith(cst_hd)} - function tl(param) - {if(param){var l=param[2];return l}return failwith(cst_tl)} - function nth(l,n) - {if(0 <= n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2],a=l$0[1]; - if(0 === n$0)return a; - var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; - continue} - return failwith(cst_nth)}} - return invalid_arg(cst_List_nth)} - function nth_opt(l,n) - {if(0 <= n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2],a=l$0[1]; - if(0 === n$0)return [0,a]; - var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; - continue} - return 0}} - return invalid_arg(cst_List_nth$0)} - function rev_append(l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1; - continue} - return l2$0}} - function rev(l){return rev_append(l,0)} - function init_aux(i,n,f) - {if(n <= i)return 0; - var r=caml_call1(f,i); - return [0,r,init_aux(i + 1 | 0,n,f)]} - function init(len,f) - {if(0 <= len) - {if(50 < len) - {var acc=0,i=0; - for(;;) - {if(len <= i)return rev(acc); - var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0; - continue}} - return init_aux(0,len,f)} - return invalid_arg(cst_List_init)} - function flatten(param) - {if(param){var r=param[2],l=param[1];return append(l,flatten(r))} - return 0} - function map$3(f,param) - {if(param) - {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$3(f,l)]} - return 0} - function _o_(i,f,param) - {if(param) - {var l=param[2],a=param[1],r=caml_call2(f,i,a); - return [0,r,_o_(i + 1 | 0,f,l)]} - return 0} - function mapi(f,l){return _o_(0,f,l)} - function rev_map(f,param) - {var accu=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - a=param$0[1], - accu$0=[0,caml_call1(f,a),accu], - accu=accu$0, - param$0=l; - continue} - return accu}} - function iter$2(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1]; - caml_call1(f,a); - var param$0=l; - continue} - return 0}} - function iteri(f,l$0) - {var i=0,param=l$0; - for(;;) - {if(param) - {var l=param[2],a=param[1]; - caml_call2(f,i,a); - var i$0=i + 1 | 0,i=i$0,param=l; - continue} - return 0}} - function fold_left$0(f,accu,l) - {var accu$0=accu,l$0=l; - for(;;) - {if(l$0) - {var - l$1=l$0[2], - a=l$0[1], - accu$1=caml_call2(f,accu$0,a), - accu$0=accu$1, - l$0=l$1; - continue} - return accu$0}} - function fold_right(f,l,accu) - {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))} - return accu} - function map2(f,l1,l2) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2); - return [0,r,map2(f,l1$0,l2$0)]}} - else - if(! l2)return 0; - return invalid_arg(cst_List_map2)} - function rev_map2(f,l1,l2) - {var accu=0,l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - accu$0=[0,caml_call2(f,a1,a2),accu], - accu=accu$0, - l1$0=l1$1, - l2$0=l2$1; - continue}} - else - if(! l2$0)return accu; - return invalid_arg(cst_List_rev_map2)}} - function iter2(f,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1]; - caml_call2(f,a1,a2); - var l1$0=l1$1,l2$0=l2$1; - continue}} - else - if(! l2$0)return 0; - return invalid_arg(cst_List_iter2)}} - function fold_left2(f,accu,l1,l2) - {var accu$0=accu,l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - accu$1=caml_call3(f,accu$0,a1,a2), - accu$0=accu$1, - l1$0=l1$1, - l2$0=l2$1; - continue}} - else - if(! l2$0)return accu$0; - return invalid_arg(cst_List_fold_left2)}} - function fold_right2(f,l1,l2,accu) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; - return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}} - else - if(! l2)return accu; - return invalid_arg(cst_List_fold_right2)} - function for_all(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1],_BL_=caml_call1(p,a); - if(_BL_){var param$0=l;continue} - return _BL_} - return 1}} - function exists(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1],_BK_=caml_call1(p,a); - if(_BK_)return _BK_; - var param$0=l; - continue} - return 0}} - function for_all2(p,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - _BJ_=caml_call2(p,a1,a2); - if(_BJ_){var l1$0=l1$1,l2$0=l2$1;continue} - return _BJ_}} - else - if(! l2$0)return 1; - return invalid_arg(cst_List_for_all2)}} - function exists2(p,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - _BI_=caml_call2(p,a1,a2); - if(_BI_)return _BI_; - var l1$0=l1$1,l2$0=l2$1; - continue}} - else - if(! l2$0)return 0; - return invalid_arg(cst_List_exists2)}} - function mem(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1],_BH_=0 === caml_compare(a,x)?1:0; - if(_BH_)return _BH_; - var param$0=l; - continue} - return 0}} - function memq(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1],_BG_=a === x?1:0; - if(_BG_)return _BG_; - var param$0=l; - continue} - return 0}} - function assoc(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(0 === caml_compare(a,x))return b; - var param$0=l; - continue} - throw Not_found}} - function assoc_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(0 === caml_compare(a,x))return [0,b]; - var param$0=l; - continue} - return 0}} - function assq(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(a === x)return b; - var param$0=l; - continue} - throw Not_found}} - function assq_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(a === x)return [0,b]; - var param$0=l; - continue} - return 0}} - function mem_assoc(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - match=param$0[1], - a=match[1], - _BF_=0 === caml_compare(a,x)?1:0; - if(_BF_)return _BF_; - var param$0=l; - continue} - return 0}} - function mem_assq(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],a=match[1],_BE_=a === x?1:0; - if(_BE_)return _BE_; - var param$0=l; - continue} - return 0}} - function remove_assoc(x,param) - {if(param) - {var l=param[2],pair=param[1],a=pair[1]; - return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]} - return 0} - function remove_assq(x,param) - {if(param) - {var l=param[2],pair=param[1],a=pair[1]; - return a === x?l:[0,pair,remove_assq(x,l)]} - return 0} - function find(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x))return x; - var param$0=l; - continue} - throw Not_found}} - function find_opt(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x))return [0,x]; - var param$0=l; - continue} - return 0}} - function find_map(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1],result=caml_call1(f,x); - if(result)return result; - var param$0=l; - continue} - return 0}} - function find_all(p) - {var accu=0; - return function(param$0) - {var accu$0=accu,param=param$0; - for(;;) - {if(param) - {var l=param[2],x=param[1]; - if(caml_call1(p,x)) - {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue} - var param=l; - continue} - return rev(accu$0)}}} - function filteri(p,param) - {var i=0,acc=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - acc$0=caml_call2(p,i,x)?[0,x,acc]:acc, - i$0=i + 1 | 0, - i=i$0, - acc=acc$0, - param$0=l; - continue} - return rev(acc)}} - function filter_map$0(f) - {var accu=0; - return function(param$0) - {var accu$0=accu,param=param$0; - for(;;) - {if(param) - {var l=param[2],x=param[1],match=caml_call1(f,x); - if(match) - {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l; - continue} - var param=l; - continue} - return rev(accu$0)}}} - function concat_map(f,param) - {var acc=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - xs=caml_call1(f,x), - acc$0=rev_append(xs,acc), - acc=acc$0, - param$0=l; - continue} - return rev(acc)}} - function fold_left_map(f,accu,param) - {var accu$0=accu,l_accu=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - match=caml_call2(f,accu$0,x), - x$0=match[2], - accu$1=match[1], - l_accu$0=[0,x$0,l_accu], - accu$0=accu$1, - l_accu=l_accu$0, - param$0=l; - continue} - return [0,accu$0,rev(l_accu)]}} - function partition(p,param) - {var yes=0,no=0,param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x)) - {var yes$0=[0,x,yes],yes=yes$0,param$0=l;continue} - var no$0=[0,x,no],no=no$0,param$0=l; - continue} - var _BD_=rev(no); - return [0,rev(yes),_BD_]}} - function partition_map(p,param) - {var left=0,right=0,param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1],match=caml_call1(p,x); - if(0 === match[0]) - {var v=match[1],left$0=[0,v,left],left=left$0,param$0=l;continue} - var v$0=match[1],right$0=[0,v$0,right],right=right$0,param$0=l; - continue} - var _BC_=rev(right); - return [0,rev(left),_BC_]}} - function split(param) - {if(param) - {var - l=param[2], - match=param[1], - y=match[2], - x=match[1], - match$0=split(l), - ry=match$0[2], - rx=match$0[1]; - return [0,[0,x,rx],[0,y,ry]]} - return _p_} - function combine(l1,l2) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; - return [0,[0,a1,a2],combine(l1$0,l2$0)]}} - else - if(! l2)return 0; - return invalid_arg(cst_List_combine)} - function merge(cmp,l1,l2) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; - return 0 < caml_call2(cmp,h1,h2) - ?[0,h2,merge(cmp,l1,t2)] - :[0,h1,merge(cmp,t1,l2)]} - return l1} - return l2} - function fast_sort(cmp,l) - {function rev_sort(n,l) - {if(2 === n) - {if(l) - {var _By_=l[2]; - if(_By_) - {var - tl=_By_[2], - x2=_By_[1], - x1=l[1], - s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _BA_=l[2]; - if(_BA_) - {var _BB_=_BA_[2]; - if(_BB_) - {var - tl$1=_BB_[2], - x3=_BB_[1], - x2$0=_BA_[1], - x1$0=l[1], - s$0= - 0 < caml_call2(cmp,x1$0,x2$0) - ?0 < caml_call2(cmp,x2$0,x3) - ?[0,x1$0,[0,x2$0,[0,x3,0]]] - :0 < caml_call2(cmp,x1$0,x3) - ?[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x3,[0,x1$0,[0,x2$0,0]]] - :0 < caml_call2(cmp,x1$0,x3) - ?[0,x2$0,[0,x1$0,[0,x3,0]]] - :0 < caml_call2(cmp,x2$0,x3) - ?[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x3,[0,x2$0,[0,x1$0,0]]]; - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; - if(0 < caml_call2(cmp,h1,h2)) - {var accu$0=[0,h2,accu],l2=t2,accu=accu$0;continue} - var accu$1=[0,h1,accu],l1=t1,accu=accu$1; - continue} - var _Bz_=rev_append(l1,accu)} - else - var _Bz_=rev_append(l2,accu); - return [0,_Bz_,tl$0]}} - function sort(n,l) - {if(2 === n) - {if(l) - {var _Bu_=l[2]; - if(_Bu_) - {var - tl=_Bu_[2], - x2=_Bu_[1], - x1=l[1], - s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _Bw_=l[2]; - if(_Bw_) - {var _Bx_=_Bw_[2]; - if(_Bx_) - {var - tl$1=_Bx_[2], - x3=_Bx_[1], - x2$0=_Bw_[1], - x1$0=l[1], - s$0= - 0 < caml_call2(cmp,x1$0,x2$0) - ?0 < caml_call2(cmp,x1$0,x3) - ?0 < caml_call2(cmp,x2$0,x3) - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x2$0,[0,x1$0,[0,x3,0]]] - :0 < caml_call2(cmp,x2$0,x3) - ?0 < caml_call2(cmp,x1$0,x3) - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x1$0,[0,x2$0,[0,x3,0]]]; - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=rev_sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=rev_sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; - if(0 < caml_call2(cmp,h1,h2)) - {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} - var accu$1=[0,h2,accu],l2=t2,accu=accu$1; - continue} - var _Bv_=rev_append(l1,accu)} - else - var _Bv_=rev_append(l2,accu); - return [0,_Bv_,tl$0]}} - var len=length(l); - return 2 <= len?sort(len,l)[1]:l} - function sort_uniq(cmp,l) - {function rev_sort(n,l) - {if(2 === n) - {if(l) - {var _Bl_=l[2]; - if(_Bl_) - {var - tl=_Bl_[2], - x2=_Bl_[1], - x1=l[1], - c$0=caml_call2(cmp,x1,x2), - s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _Bn_=l[2]; - if(_Bn_) - {var _Bo_=_Bn_[2]; - if(_Bo_) - {var - tl$1=_Bo_[2], - x3=_Bo_[1], - x2$0=_Bn_[1], - x1$0=l[1], - c$1=caml_call2(cmp,x1$0,x2$0); - if(0 === c$1) - var - c$2=caml_call2(cmp,x2$0,x3), - _Bp_= - 0 === c$2 - ?[0,x2$0,0] - :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]], - s$0=_Bp_; - else - if(0 < c$1) - {var c$3=caml_call2(cmp,x2$0,x3); - if(0 === c$3) - var _Bq_=[0,x1$0,[0,x2$0,0]]; - else - if(0 < c$3) - var _Bq_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - else - var - c$4=caml_call2(cmp,x1$0,x3), - _Br_= - 0 === c$4 - ?[0,x1$0,[0,x2$0,0]] - :0 < c$4 - ?[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x3,[0,x1$0,[0,x2$0,0]]], - _Bq_=_Br_; - var s$0=_Bq_} - else - {var c$5=caml_call2(cmp,x1$0,x3); - if(0 === c$5) - var _Bs_=[0,x2$0,[0,x1$0,0]]; - else - if(0 < c$5) - var _Bs_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - else - var - c$6=caml_call2(cmp,x2$0,x3), - _Bt_= - 0 === c$6 - ?[0,x2$0,[0,x1$0,0]] - :0 < c$6 - ?[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x3,[0,x2$0,[0,x1$0,0]]], - _Bs_=_Bt_; - var s$0=_Bs_} - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); - if(0 === c) - {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} - if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue} - var accu$2=[0,h1,accu],l1=t1,accu=accu$2; - continue} - var _Bm_=rev_append(l1,accu)} - else - var _Bm_=rev_append(l2,accu); - return [0,_Bm_,tl$0]}} - function sort(n,l) - {if(2 === n) - {if(l) - {var _Bc_=l[2]; - if(_Bc_) - {var - tl=_Bc_[2], - x2=_Bc_[1], - x1=l[1], - c$0=caml_call2(cmp,x1,x2), - s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _Be_=l[2]; - if(_Be_) - {var _Bf_=_Be_[2]; - if(_Bf_) - {var - tl$1=_Bf_[2], - x3=_Bf_[1], - x2$0=_Be_[1], - x1$0=l[1], - c$1=caml_call2(cmp,x1$0,x2$0); - if(0 === c$1) - var - c$2=caml_call2(cmp,x2$0,x3), - _Bg_= - 0 === c$2 - ?[0,x2$0,0] - :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], - s$0=_Bg_; - else - if(0 <= c$1) - {var c$3=caml_call2(cmp,x1$0,x3); - if(0 === c$3) - var _Bh_=[0,x2$0,[0,x1$0,0]]; - else - if(0 <= c$3) - var - c$4=caml_call2(cmp,x2$0,x3), - _Bi_= - 0 === c$4 - ?[0,x2$0,[0,x1$0,0]] - :0 <= c$4 - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]], - _Bh_=_Bi_; - else - var _Bh_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - var s$0=_Bh_} - else - {var c$5=caml_call2(cmp,x2$0,x3); - if(0 === c$5) - var _Bj_=[0,x1$0,[0,x2$0,0]]; - else - if(0 <= c$5) - var - c$6=caml_call2(cmp,x1$0,x3), - _Bk_= - 0 === c$6 - ?[0,x1$0,[0,x2$0,0]] - :0 <= c$6 - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]], - _Bj_=_Bk_; - else - var _Bj_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - var s$0=_Bj_} - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=rev_sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=rev_sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); - if(0 === c) - {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} - if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} - var accu$2=[0,h2,accu],l2=t2,accu=accu$2; - continue} - var _Bd_=rev_append(l1,accu)} - else - var _Bd_=rev_append(l2,accu); - return [0,_Bd_,tl$0]}} - var len=length(l); - return 2 <= len?sort(len,l)[1]:l} - function compare_lengths(l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue} - return 1} - return l2$0?-1:0}} - function compare_length_with(l,n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2]; - if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue} - return 1} - return 0 === n$0?0:0 < n$0?-1:1}} - function equal$5(eq,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - _Bb_=caml_call2(eq,a1,a2); - if(_Bb_){var l1$0=l1$1,l2$0=l2$1;continue} - return _Bb_}} - else - if(! l2$0)return 1; - return 0}} - function compare$5(cmp,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {var _A$_=l1$0[2],_Ba_=l1$0[1]; - if(l2$0) - {var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_Ba_,a2); - if(0 === c){var l1$0=_A$_,l2$0=l2$1;continue} - return c} - return 1} - return l2$0?-1:0}} - function to_seq$1(l) - {function aux(l,param) - {if(l) - {var tail=l[2],x=l[1]; - return [0,x,function(_A__){return aux(tail,_A__)}]} - return 0} - return function(_A9_){return aux(l,_A9_)}} - function of_seq(seq) - {function direct(depth,seq) - {if(0 === depth) - {var _A8_=0; - return rev(fold_left(function(acc,x){return [0,x,acc]},_A8_,seq))} - var match=caml_call1(seq,0); - if(match) - {var next=match[2],x=match[1]; - return [0,x,direct(depth - 1 | 0,next)]} - return 0} - return direct(500,seq)} - var - include$0= - [0, - length, - compare_lengths, - compare_length_with, - cons$0, - hd, - tl, - nth, - nth_opt, - rev, - init, - append, - rev_append, - flatten, - flatten, - equal$5, - compare$5, - iter$2, - iteri, - map$3, - mapi, - rev_map, - filter_map$0, - concat_map, - fold_left_map, - fold_left$0, - fold_right, - iter2, - map2, - rev_map2, - fold_left2, - fold_right2, - for_all, - exists, - for_all2, - exists2, - mem, - memq, - find, - find_opt, - find_map, - find_all, - find_all, - filteri, - partition, - partition_map, - assoc, - assoc_opt, - assq, - assq_opt, - mem_assoc, - mem_assq, - remove_assoc, - remove_assq, - split, - combine, - fast_sort, - fast_sort, - fast_sort, - sort_uniq, - merge, - to_seq$1, - of_seq]; - caml_register_global(769,include$0,"Stdlib__List"); - var zero=0,one=1,minus_one=-1; - function abs$0(x){return 0 <= x?x:- x | 0} - var max_int$0=2147483647,min_int$0=-2147483648; - function lognot(x){return x ^ -1} - function equal$6(_A7_,_A6_){return _A7_ === _A6_?1:0} - var compare$6=caml_int_compare; - function min$1(x,y){return x <= y?x:y} - function max$1(x,y){return y <= x?x:y} - function to_string$1(x){return caml_string_of_jsbytes("" + x)} - var - Stdlib_Int= - [0, - zero, - one, - minus_one, - abs$0, - max_int$0, - min_int$0, - lognot, - equal$6, - compare$6, - min$1, - max$1, - to_string$1]; - caml_register_global(770,Stdlib_Int,"Stdlib__Int"); - function make$0(n,c) - {var s=caml_create_bytes(n);caml_fill_bytes(s,0,n,c);return s} - function init$0(n,f) - {var s=caml_create_bytes(n),_A4_=n - 1 | 0,_A3_=0; - if(! (_A4_ < 0)) - {var i=_A3_; - for(;;) - {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); - var _A5_=i + 1 | 0; - if(_A4_ !== i){var i=_A5_;continue} - break}} - return s} - var empty$0=caml_create_bytes(0); - function copy(s) - {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len); - caml_blit_bytes(s,0,r,0,len); - return r} - function of_bytes(b){return caml_string_of_bytes(copy(b))} - function to_bytes(s){return copy(caml_bytes_of_string(s))} - function sub(s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r} - return invalid_arg(cst_String_sub_Bytes_sub)} - function sub_string(b,ofs,len) - {return caml_string_of_bytes(sub(b,ofs,len))} - function symbol$0(a,b) - {var c=a + b | 0,_A2_=b < 0?1:0,match=c < 0?1:0,switch$0=0; - if(a < 0) - {if(_A2_ && ! match)switch$0 = 1} - else - if(! _A2_ && match)switch$0 = 1; - return switch$0?invalid_arg(cst_Bytes_extend):c} - function extend(s,left,right) - {var - len=symbol$0(symbol$0(caml_ml_bytes_length(s),left),right), - r=caml_create_bytes(len); - if(0 <= left) - var dstoff=left,srcoff=0; - else - var dstoff=0,srcoff=- left | 0; - var cpylen=min$1(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0); - if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen); - return r} - function fill(s,ofs,len,c) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_fill_bytes(s,ofs,len,c); - return invalid_arg(cst_String_fill_Bytes_fill)} - function blit(s1,ofs1,s2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((caml_ml_bytes_length(s1) - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) - return caml_blit_bytes(s1,ofs1,s2,ofs2,len); - return invalid_arg(cst_Bytes_blit)} - function blit$0(s1,ofs1,s2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((caml_ml_string_length(s1) - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) - return caml_blit_string(s1,ofs1,s2,ofs2,len); - return invalid_arg(cst_String_blit_Bytes_blit_str)} - function iter$3(f,a) - {var _A0_=caml_ml_bytes_length(a) - 1 | 0,_AZ_=0; - if(! (_A0_ < 0)) - {var i=_AZ_; - for(;;) - {caml_call1(f,caml_bytes_unsafe_get(a,i)); - var _A1_=i + 1 | 0; - if(_A0_ !== i){var i=_A1_;continue} - break}} - return 0} - function iteri$0(f,a) - {var _AX_=caml_ml_bytes_length(a) - 1 | 0,_AW_=0; - if(! (_AX_ < 0)) - {var i=_AW_; - for(;;) - {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); - var _AY_=i + 1 | 0; - if(_AX_ !== i){var i=_AY_;continue} - break}} - return 0} - function concat$0(sep,l) - {if(l) - {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; - for(;;) - {if(param) - {var _AT_=param[1]; - if(param[2]) - {var - tl=param[2], - x=(caml_ml_bytes_length(_AT_) + seplen | 0) + acc | 0, - acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat), - acc=acc$0, - param=tl; - continue} - var _AV_=caml_ml_bytes_length(_AT_) + acc | 0} - else - var _AV_=acc; - var dst=caml_create_bytes(_AV_),pos=pos$1,param$0=l; - for(;;) - {if(param$0) - {var _AU_=param$0[1]; - if(param$0[2]) - {var tl$0=param$0[2]; - caml_blit_bytes(_AU_,0,dst,pos,caml_ml_bytes_length(_AU_)); - caml_blit_bytes - (sep,0,dst,pos + caml_ml_bytes_length(_AU_) | 0,seplen); - var - pos$0=(pos + caml_ml_bytes_length(_AU_) | 0) + seplen | 0, - pos=pos$0, - param$0=tl$0; - continue} - caml_blit_bytes(_AU_,0,dst,pos,caml_ml_bytes_length(_AU_)); - return dst} - return dst}}} - return empty$0} - function cat$0(s1,s2) - {var - l1=caml_ml_bytes_length(s1), - l2=caml_ml_bytes_length(s2), - r=caml_create_bytes(l1 + l2 | 0); - caml_blit_bytes(s1,0,r,0,l1); - caml_blit_bytes(s2,0,r,l1,l2); - return r} - function is_space(param) - {var _AS_=param - 9 | 0,switch$0=0; - if(4 < _AS_ >>> 0) - {if(23 === _AS_)switch$0 = 1} - else - if(2 !== _AS_)switch$0 = 1; - return switch$0?1:0} - function trim(s) - {var len=caml_ml_bytes_length(s),i=[0,0]; - for(;;) - {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1]))) - {i[1]++;continue} - var j=[0,len - 1 | 0]; - for(;;) - {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1]))) - {j[1] += -1;continue} - return i[1] <= j[1]?sub(s,i[1],(j[1] - i[1] | 0) + 1 | 0):empty$0}}} - function escaped$0(s) - {var n=[0,0],_AL_=caml_ml_bytes_length(s) - 1 | 0,_AK_=0; - if(! (_AL_ < 0)) - {var i$0=_AK_; - for(;;) - {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0; - if(32 <= match) - {var _AP_=match - 34 | 0,switch$1=0; - if(58 < _AP_ >>> 0) - {if(93 <= _AP_)switch$1 = 1} - else - if(56 < _AP_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} - if(! switch$1){var _AQ_=1;switch$0 = 2}} - else - if(11 <= match) - {if(13 === match)switch$0 = 1} - else - if(8 <= match)switch$0 = 1; - switch(switch$0){case 0:var _AQ_=4;break;case 1:var _AQ_=2;break} - n[1] = n[1] + _AQ_ | 0; - var _AR_=i$0 + 1 | 0; - if(_AL_ !== i$0){var i$0=_AR_;continue} - break}} - if(n[1] === caml_ml_bytes_length(s))return copy(s); - var s$0=caml_create_bytes(n[1]); - n[1] = 0; - var _AN_=caml_ml_bytes_length(s) - 1 | 0,_AM_=0; - if(! (_AN_ < 0)) - {var i=_AM_; - for(;;) - {var c=caml_bytes_unsafe_get(s,i),switch$2=0; - if(35 <= c) - if(92 === c) - switch$2 = 2; - else - if(127 <= c)switch$2 = 1;else switch$2 = 3; - else - if(32 <= c) - if(34 <= c)switch$2 = 2;else switch$2 = 3; - else - if(14 <= c) - switch$2 = 1; - else - switch(c) - {case 8: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],98); - break; - case 9: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],116); - break; - case 10: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],110); - break; - case 13: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],114); - break; - default:switch$2 = 1} - switch(switch$2) - {case 1: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0); - break; - case 2: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],c); - break; - case 3:caml_bytes_unsafe_set(s$0,n[1],c);break - } - n[1]++; - var _AO_=i + 1 | 0; - if(_AN_ !== i){var i=_AO_;continue} - break}} - return s$0} - function map$4(f,s) - {var l=caml_ml_bytes_length(s); - if(0 === l)return s; - var r=caml_create_bytes(l),_AI_=l - 1 | 0,_AH_=0; - if(! (_AI_ < 0)) - {var i=_AH_; - for(;;) - {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i))); - var _AJ_=i + 1 | 0; - if(_AI_ !== i){var i=_AJ_;continue} - break}} - return r} - function mapi$0(f,s) - {var l=caml_ml_bytes_length(s); - if(0 === l)return s; - var r=caml_create_bytes(l),_AF_=l - 1 | 0,_AE_=0; - if(! (_AF_ < 0)) - {var i=_AE_; - for(;;) - {caml_bytes_unsafe_set - (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i))); - var _AG_=i + 1 | 0; - if(_AF_ !== i){var i=_AG_;continue} - break}} - return r} - function fold_left$1(f,x,a) - {var r=[0,x],_AC_=caml_ml_bytes_length(a) - 1 | 0,_AB_=0; - if(! (_AC_ < 0)) - {var i=_AB_; - for(;;) - {r[1] = caml_call2(f,r[1],caml_bytes_unsafe_get(a,i)); - var _AD_=i + 1 | 0; - if(_AC_ !== i){var i=_AD_;continue} - break}} - return r[1]} - function fold_right$0(f,a,x) - {var r=[0,x],_Az_=caml_ml_bytes_length(a) - 1 | 0; - if(! (_Az_ < 0)) - {var i=_Az_; - for(;;) - {r[1] = caml_call2(f,caml_bytes_unsafe_get(a,i),r[1]); - var _AA_=i - 1 | 0; - if(0 !== i){var i=_AA_;continue} - break}} - return r[1]} - function exists$0(p,s) - {var n=caml_ml_bytes_length(s),i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,caml_bytes_unsafe_get(s,i)))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$0(p,s) - {var n=caml_ml_bytes_length(s),i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,caml_bytes_unsafe_get(s,i))) - {var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function uppercase_ascii$0(s){return map$4(uppercase_ascii,s)} - function lowercase_ascii$0(s){return map$4(lowercase_ascii,s)} - function apply1(f,s) - {if(0 === caml_ml_bytes_length(s))return s; - var r=copy(s); - caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0))); - return r} - function capitalize_ascii(s){return apply1(uppercase_ascii,s)} - function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)} - function starts_with(prefix,s) - {var - len_s=caml_ml_bytes_length(s), - len_pre=caml_ml_bytes_length(prefix), - _Ay_=len_pre <= len_s?1:0; - if(_Ay_) - {var i=0; - for(;;) - {if(i === len_pre)return 1; - if(caml_bytes_unsafe_get(s,i) !== caml_bytes_unsafe_get(prefix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _Ay_} - function ends_with(suffix,s) - {var - len_s=caml_ml_bytes_length(s), - len_suf=caml_ml_bytes_length(suffix), - diff=len_s - len_suf | 0, - _Ax_=0 <= diff?1:0; - if(_Ax_) - {var i=0; - for(;;) - {if(i === len_suf)return 1; - if - (caml_bytes_unsafe_get(s,diff + i | 0) - !== - caml_bytes_unsafe_get(suffix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _Ax_} - function index_rec(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)throw Not_found; - if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)} - function index_rec_opt(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)return 0; - if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index_opt(s,c) - {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)} - function index_from(s,i,c) - {var l=caml_ml_bytes_length(s); - if(0 <= i && ! (l < i))return index_rec(s,l,i,c); - return invalid_arg(cst_String_index_from_Bytes_in)} - function index_from_opt(s,i,c) - {var l=caml_ml_bytes_length(s); - if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c); - return invalid_arg(cst_String_index_from_opt_Byte)} - function rindex_rec(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - throw Not_found}} - function rindex(s,c) - {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)} - function rindex_from(s,i,c) - {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c); - return invalid_arg(cst_String_rindex_from_Bytes_r)} - function rindex_rec_opt(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - return 0}} - function rindex_opt(s,c) - {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)} - function rindex_from_opt(s,i,c) - {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i)) - return rindex_rec_opt(s,i,c); - return invalid_arg(cst_String_rindex_from_opt_Byt)} - function contains_from(s,i,c) - {var l=caml_ml_bytes_length(s); - if(0 <= i && ! (l < i)) - try - {index_rec(s,l,i,c);var _Av_=1;return _Av_} - catch(_Aw_) - {_Aw_ = caml_wrap_exception(_Aw_); - if(_Aw_ === Not_found)return 0; - throw _Aw_} - return invalid_arg(cst_String_contains_from_Bytes)} - function contains(s,c){return contains_from(s,0,c)} - function rcontains_from(s,i,c) - {if(0 <= i && ! (caml_ml_bytes_length(s) <= i)) - try - {rindex_rec(s,i,c);var _At_=1;return _At_} - catch(_Au_) - {_Au_ = caml_wrap_exception(_Au_); - if(_Au_ === Not_found)return 0; - throw _Au_} - return invalid_arg(cst_String_rcontains_from_Byte)} - function compare$7(x,y){return runtime.caml_bytes_compare(x,y)} - function split_on_char(sep,s) - {var - r=[0,0], - j=[0,caml_ml_bytes_length(s)], - _Ap_=caml_ml_bytes_length(s) - 1 | 0; - if(! (_Ap_ < 0)) - {var i=_Ap_; - for(;;) - {if(caml_bytes_unsafe_get(s,i) === sep) - {var _Ar_=r[1]; - r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Ar_]; - j[1] = i} - var _As_=i - 1 | 0; - if(0 !== i){var i=_As_;continue} - break}} - var _Aq_=r[1]; - return [0,sub(s,0,j[1]),_Aq_]} - function uppercase$0(s){return map$4(uppercase,s)} - function lowercase$0(s){return map$4(lowercase,s)} - function capitalize(s){return apply1(uppercase,s)} - function uncapitalize(s){return apply1(lowercase,s)} - function to_seq$2(s) - {function aux(i,param) - {if(i === caml_ml_bytes_length(s))return 0; - var x=caml_bytes_get(s,i),_An_=i + 1 | 0; - return [0,x,function(_Ao_){return aux(_An_,_Ao_)}]} - var _Al_=0; - return function(_Am_){return aux(_Al_,_Am_)}} - function to_seqi(s) - {function aux(i,param) - {if(i === caml_ml_bytes_length(s))return 0; - var x=caml_bytes_get(s,i),_Aj_=i + 1 | 0; - return [0,[0,i,x],function(_Ak_){return aux(_Aj_,_Ak_)}]} - var _Ah_=0; - return function(_Ai_){return aux(_Ah_,_Ai_)}} - function of_seq$0(i) - {var n=[0,0],buf=[0,make$0(256,0)]; - iter - (function(c) - {if(n[1] === caml_ml_bytes_length(buf[1])) - {var - new_len= - min$1(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length); - if(caml_ml_bytes_length(buf[1]) === new_len) - failwith(cst_Bytes_of_seq_cannot_grow_b); - var new_buf=make$0(new_len,0); - blit(buf[1],0,new_buf,0,n[1]); - buf[1] = new_buf} - caml_bytes_set(buf[1],n[1],c); - n[1]++; - return 0}, - i); - return sub(buf[1],0,n[1])} - function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24} - function get_uint16_le(b,i){return caml_bytes_get16(b,i)} - function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))} - function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16} - function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16} - function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16} - function get_int32_le(b,i){return caml_bytes_get32(b,i)} - function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))} - function get_int64_le(b,i){return caml_bytes_get64(b,i)} - function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))} - function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)} - function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} - function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)} - function set_int32_be(b,i,x) - {return caml_bytes_set32(b,i,caml_int32_bswap(x))} - function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)} - function set_int64_be(b,i,x) - {return caml_bytes_set64(b,i,caml_int64_bswap(x))} - var - set_uint8=caml_bytes_set, - set_uint16_ne=caml_bytes_set16, - set_int64_ne=caml_bytes_set64, - set_int32_ne=caml_bytes_set32, - set_int16_ne=caml_bytes_set16, - set_int8=caml_bytes_set, - get_int64_ne=caml_bytes_get64, - get_int32_ne=caml_bytes_get32, - get_uint16_ne=caml_bytes_get16, - get_uint8=caml_bytes_get, - unsafe_of_string=caml_bytes_of_string, - unsafe_to_string=caml_string_of_bytes, - equal$7=runtime.caml_bytes_equal, - include$1= - [0, - make$0, - init$0, - empty$0, - copy, - to_bytes, - of_bytes, - sub, - sub_string, - extend, - fill, - blit, - blit$0, - concat$0, - cat$0, - iter$3, - iteri$0, - map$4, - mapi$0, - fold_left$1, - fold_right$0, - for_all$0, - exists$0, - trim, - escaped$0, - index, - index_opt, - rindex, - rindex_opt, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - contains, - contains_from, - rcontains_from, - uppercase$0, - lowercase$0, - capitalize, - uncapitalize, - uppercase_ascii$0, - lowercase_ascii$0, - capitalize_ascii, - uncapitalize_ascii, - compare$7, - equal$7, - starts_with, - ends_with, - unsafe_to_string, - unsafe_of_string, - split_on_char, - to_seq$2, - to_seqi, - of_seq$0, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - set_uint8, - set_int8, - set_uint16_ne, - set_int16_be, - set_int16_le, - set_int16_ne, - set_int16_be, - set_int16_le, - set_int32_ne, - set_int32_be, - set_int32_le, - set_int64_ne, - set_int64_be, - set_int64_le]; - caml_register_global(771,include$1,"Stdlib__Bytes"); - function make$1(n,c){return caml_string_of_bytes(make$0(n,c))} - function init$1(n,f){return caml_string_of_bytes(init$0(n,f))} - function copy$0(s) - {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))} - function sub$0(s,ofs,len) - {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))} - function concat$1(sep,l) - {if(l) - {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; - for(;;) - {if(param) - {var _Ae_=param[1]; - if(param[2]) - {var - tl=param[2], - x=(caml_ml_string_length(_Ae_) + seplen | 0) + acc | 0, - acc$0=acc <= x?x:invalid_arg(cst_String_concat), - acc=acc$0, - param=tl; - continue} - var _Ag_=caml_ml_string_length(_Ae_) + acc | 0} - else - var _Ag_=acc; - var dst=caml_create_bytes(_Ag_),pos=pos$1,param$0=l; - for(;;) - {if(param$0) - {var _Af_=param$0[1]; - if(param$0[2]) - {var tl$0=param$0[2]; - caml_blit_string(_Af_,0,dst,pos,caml_ml_string_length(_Af_)); - caml_blit_string - (sep,0,dst,pos + caml_ml_string_length(_Af_) | 0,seplen); - var - pos$0=(pos + caml_ml_string_length(_Af_) | 0) + seplen | 0, - pos=pos$0, - param$0=tl$0; - continue} - caml_blit_string(_Af_,0,dst,pos,caml_ml_string_length(_Af_))} - return caml_string_of_bytes(dst)}}} - return cst$3} - function iter$4(f,s) - {var _Ac_=caml_ml_string_length(s) - 1 | 0,_Ab_=0; - if(! (_Ac_ < 0)) - {var i=_Ab_; - for(;;) - {caml_call1(f,caml_string_unsafe_get(s,i)); - var _Ad_=i + 1 | 0; - if(_Ac_ !== i){var i=_Ad_;continue} - break}} - return 0} - function iteri$1(f,s) - {var _z$_=caml_ml_string_length(s) - 1 | 0,_z__=0; - if(! (_z$_ < 0)) - {var i=_z__; - for(;;) - {caml_call2(f,i,caml_string_unsafe_get(s,i)); - var _Aa_=i + 1 | 0; - if(_z$_ !== i){var i=_Aa_;continue} - break}} - return 0} - function map$5(f,s) - {return caml_string_of_bytes(map$4(f,caml_bytes_of_string(s)))} - function mapi$1(f,s) - {return caml_string_of_bytes(mapi$0(f,caml_bytes_of_string(s)))} - function fold_right$1(f,x,a) - {return fold_right$0(f,caml_bytes_of_string(x),a)} - function fold_left$2(f,a,x) - {return fold_left$1(f,a,caml_bytes_of_string(x))} - function exists$1(f,s){return exists$0(f,caml_bytes_of_string(s))} - function for_all$1(f,s){return for_all$0(f,caml_bytes_of_string(s))} - function is_space$0(param) - {var _z9_=param - 9 | 0,switch$0=0; - if(4 < _z9_ >>> 0) - {if(23 === _z9_)switch$0 = 1} - else - if(2 !== _z9_)switch$0 = 1; - return switch$0?1:0} - function trim$0(s) - {if(caml_string_equal(s,cst$4))return s; - if - (! - is_space$0(caml_string_unsafe_get(s,0)) - && - ! - is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0))) - return s; - return caml_string_of_bytes(trim(caml_bytes_of_string(s)))} - function escaped$1(s) - {var n=caml_ml_string_length(s),i=0; - for(;;) - {if(n <= i)return s; - var match=caml_string_unsafe_get(s,i),_z8_=match - 32 | 0,switch$0=0; - if(59 < _z8_ >>> 0) - {if(33 < _z8_ - 61 >>> 0)switch$0 = 1} - else - if(2 === _z8_)switch$0 = 1; - if(switch$0) - return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s))); - var i$0=i + 1 | 0,i=i$0; - continue}} - function index_rec$0(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)throw Not_found; - if(caml_string_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)} - function index_rec_opt$0(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)return 0; - if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index_opt$0(s,c) - {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)} - function index_from$0(s,i,c) - {var l=caml_ml_string_length(s); - if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c); - return invalid_arg(cst_String_index_from_Bytes_in$0)} - function index_from_opt$0(s,i,c) - {var l=caml_ml_string_length(s); - if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c); - return invalid_arg(cst_String_index_from_opt_Byte$0)} - function rindex_rec$0(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_string_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - throw Not_found}} - function rindex$0(s,c) - {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)} - function rindex_from$0(s,i,c) - {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) - return rindex_rec$0(s,i,c); - return invalid_arg(cst_String_rindex_from_Bytes_r$0)} - function rindex_rec_opt$0(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - return 0}} - function rindex_opt$0(s,c) - {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)} - function rindex_from_opt$0(s,i,c) - {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) - return rindex_rec_opt$0(s,i,c); - return invalid_arg(cst_String_rindex_from_opt_Byt$0)} - function contains_from$0(s,i,c) - {var l=caml_ml_string_length(s); - if(0 <= i && ! (l < i)) - try - {index_rec$0(s,l,i,c);var _z6_=1;return _z6_} - catch(_z7_) - {_z7_ = caml_wrap_exception(_z7_); - if(_z7_ === Not_found)return 0; - throw _z7_} - return invalid_arg(cst_String_contains_from_Bytes$0)} - function contains$0(s,c){return contains_from$0(s,0,c)} - function rcontains_from$0(s,i,c) - {if(0 <= i && ! (caml_ml_string_length(s) <= i)) - try - {rindex_rec$0(s,i,c);var _z4_=1;return _z4_} - catch(_z5_) - {_z5_ = caml_wrap_exception(_z5_); - if(_z5_ === Not_found)return 0; - throw _z5_} - return invalid_arg(cst_String_rcontains_from_Byte$0)} - function uppercase_ascii$1(s) - {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))} - function lowercase_ascii$1(s) - {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))} - function capitalize_ascii$0(s) - {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))} - function uncapitalize_ascii$0(s) - {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))} - function starts_with$0(prefix,s) - {var - len_s=caml_ml_string_length(s), - len_pre=caml_ml_string_length(prefix), - _z3_=len_pre <= len_s?1:0; - if(_z3_) - {var i=0; - for(;;) - {if(i === len_pre)return 1; - if(caml_string_unsafe_get(s,i) !== caml_string_unsafe_get(prefix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _z3_} - function ends_with$0(suffix,s) - {var - len_s=caml_ml_string_length(s), - len_suf=caml_ml_string_length(suffix), - diff=len_s - len_suf | 0, - _z2_=0 <= diff?1:0; - if(_z2_) - {var i=0; - for(;;) - {if(i === len_suf)return 1; - if - (caml_string_unsafe_get(s,diff + i | 0) - !== - caml_string_unsafe_get(suffix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _z2_} - function split_on_char$0(sep,s) - {var - r=[0,0], - j=[0,caml_ml_string_length(s)], - _zY_=caml_ml_string_length(s) - 1 | 0; - if(! (_zY_ < 0)) - {var i=_zY_; - for(;;) - {if(caml_string_unsafe_get(s,i) === sep) - {var _z0_=r[1]; - r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_z0_]; - j[1] = i} - var _z1_=i - 1 | 0; - if(0 !== i){var i=_z1_;continue} - break}} - var _zZ_=r[1]; - return [0,sub$0(s,0,j[1]),_zZ_]} - function uppercase$1(s) - {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} - function lowercase$1(s) - {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))} - function capitalize$0(s) - {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))} - function uncapitalize$0(s) - {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))} - function compare$8(x,y){return caml_string_compare(x,y)} - function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))} - function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))} - function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))} - function get_int8$0(s,i){return get_int8(caml_bytes_of_string(s),i)} - function get_uint16_le$0(s,i) - {return caml_bytes_get16(caml_bytes_of_string(s),i)} - function get_uint16_be$0(s,i) - {return get_uint16_be(caml_bytes_of_string(s),i)} - function get_int16_ne$0(s,i) - {return get_int16_ne(caml_bytes_of_string(s),i)} - function get_int16_le$0(s,i) - {return get_int16_le(caml_bytes_of_string(s),i)} - function get_int16_be$0(s,i) - {return get_int16_be(caml_bytes_of_string(s),i)} - function get_int32_le$0(s,i) - {return caml_bytes_get32(caml_bytes_of_string(s),i)} - function get_int32_be$0(s,i) - {return get_int32_be(caml_bytes_of_string(s),i)} - function get_int64_le$0(s,i) - {return caml_bytes_get64(caml_bytes_of_string(s),i)} - function get_int64_be$0(s,i) - {return get_int64_be(caml_bytes_of_string(s),i)} - var - get_int64_ne$0=runtime.caml_string_get64, - get_int32_ne$0=runtime.caml_string_get32, - get_uint16_ne$0=runtime.caml_string_get16, - get_uint8$0=caml_string_get, - equal$8=caml_string_equal, - include$2= - [0, - make$1, - init$1, - empty$1, - of_bytes, - to_bytes, - concat$1, - cat, - equal$8, - compare$8, - starts_with$0, - ends_with$0, - contains_from$0, - rcontains_from$0, - contains$0, - sub$0, - split_on_char$0, - map$5, - mapi$1, - fold_left$2, - fold_right$1, - for_all$1, - exists$1, - trim$0, - escaped$1, - uppercase_ascii$1, - lowercase_ascii$1, - capitalize_ascii$0, - uncapitalize_ascii$0, - iter$4, - iteri$1, - index_from$0, - index_from_opt$0, - rindex_from$0, - rindex_from_opt$0, - index$0, - index_opt$0, - rindex$0, - rindex_opt$0, - to_seq$3, - to_seqi$0, - of_seq$1, - blit$0, - copy$0, - fill, - uppercase$1, - lowercase$1, - capitalize$0, - uncapitalize$0, - get_uint8$0, - get_int8$0, - get_uint16_ne$0, - get_uint16_be$0, - get_uint16_le$0, - get_int16_ne$0, - get_int16_be$0, - get_int16_le$0, - get_int32_ne$0, - get_int32_be$0, - get_int32_le$0, - get_int64_ne$0, - get_int64_be$0, - get_int64_le$0]; - caml_register_global(772,include$2,"Stdlib__String"); - function equal$9(param,_zX_){return 1} - function compare$9(param,_zW_){return 0} - function to_string$2(param){return cst$5} - var Stdlib_Unit=[0,equal$9,compare$9,to_string$2]; - caml_register_global(773,Stdlib_Unit,"Stdlib__Unit"); - function to_buffer(buff,ofs,len,v,flags) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buff) - len | 0) < ofs)) - return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags); - return invalid_arg(cst_Marshal_to_buffer_substrin)} - var header_size=20; - function data_size(buff,ofs) - {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) - return caml_marshal_data_size(buff,ofs); - return invalid_arg(cst_Marshal_data_size)} - function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0} - function from_bytes(buff,ofs) - {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) - {var len=caml_marshal_data_size(buff,ofs); - return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs - ?invalid_arg(cst_Marshal_from_bytes$0) - :runtime.caml_input_value_from_bytes(buff,ofs)} - return invalid_arg(cst_Marshal_from_bytes)} - function from_string(buff,ofs) - {return from_bytes(caml_bytes_of_string(buff),ofs)} - var - Stdlib_Marshal= - [0, - caml_output_value, - to_buffer, - caml_input_value, - from_bytes, - from_string, - header_size, - data_size, - total_size]; - caml_register_global(774,Stdlib_Marshal,"Stdlib__Marshal"); - function is_block(a){return 1 - (typeof a === "number"?1:0)} - function double_field(x,i){return caml_array_get(x,i)} - function set_double_field(x,i,v){return caml_array_set(x,i,v)} - function marshal(obj){return runtime.caml_output_value_to_bytes(obj,0)} - function unmarshal(str,pos) - {var _zV_=pos + total_size(str,pos) | 0; - return [0,from_bytes(str,pos),_zV_]} - var - first_non_constant_constructor=0, - last_non_constant_constructor_=245, - lazy_tag=246, - closure_tag=247, - object_tag=248, - infix_tag=249, - forward_tag=250, - no_scan_tag=251, - abstract_tag=251, - string_tag=252, - double_tag=253, - double_array_tag=254, - custom_tag=255, - int_tag=1000, - out_of_heap_tag=1001, - unaligned_tag=1002; - function info(obj) - {if(caml_obj_tag(obj) === 247) - {var - info=runtime.caml_obj_raw_field(obj,1), - arity=info >> 24, - start_env=info << 8 >>> 9 | 0; - return [0,arity,start_env]} - throw [0,Assert_failure,_q_]} - function of_val(x) - {var switch$0=0; - if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1) - {var slot=x[1];switch$0 = 1} - if(! switch$0)var slot=x; - var switch$1=0; - if(is_block(slot) && caml_obj_tag(slot) === 248) - {var name=slot[1];switch$1 = 1} - if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0); - return caml_obj_tag(name) === 252 - ?slot - :invalid_arg(cst_Obj_extension_constructor)} - function name(slot){return slot[1]} - function id(slot){return slot[2]} - var - Extension_constructor=[0,of_val,name,id], - extension_constructor=Extension_constructor[1], - extension_name=Extension_constructor[2], - extension_id=Extension_constructor[3], - max_ephe_length=max_array_length - 2 | 0; - function create(l) - {var _zT_=0 <= l?1:0,_zU_=_zT_?l <= max_ephe_length?1:0:_zT_; - if(1 - _zU_)invalid_arg(cst_Obj_Ephemeron_create); - return runtime.caml_ephe_create(l)} - function length$0(x){return x.length - 1 - 2 | 0} - function raise_if_invalid_offset(e,o,msg) - {var _zQ_=0 <= o?1:0,_zR_=_zQ_?o < length$0(e)?1:0:_zQ_,_zS_=1 - _zR_; - return _zS_?invalid_arg(msg):_zS_} - function get_key(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); - return runtime.caml_ephe_get_key(e,o)} - function get_key_copy(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy); - return runtime.caml_ephe_get_key_copy(e,o)} - function set_key(e,o,x) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key); - return caml_ephe_set_key(e,o,x)} - function unset_key(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key); - return caml_ephe_unset_key(e,o)} - function check_key(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_check_key); - return runtime.caml_ephe_check_key(e,o)} - function blit_key(e1,o1,e2,o2,l) - {if - (0 - <= - l - && - 0 - <= - o1 - && - ! - ((length$0(e1) - l | 0) < o1) - && - 0 - <= - o2 - && - ! - ((length$0(e2) - l | 0) < o2)) - {var - _zO_=0 !== l?1:0, - _zP_=_zO_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_zO_; - return _zP_} - return invalid_arg(cst_Obj_Ephemeron_blit_key)} - var - _r_=runtime.caml_ephe_blit_data, - _s_=runtime.caml_ephe_check_data, - _t_= - [0, - create, - length$0, - get_key, - get_key_copy, - set_key, - unset_key, - check_key, - blit_key, - runtime.caml_ephe_get_data, - runtime.caml_ephe_get_data_copy, - runtime.caml_ephe_set_data, - function(_zN_){return runtime.caml_ephe_unset_data(_zN_)}, - _s_, - _r_, - max_ephe_length], - Stdlib_Obj= - [0, - is_block, - double_field, - set_double_field, - first_non_constant_constructor, - last_non_constant_constructor_, - lazy_tag, - closure_tag, - object_tag, - infix_tag, - forward_tag, - no_scan_tag, - abstract_tag, - string_tag, - double_tag, - double_array_tag, - custom_tag, - custom_tag, - int_tag, - out_of_heap_tag, - unaligned_tag, - [0,info], - Extension_constructor, - extension_constructor, - extension_name, - extension_id, - marshal, - unmarshal, - _t_]; - caml_register_global(775,Stdlib_Obj,"Stdlib__Obj"); - var make_float=runtime.caml_make_float_vect,Floatarray=[0]; - function init$2(l,f) - {if(0 === l)return [0]; - if(0 <= l) - {var res=caml_make_vect(l,caml_call1(f,0)),_zL_=l - 1 | 0,_zK_=1; - if(! (_zL_ < 1)) - {var i=_zK_; - for(;;) - {res[1 + i] = caml_call1(f,i); - var _zM_=i + 1 | 0; - if(_zL_ !== i){var i=_zM_;continue} - break}} - return res} - return invalid_arg(cst_Array_init)} - function create_matrix(sx,sy,init) - {var res=caml_make_vect(sx,[0]),_zI_=sx - 1 | 0,_zH_=0; - if(! (_zI_ < 0)) - {var x=_zH_; - for(;;) - {res[1 + x] = caml_make_vect(sy,init); - var _zJ_=x + 1 | 0; - if(_zI_ !== x){var x=_zJ_;continue} - break}} - return res} - function copy$1(a) - {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)} - function append$1(a1,a2) - {var l1=a1.length - 1; - return 0 === l1 - ?copy$1(a2) - :0 === a2.length - 1 - ?caml_array_sub(a1,0,l1) - :runtime.caml_array_append(a1,a2)} - function sub$1(a,ofs,len) - {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) - return caml_array_sub(a,ofs,len); - return invalid_arg(cst_Array_sub)} - function fill$0(a,ofs,len,v) - {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) - return runtime.caml_array_fill(a,ofs,len,v); - return invalid_arg(cst_Array_fill)} - function blit$1(a1,ofs1,a2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((a1.length - 1 - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((a2.length - 1 - len | 0) < ofs2)) - return runtime.caml_array_blit(a1,ofs1,a2,ofs2,len); - return invalid_arg(cst_Array_blit)} - function iter$5(f,a) - {var _zF_=a.length - 1 - 1 | 0,_zE_=0; - if(! (_zF_ < 0)) - {var i=_zE_; - for(;;) - {caml_call1(f,a[1 + i]); - var _zG_=i + 1 | 0; - if(_zF_ !== i){var i=_zG_;continue} - break}} - return 0} - function iter2$0(f,a,b) - {if(a.length - 1 !== b.length - 1) - return invalid_arg(cst_Array_iter2_arrays_must_ha); - var _zC_=a.length - 1 - 1 | 0,_zB_=0; - if(! (_zC_ < 0)) - {var i=_zB_; - for(;;) - {caml_call2(f,a[1 + i],b[1 + i]); - var _zD_=i + 1 | 0; - if(_zC_ !== i){var i=_zD_;continue} - break}} - return 0} - function map$6(f,a) - {var l=a.length - 1; - if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call1(f,a[1])),_zz_=l - 1 | 0,_zy_=1; - if(! (_zz_ < 1)) - {var i=_zy_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _zA_=i + 1 | 0; - if(_zz_ !== i){var i=_zA_;continue} - break}} - return r} - function map2$0(f,a,b) - {var la=a.length - 1,lb=b.length - 1; - if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav); - if(0 === la)return [0]; - var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_zw_=la - 1 | 0,_zv_=1; - if(! (_zw_ < 1)) - {var i=_zv_; - for(;;) - {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); - var _zx_=i + 1 | 0; - if(_zw_ !== i){var i=_zx_;continue} - break}} - return r} - function iteri$2(f,a) - {var _zt_=a.length - 1 - 1 | 0,_zs_=0; - if(! (_zt_ < 0)) - {var i=_zs_; - for(;;) - {caml_call2(f,i,a[1 + i]); - var _zu_=i + 1 | 0; - if(_zt_ !== i){var i=_zu_;continue} - break}} - return 0} - function mapi$2(f,a) - {var l=a.length - 1; - if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zq_=l - 1 | 0,_zp_=1; - if(! (_zq_ < 1)) - {var i=_zp_; - for(;;) - {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _zr_=i + 1 | 0; - if(_zq_ !== i){var i=_zr_;continue} - break}} - return r} - function to_list$1(a) - {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0; - for(;;) - {if(0 <= i) - {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue} - return res}} - function list_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[2], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function of_list(l) - {if(l) - {var - tl=l[2], - hd=l[1], - a=caml_make_vect(list_length(0,l),hd), - i=1, - param=tl; - for(;;) - {if(param) - {var tl$0=param[2],hd$0=param[1]; - a[1 + i] = hd$0; - var i$0=i + 1 | 0,i=i$0,param=tl$0; - continue} - return a}} - return [0]} - function fold_left$3(f,x,a) - {var r=[0,x],_zn_=a.length - 1 - 1 | 0,_zm_=0; - if(! (_zn_ < 0)) - {var i=_zm_; - for(;;) - {r[1] = caml_call2(f,r[1],a[1 + i]); - var _zo_=i + 1 | 0; - if(_zn_ !== i){var i=_zo_;continue} - break}} - return r[1]} - function fold_left_map$0(f,acc,input_array) - {var len=input_array.length - 1; - if(0 === len)return [0,acc,[0]]; - var - match=caml_call2(f,acc,input_array[1]), - elt=match[2], - acc$0=match[1], - output_array=caml_make_vect(len,elt), - acc$1=[0,acc$0], - _zk_=len - 1 | 0, - _zj_=1; - if(! (_zk_ < 1)) - {var i=_zj_; - for(;;) - {var - match$0=caml_call2(f,acc$1[1],input_array[1 + i]), - elt$0=match$0[2], - acc$2=match$0[1]; - acc$1[1] = acc$2; - output_array[1 + i] = elt$0; - var _zl_=i + 1 | 0; - if(_zk_ !== i){var i=_zl_;continue} - break}} - return [0,acc$1[1],output_array]} - function fold_right$2(f,a,x) - {var r=[0,x],_zh_=a.length - 1 - 1 | 0; - if(! (_zh_ < 0)) - {var i=_zh_; - for(;;) - {r[1] = caml_call2(f,a[1 + i],r[1]); - var _zi_=i - 1 | 0; - if(0 !== i){var i=_zi_;continue} - break}} - return r[1]} - function exists$2(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,a[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$2(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function for_all2$0(p,l1,l2) - {var n1=l1.length - 1,n2=l2.length - 1; - if(n1 !== n2)return invalid_arg(cst_Array_for_all2); - var i=0; - for(;;) - {if(i === n1)return 1; - if(caml_call2(p,l1[1 + i],l2[1 + i])) - {var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function exists2$0(p,l1,l2) - {var n1=l1.length - 1,n2=l2.length - 1; - if(n1 !== n2)return invalid_arg(cst_Array_exists2); - var i=0; - for(;;) - {if(i === n1)return 0; - if(caml_call2(p,l1[1 + i],l2[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function mem$0(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(0 === caml_compare(a[1 + i],x))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function memq$0(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(x === a[1 + i])return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function find_opt$0(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - var x=a[1 + i]; - if(caml_call1(p,x))return [0,x]; - var i$0=i + 1 | 0,i=i$0; - continue}} - function find_map$0(f,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - var r=caml_call1(f,a[1 + i]); - if(r)return r; - var i$0=i + 1 | 0,i=i$0; - continue}} - function split$0(x) - {if(caml_equal(x,[0]))return [0,[0],[0]]; - var - match=x[1], - b0=match[2], - a0=match[1], - n=x.length - 1, - a=caml_make_vect(n,a0), - b=caml_make_vect(n,b0), - _zf_=n - 1 | 0, - _ze_=1; - if(! (_zf_ < 1)) - {var i=_ze_; - for(;;) - {var match$0=x[1 + i],bi=match$0[2],ai=match$0[1]; - a[1 + i] = ai; - b[1 + i] = bi; - var _zg_=i + 1 | 0; - if(_zf_ !== i){var i=_zg_;continue} - break}} - return [0,a,b]} - function combine$0(a,b) - {var na=a.length - 1,nb=b.length - 1; - if(na !== nb)invalid_arg(cst_Array_combine); - if(0 === na)return [0]; - var x=caml_make_vect(na,[0,a[1],b[1]]),_zc_=na - 1 | 0,_zb_=1; - if(! (_zc_ < 1)) - {var i=_zb_; - for(;;) - {x[1 + i] = [0,a[1 + i],b[1 + i]]; - var _zd_=i + 1 | 0; - if(_zc_ !== i){var i=_zd_;continue} - break}} - return x} - var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; - function sort(cmp,a) - {function maxson(l,i) - {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; - if((i31 + 2 | 0) < l) - {var _y6_=i31 + 1 | 0,_y7_=caml_check_bound(a,_y6_)[1 + _y6_]; - if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_y7_) < 0) - x[1] = i31 + 1 | 0; - var - _y8_=i31 + 2 | 0, - _y9_=caml_check_bound(a,_y8_)[1 + _y8_], - _y__=x[1]; - if(caml_call2(cmp,caml_check_bound(a,_y__)[1 + _y__],_y9_) < 0) - x[1] = i31 + 2 | 0; - return x[1]} - if((i31 + 1 | 0) < l) - {var _y$_=i31 + 1 | 0,_za_=caml_check_bound(a,_y$_)[1 + _y$_]; - if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_za_))) - return i31 + 1 | 0} - if(i31 < l)return i31; - throw [0,Bottom,i]} - function trickledown(l,i,e) - {var i$0=i; - for(;;) - {var j=maxson(l,i$0); - if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e)) - {var _y5_=caml_check_bound(a,j)[1 + j]; - caml_check_bound(a,i$0)[1 + i$0] = _y5_; - var i$0=j; - continue} - caml_check_bound(a,i$0)[1 + i$0] = e; - return 0}} - function trickle(l,i,e) - {try - {var _y4_=trickledown(l,i,e);return _y4_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom) - {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0} - throw exn}} - function bubbledown(l,i) - {var i$0=i; - for(;;) - {var i$1=maxson(l,i$0),_y3_=caml_check_bound(a,i$1)[1 + i$1]; - caml_check_bound(a,i$0)[1 + i$0] = _y3_; - var i$0=i$1; - continue}} - function bubble(l,i) - {try - {var _y2_=bubbledown(l,i);return _y2_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom){var i$0=exn[2];return i$0} - throw exn}} - var l=a.length - 1,_yU_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_yU_ < 0)) - {var i$2=_yU_; - for(;;) - {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]); - var _y1_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_y1_;continue} - break}} - var _yV_=l - 1 | 0; - if(! (_yV_ < 2)) - {var i$0=_yV_; - a: - for(;;) - {var - e$0=caml_check_bound(a,i$0)[1 + i$0], - _yZ_=caml_check_bound(a,0)[1]; - caml_check_bound(a,i$0)[1 + i$0] = _yZ_; - var i$1=bubble(i$0,0),i=i$1; - for(;;) - {var father=(i - 1 | 0) / 3 | 0; - if(i === father)throw [0,Assert_failure,_u_]; - if - (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0)) - caml_check_bound(a,i)[1 + i] = e$0; - else - {var _yT_=caml_check_bound(a,father)[1 + father]; - caml_check_bound(a,i)[1 + i] = _yT_; - if(0 < father){var i=father;continue} - caml_check_bound(a,0)[1] = e$0} - var _y0_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_y0_;continue a} - break} - break}} - var _yW_=1 < l?1:0; - if(_yW_) - {var e=caml_check_bound(a,1)[2],_yX_=caml_check_bound(a,0)[1]; - caml_check_bound(a,1)[2] = _yX_; - caml_check_bound(a,0)[1] = e; - var _yY_=0} - else - var _yY_=_yW_; - return _yY_} - function fast_sort$0(cmp,a) - {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) - {var - src1r=src1ofs + src1len | 0, - src2r=src2ofs + src2len | 0, - s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs], - s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs], - i1=src1ofs, - s1=s1$1, - i2=src2ofs, - s2=s2$1, - d=dstofs; - for(;;) - {if(0 < caml_call2(cmp,s1,s2)) - {caml_check_bound(dst,d)[1 + d] = s2; - var i2$0=i2 + 1 | 0; - if(i2$0 < src2r) - {var - d$0=d + 1 | 0, - s2$0=caml_check_bound(src2,i2$0)[1 + i2$0], - i2=i2$0, - s2=s2$0, - d=d$0; - continue} - return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} - caml_check_bound(dst,d)[1 + d] = s1; - var i1$0=i1 + 1 | 0; - if(i1$0 < src1r) - {var - d$1=d + 1 | 0, - s1$0=caml_check_bound(a,i1$0)[1 + i1$0], - i1=i1$0, - s1=s1$0, - d=d$1; - continue} - return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} - function isortto(srcofs,dst,dstofs,len) - {var _yL_=len - 1 | 0,_yK_=0; - if(! (_yL_ < 0)) - {var i=_yK_; - a: - for(;;) - {var - _yM_=srcofs + i | 0, - e=caml_check_bound(a,_yM_)[1 + _yM_], - j=[0,(dstofs + i | 0) - 1 | 0]; - for(;;) - {if(dstofs <= j[1]) - {var _yN_=j[1]; - if(0 < caml_call2(cmp,caml_check_bound(dst,_yN_)[1 + _yN_],e)) - {var - _yO_=j[1], - _yP_=caml_check_bound(dst,_yO_)[1 + _yO_], - _yQ_=j[1] + 1 | 0; - caml_check_bound(dst,_yQ_)[1 + _yQ_] = _yP_; - j[1] += -1; - continue}} - var _yR_=j[1] + 1 | 0; - caml_check_bound(dst,_yR_)[1 + _yR_] = e; - var _yS_=i + 1 | 0; - if(_yL_ !== i){var i=_yS_;continue a} - break} - break}} - return 0} - function sortto(srcofs,dst,dstofs,len) - {if(len <= 5)return isortto(srcofs,dst,dstofs,len); - var l1=len / 2 | 0,l2=len - l1 | 0; - sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); - sortto(srcofs,a,srcofs + l2 | 0,l1); - return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} - var l=a.length - 1; - if(l <= 5)return isortto(0,a,0,l); - var - l1=l / 2 | 0, - l2=l - l1 | 0, - t=caml_make_vect(l2,caml_check_bound(a,0)[1]); - sortto(l1,t,0,l2); - sortto(0,a,l2,l1); - return merge(l2,l1,t,0,l2,a,0)} - function to_seq$4(a) - {function aux(i,param) - {if(i < a.length - 1) - {var x=a[1 + i],_yI_=i + 1 | 0; - return [0,x,function(_yJ_){return aux(_yI_,_yJ_)}]} - return 0} - var _yG_=0; - return function(_yH_){return aux(_yG_,_yH_)}} - function to_seqi$1(a) - {function aux(i,param) - {if(i < a.length - 1) - {var x=a[1 + i],_yE_=i + 1 | 0; - return [0,[0,i,x],function(_yF_){return aux(_yE_,_yF_)}]} - return 0} - var _yC_=0; - return function(_yD_){return aux(_yC_,_yD_)}} - function of_seq$2(i$2) - {var _yB_=0,l=fold_left(function(acc,x){return [0,x,acc]},_yB_,i$2); - if(l) - {var - tl=l[2], - hd=l[1], - len=list_length(0,l), - a=caml_make_vect(len,hd), - i$1=len - 2 | 0, - i=i$1, - param=tl; - for(;;) - {if(param) - {var tl$0=param[2],hd$0=param[1]; - a[1 + i] = hd$0; - var i$0=i - 1 | 0,i=i$0,param=tl$0; - continue} - return a}} - return [0]} - var - concat$2=caml_array_concat, - include$3= - [0, - make_float, - init$2, - create_matrix, - create_matrix, - append$1, - concat$2, - sub$1, - copy$1, - fill$0, - blit$1, - to_list$1, - of_list, - iter$5, - iteri$2, - map$6, - mapi$2, - fold_left$3, - fold_left_map$0, - fold_right$2, - iter2$0, - map2$0, - for_all$2, - exists$2, - for_all2$0, - exists2$0, - mem$0, - memq$0, - find_opt$0, - find_map$0, - split$0, - combine$0, - sort, - fast_sort$0, - fast_sort$0, - to_seq$4, - to_seqi$1, - of_seq$2, - Floatarray]; - caml_register_global(776,include$3,"Stdlib__Array"); - var zero$0=0.,one$0=1.,minus_one$0=-1.; - function is_finite(x){return x - x == 0.?1:0} - function is_infinite(x){return 1. / x == 0.?1:0} - function is_nan(x){return x != x?1:0} - var pi=3.14159265358979312; - function is_integer(x) - {var _yA_=x == runtime.caml_trunc_float(x)?1:0; - return _yA_?is_finite(x):_yA_} - function succ$0(x){return caml_nextafter_float(x,infinity)} - function pred$0(x){return caml_nextafter_float(x,neg_infinity)} - function equal$10(x,y){return 0 === caml_float_compare(x,y)?1:0} - function min$2(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return x != x?x:y} - return y != y?y:x} - function max$2(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return y != y?y:x} - return x != x?x:y} - function min_max(x,y) - {if(x == x && y == y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return [0,y,x]} - return [0,x,y]} - return [0,nan,nan]} - function min_num(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return y != y?x:y} - return x != x?y:x} - function max_num(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return x != x?y:x} - return y != y?x:y} - function min_max_num(x,y) - {if(x != x)return [0,y,y]; - if(y != y)return [0,x,x]; - if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return [0,y,x]} - return [0,x,y]} - function hash$0(x){return caml_hash(10,100,0,x)} - function unsafe_fill(a,ofs,len,v) - {var _yy_=(ofs + len | 0) - 1 | 0; - if(! (_yy_ < ofs)) - {var i=ofs; - for(;;) - {a[1 + i] = v; - var _yz_=i + 1 | 0; - if(_yy_ !== i){var i=_yz_;continue} - break}} - return 0} - function check(a,ofs,len,msg) - {var _yu_=ofs < 0?1:0; - if(_yu_) - var _yv_=_yu_; - else - {var _yw_=len < 0?1:0; - if(_yw_) - var _yv_=_yw_; - else - var - _yx_=(ofs + len | 0) < 0?1:0, - _yv_=_yx_ || (a.length - 1 < (ofs + len | 0)?1:0)} - return _yv_?invalid_arg(msg):_yv_} - function make$2(n,v) - {var result=caml_floatarray_create(n); - unsafe_fill(result,0,n,v); - return result} - function init$3(l,f) - {if(0 <= l) - {var res=caml_floatarray_create(l),_ys_=l - 1 | 0,_yr_=0; - if(! (_ys_ < 0)) - {var i=_yr_; - for(;;) - {res[1 + i] = caml_call1(f,i); - var _yt_=i + 1 | 0; - if(_ys_ !== i){var i=_yt_;continue} - break}} - return res} - return invalid_arg(cst_Float_Array_init)} - function append$2(a1,a2) - {var - l1=a1.length - 1, - l2=a2.length - 1, - result=caml_floatarray_create(l1 + l2 | 0); - caml_floatarray_blit(a1,0,result,0,l1); - caml_floatarray_blit(a2,0,result,l1,l2); - return result} - function concat$3(l) - {var acc=0,param=l; - for(;;) - {if(param) - {var - tl=param[2], - hd=param[1], - x=hd.length - 1 + acc | 0, - acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat), - acc=acc$0, - param=tl; - continue} - var result=caml_floatarray_create(acc),l$0=l,i=0; - for(;;) - {if(l$0) - {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1; - caml_floatarray_blit(hd$0,0,result,i,hlen); - var i$0=i + hlen | 0,l$0=tl$0,i=i$0; - continue} - if(i === acc)return result; - throw [0,Assert_failure,_v_]}}} - function sub$2(a,ofs,len) - {check(a,ofs,len,cst_Float_Array_sub); - var result=caml_floatarray_create(len); - caml_floatarray_blit(a,ofs,result,0,len); - return result} - function copy$2(a) - {var l=a.length - 1,result=caml_floatarray_create(l); - caml_floatarray_blit(a,0,result,0,l); - return result} - function fill$1(a,ofs,len,v) - {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)} - function blit$2(src,sofs,dst,dofs,len) - {check(src,sofs,len,cst_Float_array_blit); - check(dst,dofs,len,cst_Float_array_blit$0); - return caml_floatarray_blit(src,sofs,dst,dofs,len)} - function to_list$2(a) - {return init(a.length - 1,function(_yq_){return a[1 + _yq_]})} - function of_list$0(l) - {var result=caml_floatarray_create(length(l)),i=0,l$0=l; - for(;;) - {if(l$0) - {var t=l$0[2],h=l$0[1]; - result[1 + i] = h; - var i$0=i + 1 | 0,i=i$0,l$0=t; - continue} - return result}} - function iter$6(f,a) - {var _yo_=a.length - 1 - 1 | 0,_yn_=0; - if(! (_yo_ < 0)) - {var i=_yn_; - for(;;) - {caml_call1(f,a[1 + i]); - var _yp_=i + 1 | 0; - if(_yo_ !== i){var i=_yp_;continue} - break}} - return 0} - function iter2$1(f,a,b) - {if(a.length - 1 !== b.length - 1) - return invalid_arg(cst_Float_Array_iter2_arrays_m); - var _yl_=a.length - 1 - 1 | 0,_yk_=0; - if(! (_yl_ < 0)) - {var i=_yk_; - for(;;) - {caml_call2(f,a[1 + i],b[1 + i]); - var _ym_=i + 1 | 0; - if(_yl_ !== i){var i=_ym_;continue} - break}} - return 0} - function map$7(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_yi_=l - 1 | 0,_yh_=0; - if(! (_yi_ < 0)) - {var i=_yh_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _yj_=i + 1 | 0; - if(_yi_ !== i){var i=_yj_;continue} - break}} - return r} - function map2$1(f,a,b) - {var la=a.length - 1,lb=b.length - 1; - if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu); - var r=caml_floatarray_create(la),_yf_=la - 1 | 0,_ye_=0; - if(! (_yf_ < 0)) - {var i=_ye_; - for(;;) - {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); - var _yg_=i + 1 | 0; - if(_yf_ !== i){var i=_yg_;continue} - break}} - return r} - function iteri$3(f,a) - {var _yc_=a.length - 1 - 1 | 0,_yb_=0; - if(! (_yc_ < 0)) - {var i=_yb_; - for(;;) - {caml_call2(f,i,a[1 + i]); - var _yd_=i + 1 | 0; - if(_yc_ !== i){var i=_yd_;continue} - break}} - return 0} - function mapi$3(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_x$_=l - 1 | 0,_x__=0; - if(! (_x$_ < 0)) - {var i=_x__; - for(;;) - {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _ya_=i + 1 | 0; - if(_x$_ !== i){var i=_ya_;continue} - break}} - return r} - function fold_left$4(f,x,a) - {var r=[0,x],_x8_=a.length - 1 - 1 | 0,_x7_=0; - if(! (_x8_ < 0)) - {var i=_x7_; - for(;;) - {r[1] = caml_call2(f,r[1],a[1 + i]); - var _x9_=i + 1 | 0; - if(_x8_ !== i){var i=_x9_;continue} - break}} - return r[1]} - function fold_right$3(f,a,x) - {var r=[0,x],_x5_=a.length - 1 - 1 | 0; - if(! (_x5_ < 0)) - {var i=_x5_; - for(;;) - {r[1] = caml_call2(f,a[1 + i],r[1]); - var _x6_=i - 1 | 0; - if(0 !== i){var i=_x6_;continue} - break}} - return r[1]} - function exists$3(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,a[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$3(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function mem$1(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(0 === caml_float_compare(a[1 + i],x))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function mem_ieee(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(x == a[1 + i])return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)]; - function sort$0(cmp,a) - {function maxson(l,i) - {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; - if((i31 + 2 | 0) < l) - {if - (caml_call2 - (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)) - < - 0) - x[1] = i31 + 1 | 0; - if - (caml_call2 - (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0)) - < - 0) - x[1] = i31 + 2 | 0; - return x[1]} - if - ((i31 + 1 | 0) - < - l - && - ! - (0 - <= - caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)))) - return i31 + 1 | 0; - if(i31 < l)return i31; - throw [0,Bottom$0,i]} - function trickledown(l,i,e) - {var i$0=i; - for(;;) - {var j=maxson(l,i$0); - if(0 < caml_call2(cmp,caml_array_get(a,j),e)) - {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue} - return caml_array_set(a,i$0,e)}} - function trickle(l,i,e) - {try - {var _x4_=trickledown(l,i,e);return _x4_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom$0) - {var i$0=exn[2];return caml_array_set(a,i$0,e)} - throw exn}} - function bubbledown(l,i) - {var i$0=i; - for(;;) - {var i$1=maxson(l,i$0); - caml_array_set(a,i$0,caml_array_get(a,i$1)); - var i$0=i$1; - continue}} - function bubble(l,i) - {try - {var _x3_=bubbledown(l,i);return _x3_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom$0){var i$0=exn[2];return i$0} - throw exn}} - var l=a.length - 1,_xX_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_xX_ < 0)) - {var i$2=_xX_; - for(;;) - {trickle(l,i$2,caml_array_get(a,i$2)); - var _x2_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_x2_;continue} - break}} - var _xY_=l - 1 | 0; - if(! (_xY_ < 2)) - {var i$0=_xY_; - a: - for(;;) - {var e$0=caml_array_get(a,i$0); - caml_array_set(a,i$0,caml_array_get(a,0)); - var i$1=bubble(i$0,0),i=i$1; - for(;;) - {var father=(i - 1 | 0) / 3 | 0; - if(i === father)throw [0,Assert_failure,_w_]; - if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0)) - caml_array_set(a,i,e$0); - else - {caml_array_set(a,i,caml_array_get(a,father)); - if(0 < father){var i=father;continue} - caml_array_set(a,0,e$0)} - var _x1_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_x1_;continue a} - break} - break}} - var _xZ_=1 < l?1:0; - if(_xZ_) - {var e=caml_array_get(a,1); - caml_array_set(a,1,caml_array_get(a,0)); - var _x0_=caml_array_set(a,0,e)} - else - var _x0_=_xZ_; - return _x0_} - function stable_sort(cmp,a) - {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) - {var - src1r=src1ofs + src1len | 0, - src2r=src2ofs + src2len | 0, - s2$1=caml_array_get(src2,src2ofs), - s1$1=caml_array_get(a,src1ofs), - i1=src1ofs, - s1=s1$1, - i2=src2ofs, - s2=s2$1, - d=dstofs; - for(;;) - {if(0 < caml_call2(cmp,s1,s2)) - {caml_array_set(dst,d,s2); - var i2$0=i2 + 1 | 0; - if(i2$0 < src2r) - {var - d$0=d + 1 | 0, - s2$0=caml_array_get(src2,i2$0), - i2=i2$0, - s2=s2$0, - d=d$0; - continue} - return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} - caml_array_set(dst,d,s1); - var i1$0=i1 + 1 | 0; - if(i1$0 < src1r) - {var - d$1=d + 1 | 0, - s1$0=caml_array_get(a,i1$0), - i1=i1$0, - s1=s1$0, - d=d$1; - continue} - return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} - function isortto(srcofs,dst,dstofs,len) - {var _xV_=len - 1 | 0,_xU_=0; - if(! (_xV_ < 0)) - {var i=_xU_; - a: - for(;;) - {var - e=caml_array_get(a,srcofs + i | 0), - j=[0,(dstofs + i | 0) - 1 | 0]; - for(;;) - {if - (dstofs - <= - j[1] - && - 0 - < - caml_call2(cmp,caml_array_get(dst,j[1]),e)) - {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1])); - j[1] += -1; - continue} - caml_array_set(dst,j[1] + 1 | 0,e); - var _xW_=i + 1 | 0; - if(_xV_ !== i){var i=_xW_;continue a} - break} - break}} - return 0} - function sortto(srcofs,dst,dstofs,len) - {if(len <= 5)return isortto(srcofs,dst,dstofs,len); - var l1=len / 2 | 0,l2=len - l1 | 0; - sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); - sortto(srcofs,a,srcofs + l2 | 0,l1); - return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} - var l=a.length - 1; - if(l <= 5)return isortto(0,a,0,l); - var l1=l / 2 | 0,l2=l - l1 | 0,t=caml_floatarray_create(l2); - sortto(l1,t,0,l2); - sortto(0,a,l2,l1); - return merge(l2,l1,t,0,l2,a,0)} - function to_seq$5(a) - {function aux(i,param) - {if(i < a.length - 1) - {var x=a[1 + i],_xS_=i + 1 | 0; - return [0,x,function(_xT_){return aux(_xS_,_xT_)}]} - return 0} - var _xQ_=0; - return function(_xR_){return aux(_xQ_,_xR_)}} - function to_seqi$2(a) - {function aux(i,param) - {if(i < a.length - 1) - {var x=a[1 + i],_xO_=i + 1 | 0; - return [0,[0,i,x],function(_xP_){return aux(_xO_,_xP_)}]} - return 0} - var _xM_=0; - return function(_xN_){return aux(_xM_,_xN_)}} - function of_seq$3(i$2) - {var - _xL_=0, - param$0=fold_left(function(acc,x){return [0,x,acc]},_xL_,i$2), - len=length(param$0), - a=caml_floatarray_create(len), - i$1=len - 1 | 0, - i=i$1, - param=param$0; - for(;;) - {if(param) - {var tl=param[2],hd=param[1]; - a[1 + i] = hd; - var i$0=i - 1 | 0,i=i$0,param=tl; - continue} - return a}} - function map_to_array(f,a) - {var l=a.length - 1; - if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call1(f,a[1])),_xJ_=l - 1 | 0,_xI_=1; - if(! (_xJ_ < 1)) - {var i=_xI_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _xK_=i + 1 | 0; - if(_xJ_ !== i){var i=_xK_;continue} - break}} - return r} - function map_from_array(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_xG_=l - 1 | 0,_xF_=0; - if(! (_xG_ < 0)) - {var i=_xF_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _xH_=i + 1 | 0; - if(_xG_ !== i){var i=_xH_;continue} - break}} - return r} - var - _x_=caml_floatarray_create, - _y_=caml_array_set, - _z_=caml_array_get, - _A_= - [0, - function(_xE_){return _xE_.length - 1}, - _z_, - _y_, - make$2, - _x_, - init$3, - append$2, - concat$3, - sub$2, - copy$2, - fill$1, - blit$2, - to_list$2, - of_list$0, - iter$6, - iteri$3, - map$7, - mapi$3, - fold_left$4, - fold_right$3, - iter2$1, - map2$1, - for_all$3, - exists$3, - mem$1, - mem_ieee, - sort$0, - stable_sort, - stable_sort, - to_seq$5, - to_seqi$2, - of_seq$3, - map_to_array, - map_from_array], - _B_=caml_floatarray_create, - _C_=caml_array_set, - _D_=caml_array_get, - Stdlib_Float= - [0, - zero$0, - one$0, - minus_one$0, - succ$0, - pred$0, - infinity, - neg_infinity, - nan, - pi, - max_float, - min_float, - epsilon, - is_finite, - is_infinite, - is_nan, - is_integer, - of_string_opt, - to_string, - caml_float_compare, - equal$10, - min$2, - max$2, - min_max, - min_num, - max_num, - min_max_num, - hash$0, - [0, - function(_xD_){return _xD_.length - 1}, - _D_, - _C_, - make$2, - _B_, - init$3, - append$2, - concat$3, - sub$2, - copy$2, - fill$1, - blit$2, - to_list$2, - of_list$0, - iter$6, - iteri$3, - map$7, - mapi$3, - fold_left$4, - fold_right$3, - iter2$1, - map2$1, - for_all$3, - exists$3, - mem$1, - mem_ieee, - sort$0, - stable_sort, - stable_sort, - to_seq$5, - to_seqi$2, - of_seq$3, - map_to_array, - map_from_array], - _A_]; - caml_register_global(777,Stdlib_Float,"Stdlib__Float"); - var zero$1=0,one$1=1,minus_one$1=-1; - function succ$1(n){return n + 1 | 0} - function pred$1(n){return n - 1 | 0} - function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0} - var min_int$1=-2147483648,max_int$1=2147483647; - function lognot$0(n){return n ^ -1} - function unsigned_to_int(n) - {if - (! - (0 < caml_int_compare(0,n)) - && - ! - (0 < caml_int_compare(n,2147483647))) - return [0,n]; - return 0} - function to_string$3(n){return caml_format_int(cst_d,n)} - function of_string_opt$0(s) - {try - {var _xB_=[0,caml_int_of_string(s)];return _xB_} - catch(_xC_) - {_xC_ = caml_wrap_exception(_xC_); - if(_xC_[1] === Failure)return 0; - throw _xC_}} - function compare$10(x,y){return caml_int_compare(x,y)} - function equal$11(x,y){return 0 === caml_int_compare(x,y)?1:0} - function unsigned_compare(n,m) - {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} - function min$3(x,y){return caml_lessequal(x,y)?x:y} - function max$3(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div(n,d) - {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1; - var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; - return 0 <= unsigned_compare(r,d)?q + 1 | 0:q} - function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0} - var - Stdlib_Int32= - [0, - zero$1, - one$1, - minus_one$1, - unsigned_div, - unsigned_rem, - succ$1, - pred$1, - abs$1, - max_int$1, - min_int$1, - lognot$0, - unsigned_to_int, - of_string_opt$0, - to_string$3, - compare$10, - unsigned_compare, - equal$11, - min$3, - max$3]; - caml_register_global(778,Stdlib_Int32,"Stdlib__Int32"); - function succ$2(n){return caml_int64_add(n,_E_)} - function pred$2(n){return caml_int64_sub(n,_F_)} - function abs$2(n) - {return caml_greaterequal(n,_G_)?n:runtime.caml_int64_neg(n)} - function lognot$1(n){return runtime.caml_int64_xor(n,_H_)} - var max_int$3=caml_int64_of_int32(2147483647); - function unsigned_to_int$0(n) - {if - (! - (0 < caml_int64_compare(zero$2,n)) - && - ! - (0 < caml_int64_compare(n,max_int$3))) - return [0,runtime.caml_int64_to_int32(n)]; - return 0} - function to_string$4(n){return caml_int64_format(cst_d$0,n)} - function of_string_opt$1(s) - {try - {var _xz_=[0,caml_int64_of_string(s)];return _xz_} - catch(_xA_) - {_xA_ = caml_wrap_exception(_xA_); - if(_xA_[1] === Failure)return 0; - throw _xA_}} - function compare$11(x,y){return caml_int64_compare(x,y)} - function equal$12(x,y){return 0 === caml_int64_compare(x,y)?1:0} - function unsigned_compare$0(n,m) - {return caml_int64_compare - (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))} - function min$4(x,y){return caml_lessequal(x,y)?x:y} - function max$4(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div$0(n,d) - {if(caml_lessthan(d,zero$2)) - return 0 <= unsigned_compare$0(n,d)?one$2:zero$2; - var - q= - caml_int64_shift_left - (runtime.caml_int64_div - (runtime.caml_int64_shift_right_unsigned(n,1),d), - 1), - r=caml_int64_sub(n,caml_int64_mul(q,d)); - return 0 <= unsigned_compare$0(r,d)?succ$2(q):q} - function unsigned_rem$0(n,d) - {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))} - var - Stdlib_Int64= - [0, - zero$2, - one$2, - minus_one$2, - unsigned_div$0, - unsigned_rem$0, - succ$2, - pred$2, - abs$2, - max_int$2, - min_int$2, - lognot$1, - unsigned_to_int$0, - of_string_opt$1, - to_string$4, - compare$11, - unsigned_compare$0, - equal$12, - min$4, - max$4]; - caml_register_global(779,Stdlib_Int64,"Stdlib__Int64"); - var zero$3=0,one$3=1,minus_one$3=-1; - function succ$3(n){return n + 1 | 0} - function pred$3(n){return n - 1 | 0} - function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0} - var min_int$3=-2147483648,max_int$4=2147483647; - function lognot$2(n){return n ^ -1} - function unsigned_to_int$1(n) - {if - (! - (0 < caml_int_compare(0,n)) - && - ! - (0 < caml_int_compare(n,2147483647))) - return [0,n]; - return 0} - function to_string$5(n){return caml_format_int(cst_d$1,n)} - function of_string_opt$2(s) - {try - {var _xx_=[0,caml_int_of_string(s)];return _xx_} - catch(_xy_) - {_xy_ = caml_wrap_exception(_xy_); - if(_xy_[1] === Failure)return 0; - throw _xy_}} - function compare$12(x,y){return caml_int_compare(x,y)} - function equal$13(x,y){return 0 === caml_int_compare(x,y)?1:0} - function unsigned_compare$1(n,m) - {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} - function min$5(x,y){return caml_lessequal(x,y)?x:y} - function max$5(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div$1(n,d) - {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3; - var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; - return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q} - function unsigned_rem$1(n,d) - {return n - caml_mul(unsigned_div$1(n,d),d) | 0} - var - Stdlib_Nativeint= - [0, - zero$3, - one$3, - minus_one$3, - unsigned_div$1, - unsigned_rem$1, - succ$3, - pred$3, - abs$3, - match$1, - max_int$4, - min_int$3, - lognot$2, - unsigned_to_int$1, - of_string_opt$2, - to_string$5, - compare$12, - unsigned_compare$1, - equal$13, - min$5, - max$5]; - caml_register_global(780,Stdlib_Nativeint,"Stdlib__Nativeint"); - function engine(tbl,state,buf) - {var - result=runtime.caml_lex_engine(tbl,state,buf), - _xu_=0 <= result?1:0, - _xv_=_xu_?buf[12] !== dummy_pos?1:0:_xu_; - if(_xv_) - {buf[11] = buf[12]; - var _xw_=buf[12]; - buf[12] = [0,_xw_[1],_xw_[2],_xw_[3],buf[4] + buf[6] | 0]} - return result} - function new_engine(tbl,state,buf) - {var - result=runtime.caml_new_lex_engine(tbl,state,buf), - _xr_=0 <= result?1:0, - _xs_=_xr_?buf[12] !== dummy_pos?1:0:_xr_; - if(_xs_) - {buf[11] = buf[12]; - var _xt_=buf[12]; - buf[12] = [0,_xt_[1],_xt_[2],_xt_[3],buf[4] + buf[6] | 0]} - return result} - function from_function(opt,f) - {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; - var - _xd_=with_positions?zero_pos:dummy_pos, - _xe_=with_positions?zero_pos:dummy_pos, - aux_buffer=caml_create_bytes(512), - _xf_=[0], - _xg_=0, - _xh_=0, - _xi_=0, - _xj_=0, - _xk_=0, - _xl_=0, - _xm_=0, - _xn_=caml_create_bytes(1024); - return [0, - function(lexbuf) - {var - read= - caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)), - n=0 < read?read:(lexbuf[9] = 1,0); - if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0)) - {if - (((lexbuf[3] - lexbuf[5] | 0) + n | 0) - <= - caml_ml_bytes_length(lexbuf[2])) - blit - (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0); - else - {var - newlen= - min$1 - (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length); - if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0)) - failwith(cst_Lexing_lex_refill_cannot_g); - var newbuf=caml_create_bytes(newlen); - blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0); - lexbuf[2] = newbuf} - var s=lexbuf[5]; - lexbuf[4] = lexbuf[4] + s | 0; - lexbuf[6] = lexbuf[6] - s | 0; - lexbuf[5] = 0; - lexbuf[7] = lexbuf[7] - s | 0; - lexbuf[3] = lexbuf[3] - s | 0; - var t=lexbuf[10],_xp_=t.length - 1 - 1 | 0,_xo_=0; - if(! (_xp_ < 0)) - {var i=_xo_; - for(;;) - {var v=caml_check_bound(t,i)[1 + i]; - if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0; - var _xq_=i + 1 | 0; - if(_xp_ !== i){var i=_xq_;continue} - break}}} - blit(aux_buffer,0,lexbuf[2],lexbuf[3],n); - lexbuf[3] = lexbuf[3] + n | 0; - return 0}, - _xn_, - _xm_, - _xl_, - _xk_, - _xj_, - _xi_, - _xh_, - _xg_, - _xf_, - _xe_, - _xd_]} - function from_channel(with_positions,ic) - {return from_function - (with_positions,function(buf,n){return input(ic,buf,0,n)})} - function from_string$0(opt,s) - {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; - var - _w4_=with_positions?zero_pos:dummy_pos, - _w5_=with_positions?zero_pos:dummy_pos, - _w6_=[0], - _w7_=1, - _w8_=0, - _w9_=0, - _w__=0, - _w$_=0, - _xa_=0, - _xb_=caml_ml_string_length(s), - _xc_=to_bytes(s); - return [0, - function(lexbuf){lexbuf[9] = 1;return 0}, - _xc_, - _xb_, - _xa_, - _w$_, - _w__, - _w9_, - _w8_, - _w7_, - _w6_, - _w5_, - _w4_]} - function set_position(lexbuf,position) - {lexbuf[12] = [0,lexbuf[12][1],position[2],position[3],position[4]]; - lexbuf[4] = position[4]; - return 0} - function set_filename(lexbuf,fname) - {var _w3_=lexbuf[12]; - lexbuf[12] = [0,fname,_w3_[2],_w3_[3],_w3_[4]]; - return 0} - function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} - function lexeme(lexbuf) - {var len=lexbuf[6] - lexbuf[5] | 0; - return sub_string(lexbuf[2],lexbuf[5],len)} - function sub_lexeme(lexbuf,i1,i2) - {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)} - function sub_lexeme_opt(lexbuf,i1,i2) - {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]} - return 0} - function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)} - function sub_lexeme_char_opt(lexbuf,i) - {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0} - function lexeme_char(lexbuf,i) - {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)} - function lexeme_start(lexbuf){return lexbuf[11][4]} - function lexeme_end(lexbuf){return lexbuf[12][4]} - function lexeme_start_p(lexbuf){return lexbuf[11]} - function lexeme_end_p(lexbuf){return lexbuf[12]} - function new_line(lexbuf) - {var - lcp=lexbuf[12], - _w1_=lcp !== dummy_pos?1:0, - _w2_=_w1_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_w1_; - return _w2_} - function flush_input(lb) - {lb[6] = 0; - lb[4] = 0; - var lcp=lb[12]; - if(lcp !== dummy_pos) - lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]]; - lb[3] = 0; - return 0} - var - Stdlib_Lexing= - [0, - dummy_pos, - from_channel, - from_string$0, - from_function, - set_position, - set_filename, - with_positions, - lexeme, - lexeme_char, - lexeme_start, - lexeme_end, - lexeme_start_p, - lexeme_end_p, - new_line, - flush_input, - sub_lexeme, - sub_lexeme_opt, - sub_lexeme_char, - sub_lexeme_char_opt, - engine, - new_engine]; - caml_register_global(781,Stdlib_Lexing,"Stdlib__Lexing"); - var - YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)], - Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)], - env= - [0, - caml_make_vect(100,0), - caml_make_vect(100,0), - caml_make_vect(100,dummy_pos), - caml_make_vect(100,dummy_pos), - 100, - 0, - 0, - 0, - dummy_pos, - dummy_pos, - 0, - 0, - 0, - 0, - 0, - 0]; - function grow_stacks(param) - {var - oldsize=env[5], - newsize=oldsize * 2 | 0, - new_s=caml_make_vect(newsize,0), - new_v=caml_make_vect(newsize,0), - new_start=caml_make_vect(newsize,dummy_pos), - new_end=caml_make_vect(newsize,dummy_pos); - blit$1(env[1],0,new_s,0,oldsize); - env[1] = new_s; - blit$1(env[2],0,new_v,0,oldsize); - env[2] = new_v; - blit$1(env[3],0,new_start,0,oldsize); - env[3] = new_start; - blit$1(env[4],0,new_end,0,oldsize); - env[4] = new_end; - env[5] = newsize; - return 0} - function clear_parser(param) - {fill$0(env[2],0,env[5],0);env[8] = 0;return 0} - var current_lookahead_fun=[0,function(param){return 0}]; - function yyparse(tables,start,lexer,lexbuf) - {var - init_asp=env[11], - init_sp=env[14], - init_stackbase=env[6], - init_state=env[15], - init_curr_char=env[7], - init_lval=env[8], - init_errflag=env[16]; - env[6] = env[14] + 1 | 0; - env[7] = start; - env[10] = lexbuf[12]; - try - {var cmd=0,arg=0; - for(;;) - {var match=runtime.caml_parse_engine(tables,env,cmd,arg); - switch(match) - {case 0: - var arg$0=caml_call1(lexer,lexbuf); - env[9] = lexbuf[11]; - env[10] = lexbuf[12]; - var cmd=1,arg=arg$0; - continue; - case 1:throw Parse_error; - case 2:grow_stacks(0);var cmd=2,arg=0;continue; - case 3:grow_stacks(0);var cmd=3,arg=0;continue; - case 4: - try - {var - _wV_=env[13], - _wW_= - caml_call1(caml_check_bound(tables[1],_wV_)[1 + _wV_],env), - _wX_=4, - arg$1=_wW_, - cmd$0=_wX_} - catch(_w0_) - {_w0_ = caml_wrap_exception(_w0_); - if(_w0_ !== Parse_error)throw _w0_; - var arg$1=0,cmd$0=5,_wY_=_w0_} - var cmd=cmd$0,arg=arg$1; - continue; - default: - caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}} - catch(exn) - {exn = caml_wrap_exception(exn); - var curr_char=env[7]; - env[11] = init_asp; - env[14] = init_sp; - env[6] = init_stackbase; - env[15] = init_state; - env[7] = init_curr_char; - env[8] = init_lval; - env[16] = init_errflag; - if(exn[1] === YYexit){var v=exn[2];return v} - current_lookahead_fun[1] - = - function(tok) - {if(is_block(tok)) - {var _wZ_=caml_obj_tag(tok); - return caml_check_bound(tables[3],_wZ_)[1 + _wZ_] === curr_char - ?1 - :0} - return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0}; - throw exn}} - function peek_val(env,n) - {var _wU_=env[11] - n | 0;return caml_check_bound(env[2],_wU_)[1 + _wU_]} - function symbol_start_pos(param) - {var i=env[12]; - for(;;) - {if(0 < i) - {var - _wR_=(env[11] - i | 0) + 1 | 0, - st=caml_check_bound(env[3],_wR_)[1 + _wR_], - _wS_=(env[11] - i | 0) + 1 | 0, - en=caml_check_bound(env[4],_wS_)[1 + _wS_]; - if(caml_notequal(st,en))return st; - var i$0=i - 1 | 0,i=i$0; - continue} - var _wT_=env[11]; - return caml_check_bound(env[4],_wT_)[1 + _wT_]}} - function symbol_end_pos(param) - {var _wQ_=env[11];return caml_check_bound(env[4],_wQ_)[1 + _wQ_]} - function rhs_start_pos(n) - {var _wP_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[3],_wP_)[1 + _wP_]} - function rhs_end_pos(n) - {var _wO_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[4],_wO_)[1 + _wO_]} - function symbol_start(param){return symbol_start_pos(0)[4]} - function symbol_end(param){return symbol_end_pos(0)[4]} - function rhs_start(n){return rhs_start_pos(n)[4]} - function rhs_end(n){return rhs_end_pos(n)[4]} - function is_current_lookahead(tok) - {return caml_call1(current_lookahead_fun[1],tok)} - function parse_error(param){return 0} - var - Stdlib_Parsing= - [0, - symbol_start, - symbol_end, - rhs_start, - rhs_end, - symbol_start_pos, - symbol_end_pos, - rhs_start_pos, - rhs_end_pos, - clear_parser, - Parse_error, - function(_wN_){return runtime.caml_set_parser_trace(_wN_)}, - YYexit, - yyparse, - peek_val, - is_current_lookahead, - parse_error]; - caml_register_global(782,Stdlib_Parsing,"Stdlib__Parsing"); - var - Stdlib_Set= - [0, - function(Ord) - {function height(param){if(param){var h=param[4];return h}return 0} - function create(l,v,r) - {if(l)var h=l[4],hl=h;else var hl=0; - if(r)var h$0=r[4],hr=h$0;else var hr=0; - var _wM_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_wM_]} - function bal(l,v,r) - {if(l)var h=l[4],hl=h;else var hl=0; - if(r)var h$0=r[4],hr=h$0;else var hr=0; - if((hr + 2 | 0) < hl) - {if(l) - {var lr=l[3],lv=l[2],ll=l[1],_wH_=height(lr); - if(_wH_ <= height(ll))return create(ll,lv,create(lr,v,r)); - if(lr) - {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_wI_=create(lrr,v,r); - return create(create(ll,lv,lrl),lrv,_wI_)} - return invalid_arg(cst_Set_bal)} - return invalid_arg(cst_Set_bal$0)} - if((hl + 2 | 0) < hr) - {if(r) - {var rr=r[3],rv=r[2],rl=r[1],_wJ_=height(rl); - if(_wJ_ <= height(rr))return create(create(l,v,rl),rv,rr); - if(rl) - {var rlr=rl[3],rlv=rl[2],rll=rl[1],_wK_=create(rlr,rv,rr); - return create(create(l,v,rll),rlv,_wK_)} - return invalid_arg(cst_Set_bal$1)} - return invalid_arg(cst_Set_bal$2)} - var _wL_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_wL_]} - function add(x,t) - {if(t) - {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return t; - if(0 <= c){var rr=add(x,r);return r === rr?t:bal(l,v,rr)} - var ll=add(x,l); - return l === ll?t:bal(ll,v,r)} - return [0,0,x,0,1]} - function singleton(x){return [0,0,x,0,1]} - function add_min_element(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - return bal(add_min_element(x,l),v,r)} - return singleton(x)} - function add_max_element(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - return bal(l,v,add_max_element(x,r))} - return singleton(x)} - function join(l,v,r) - {if(l) - {if(r) - {var - rh=r[4], - rr=r[3], - rv=r[2], - rl=r[1], - lh=l[4], - lr=l[3], - lv=l[2], - ll=l[1]; - return (rh + 2 | 0) < lh - ?bal(ll,lv,join(lr,v,r)) - :(lh + 2 | 0) < rh?bal(join(l,v,rl),rv,rr):create(l,v,r)} - return add_max_element(v,l)} - return add_min_element(v,r)} - function min_elt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _wG_=param$0[1]; - if(_wG_){var param$0=_wG_;continue} - var v=param$0[2]; - return v} - throw Not_found}} - function min_elt_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _wF_=param$0[1]; - if(_wF_){var param$0=_wF_;continue} - var v=param$0[2]; - return [0,v]} - return 0}} - function max_elt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} - var v=param$0[2]; - return v} - throw Not_found}} - function max_elt_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} - var v=param$0[2]; - return [0,v]} - return 0}} - function remove_min_elt(param) - {if(param) - {var _wE_=param[1]; - if(_wE_) - {var r=param[3],v=param[2];return bal(remove_min_elt(_wE_),v,r)} - var r$0=param[3]; - return r$0} - return invalid_arg(cst_Set_remove_min_elt)} - function concat(t1,t2) - {if(t1) - {if(t2) - {var _wD_=remove_min_elt(t2);return join(t1,min_elt(t2),_wD_)} - return t1} - return t2} - function split(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,l,1,r]; - if(0 <= c) - {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; - return [0,join(l,v,lr),pres,rr]} - var - match$0=split(x,l), - rl=match$0[3], - pres$0=match$0[2], - ll=match$0[1]; - return [0,ll,pres$0,join(rl,v,r)]} - return _I_} - var empty=0; - function is_empty(param){return param?0:1} - function mem(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v), - _wC_=0 === c?1:0; - if(_wC_)return _wC_; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function remove(x,t) - {if(t) - {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); - if(0 === c) - {if(l) - {if(r) - {var _wB_=remove_min_elt(r);return bal(l,min_elt(r),_wB_)} - return l} - return r} - if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)} - var ll=remove(x,l); - return l === ll?t:bal(ll,v,r)} - return 0} - function union(s1,s2) - {if(s1) - {if(s2) - {var - h2=s2[4], - r2=s2[3], - v2=s2[2], - l2=s2[1], - h1=s1[4], - r1=s1[3], - v1=s1[2], - l1=s1[1]; - if(h2 <= h1) - {if(1 === h2)return add(v2,s1); - var - match=split(v1,s2), - r2$0=match[3], - l2$0=match[1], - _wz_=union(r1,r2$0); - return join(union(l1,l2$0),v1,_wz_)} - if(1 === h1)return add(v1,s2); - var - match$0=split(v2,s1), - r1$0=match$0[3], - l1$0=match$0[1], - _wA_=union(r1$0,r2); - return join(union(l1$0,l2),v2,_wA_)} - return s1} - return s2} - function inter(s1,s2) - {if(s1) - {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_wv_=split(v1,s2),_ww_=_wv_[1]; - if(_wv_[2]) - {var r2=_wv_[3],_wx_=inter(r1,r2); - return join(inter(l1,_ww_),v1,_wx_)} - var r2$0=_wv_[3],_wy_=inter(r1,r2$0); - return concat(inter(l1,_ww_),_wy_)} - return 0} - return 0} - function split_bis(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return 0; - if(0 <= c) - {var match=split_bis(x,r); - if(match) - {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]} - return 0} - var match$0=split_bis(x,l); - if(match$0) - {var rl=match$0[2],ll=match$0[1]; - return [0, - ll, - function(param){return join(caml_call1(rl,0),v,r)}]} - return 0} - return [0,0,function(param){return 0}]} - function disjoint(s1,s2) - {var s1$0=s1,s2$0=s2; - for(;;) - {if(s1$0 && s2$0) - {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1]; - if(s1$0 === s2$0)return 0; - var match=split_bis(v1,s2$0); - if(match) - {var r2=match[2],l2=match[1],_wu_=disjoint(l1,l2); - if(_wu_) - {var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue} - return _wu_} - return 0} - return 1}} - function diff(s1,s2) - {if(s1) - {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_wq_=split(v1,s2),_wr_=_wq_[1]; - if(_wq_[2]) - {var r2=_wq_[3],_ws_=diff(r1,r2); - return concat(diff(l1,_wr_),_ws_)} - var r2$0=_wq_[3],_wt_=diff(r1,r2$0); - return join(diff(l1,_wr_),v1,_wt_)} - return s1} - return 0} - function cons_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - r=s$0[3], - v=s$0[2], - s$1=s$0[1], - e$1=[0,v,r,e$0], - s$0=s$1, - e$0=e$1; - continue} - return e$0}} - function compare(s1,s2) - {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[3], - r2=e2[2], - v2=e2[1], - e1$0=e1[3], - r1=e1[2], - v1=e1[1], - c=caml_call2(Ord[1],v1,v2); - if(0 === c) - {var - e2$1=cons_enum(r2,e2$0), - e1$1=cons_enum(r1,e1$0), - e1=e1$1, - e2=e2$1; - continue} - return c} - return 1} - return e2?-1:0}} - function equal(s1,s2){return 0 === compare(s1,s2)?1:0} - function subset(s1,s2) - {var s1$0=s1,s2$0=s2; - for(;;) - {if(s1$0) - {if(s2$0) - {var - r2=s2$0[3], - v2=s2$0[2], - l2=s2$0[1], - r1=s1$0[3], - v1=s1$0[2], - l1=s1$0[1], - c=caml_call2(Ord[1],v1,v2); - if(0 === c) - {var _wn_=subset(l1,l2); - if(_wn_){var s1$0=r1,s2$0=r2;continue} - return _wn_} - if(0 <= c) - {var _wo_=subset([0,0,v1,r1,0],r2); - if(_wo_){var s1$0=l1;continue} - return _wo_} - var _wp_=subset([0,l1,v1,0,0],l2); - if(_wp_){var s1$0=r1;continue} - return _wp_} - return 0} - return 1}} - function iter(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var r=param$0[3],v=param$0[2],l=param$0[1]; - iter(f,l); - caml_call1(f,v); - var param$0=r; - continue} - return 0}} - function fold(f,s,accu) - {var s$0=s,accu$0=accu; - for(;;) - {if(s$0) - {var - r=s$0[3], - v=s$0[2], - l=s$0[1], - accu$1=caml_call2(f,v,fold(f,l,accu$0)), - s$0=r, - accu$0=accu$1; - continue} - return accu$0}} - function for_all(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - _wk_=caml_call1(p,v); - if(_wk_) - {var _wl_=for_all(p,l); - if(_wl_){var param$0=r;continue} - var _wm_=_wl_} - else - var _wm_=_wk_; - return _wm_} - return 1}} - function exists(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - _wh_=caml_call1(p,v); - if(_wh_) - var _wi_=_wh_; - else - {var _wj_=exists(p,l); - if(! _wj_){var param$0=r;continue} - var _wi_=_wj_} - return _wi_} - return 0}} - function filter(p,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - l$0=filter(p,l), - pv=caml_call1(p,v), - r$0=filter(p,r); - if(pv){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)} - return concat(l$0,r$0)} - return 0} - function partition(p,param) - {if(param) - {var - r=param[3], - v=param[2], - l=param[1], - match=partition(p,l), - lf=match[2], - lt=match[1], - pv=caml_call1(p,v), - match$0=partition(p,r), - rf=match$0[2], - rt=match$0[1]; - if(pv){var _wf_=concat(lf,rf);return [0,join(lt,v,rt),_wf_]} - var _wg_=join(lf,v,rf); - return [0,concat(lt,rt),_wg_]} - return _J_} - function cardinal(param) - {if(param) - {var r=param[3],l=param[1],_we_=cardinal(r); - return (cardinal(l) + 1 | 0) + _we_ | 0} - return 0} - function elements_aux(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - accu$1=[0,v,elements_aux(accu$0,r)], - accu$0=accu$1, - param$0=l; - continue} - return accu$0}} - function elements(s){return elements_aux(0,s)} - function find(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return v; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - throw Not_found}} - function find_first(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=l$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=l;continue} - var param=r; - continue} - return v0}} - var param$1=r$0; - continue} - throw Not_found}} - function find_first_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=l$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=l;continue} - var param=r; - continue} - return [0,v0]}} - var param$1=r$0; - continue} - return 0}} - function find_last(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=r$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=r;continue} - var param=l; - continue} - return v0}} - var param$1=l$0; - continue} - throw Not_found}} - function find_last_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=r$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=r;continue} - var param=l; - continue} - return [0,v0]}} - var param$1=l$0; - continue} - return 0}} - function find_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,v]; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function try_join(l,v,r) - {var switch$0=0; - if(0 !== l) - {var _wd_=max_elt(l); - if(0 <= caml_call2(Ord[1],_wd_,v))switch$0 = 1} - if(! switch$0) - {var switch$1=0; - if(0 !== r) - {var _wc_=min_elt(r); - if(0 <= caml_call2(Ord[1],v,_wc_))switch$1 = 1} - if(! switch$1)return join(l,v,r)} - return union(l,add(v,r))} - function map(f,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - l$0=map(f,l), - v$0=caml_call1(f,v), - r$0=map(f,r); - if(l === l$0 && v === v$0 && r === r$0)return t; - return try_join(l$0,v$0,r$0)} - return 0} - function filter_map(f,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - t1=filter_map(f,l), - v$0=caml_call1(f,v), - t2=filter_map(f,r); - if(v$0) - {var v$1=v$0[1]; - if(l === t1 && v === v$1 && r === t2)return t; - return try_join(t1,v$1,t2)} - if(t1) - {if(t2) - {var _wb_=remove_min_elt(t2); - return try_join(t1,min_elt(t2),_wb_)} - return t1} - return t2} - return 0} - function of_list(l) - {if(l) - {var _v2_=l[2],_v3_=l[1]; - if(_v2_) - {var _v4_=_v2_[2],_v5_=_v2_[1]; - if(_v4_) - {var _v6_=_v4_[2],_v7_=_v4_[1]; - if(_v6_) - {var _v8_=_v6_[2],_v9_=_v6_[1]; - if(_v8_) - {if(_v8_[2]) - {var - l$0=sort_uniq(Ord[1],l), - sub= - function(n,l) - {if(! (3 < n >>> 0)) - switch(n) - {case 0:return [0,0,l]; - case 1: - if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]} - break; - case 2: - if(l) - {var _v__=l[2]; - if(_v__) - {var l$4=_v__[2],x1=_v__[1],x0$0=l[1]; - return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}} - break; - default: - if(l) - {var _v$_=l[2]; - if(_v$_) - {var _wa_=_v$_[2]; - if(_wa_) - {var l$5=_wa_[2],x2=_wa_[1],x1$0=_v$_[1],x0$1=l[1]; - return [0,[0,[0,0,x0$1,0,1],x1$0,[0,0,x2,0,1],2],l$5]}}}} - var nl=n / 2 | 0,match=sub(nl,l),l$0=match[2],left=match[1]; - if(l$0) - {var - l$1=l$0[2], - mid=l$0[1], - match$0=sub((n - nl | 0) - 1 | 0,l$1), - l$2=match$0[2], - right=match$0[1]; - return [0,create(left,mid,right),l$2]} - throw [0,Assert_failure,_K_]}; - return sub(length(l$0),l$0)[1]} - var x4=_v8_[1]; - return add(x4,add(_v9_,add(_v7_,add(_v5_,singleton(_v3_)))))} - return add(_v9_,add(_v7_,add(_v5_,singleton(_v3_))))} - return add(_v7_,add(_v5_,singleton(_v3_)))} - return add(_v5_,singleton(_v3_))} - return singleton(_v3_)} - return empty} - function add_seq(i,m) - {return fold_left(function(s,x){return add(x,s)},m,i)} - function of_seq(i){return add_seq(i,empty)} - function seq_of_enum(c,param) - {if(c) - {var rest=c[3],t=c[2],x=c[1],_v0_=cons_enum(t,rest); - return [0,x,function(_v1_){return seq_of_enum(_v0_,_v1_)}]} - return 0} - function to_seq(c) - {var _vY_=cons_enum(c,0); - return function(_vZ_){return seq_of_enum(_vY_,_vZ_)}} - function snoc_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - s$1=s$0[3], - v=s$0[2], - l=s$0[1], - e$1=[0,v,l,e$0], - s$0=s$1, - e$0=e$1; - continue} - return e$0}} - function rev_seq_of_enum(c,param) - {if(c) - {var rest=c[3],t=c[2],x=c[1],_vW_=snoc_enum(t,rest); - return [0,x,function(_vX_){return rev_seq_of_enum(_vW_,_vX_)}]} - return 0} - function to_rev_seq(c) - {var _vU_=snoc_enum(c,0); - return function(_vV_){return rev_seq_of_enum(_vU_,_vV_)}} - function to_seq_from(low,s) - {var s$0=s,c=0; - for(;;) - {if(s$0) - {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low); - if(0 !== n) - {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue} - var s$0=r; - continue} - var _vS_=[0,v,r,c]} - else - var _vS_=c; - return function(_vT_){return seq_of_enum(_vS_,_vT_)}}} - return [0, - empty, - is_empty, - mem, - add, - singleton, - remove, - union, - inter, - disjoint, - diff, - compare, - equal, - subset, - iter, - map, - fold, - for_all, - exists, - filter, - filter_map, - partition, - cardinal, - elements, - min_elt, - min_elt_opt, - max_elt, - max_elt_opt, - min_elt, - min_elt_opt, - split, - find, - find_opt, - find_first, - find_first_opt, - find_last, - find_last_opt, - of_list, - to_seq_from, - to_seq, - to_rev_seq, - add_seq, - of_seq]}]; - caml_register_global(783,Stdlib_Set,"Stdlib__Set"); - var - Stdlib_Map= - [0, - function(Ord) - {function height(param){if(param){var h=param[5];return h}return 0} - function create(l,x,d,r) - {var hl=height(l),hr=height(r),_vR_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_vR_]} - function singleton(x,d){return [0,0,x,d,0,1]} - function bal(l,x,d,r) - {if(l)var h=l[5],hl=h;else var hl=0; - if(r)var h$0=r[5],hr=h$0;else var hr=0; - if((hr + 2 | 0) < hl) - {if(l) - {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_vM_=height(lr); - if(_vM_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); - if(lr) - {var - lrr=lr[4], - lrd=lr[3], - lrv=lr[2], - lrl=lr[1], - _vN_=create(lrr,x,d,r); - return create(create(ll,lv,ld,lrl),lrv,lrd,_vN_)} - return invalid_arg(cst_Map_bal)} - return invalid_arg(cst_Map_bal$0)} - if((hl + 2 | 0) < hr) - {if(r) - {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_vO_=height(rl); - if(_vO_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); - if(rl) - {var - rlr=rl[4], - rld=rl[3], - rlv=rl[2], - rll=rl[1], - _vP_=create(rlr,rv,rd,rr); - return create(create(l,x,d,rll),rlv,rld,_vP_)} - return invalid_arg(cst_Map_bal$1)} - return invalid_arg(cst_Map_bal$2)} - var _vQ_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_vQ_]} - var empty=0; - function is_empty(param){return param?0:1} - function add(x,data,m) - {if(m) - {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return d === data?m:[0,l,x,data,r,h]; - if(0 <= c){var rr=add(x,data,r);return r === rr?m:bal(l,v,d,rr)} - var ll=add(x,data,l); - return l === ll?m:bal(ll,v,d,r)} - return [0,0,x,data,0,1]} - function find(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return d; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - throw Not_found}} - function find_first(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=l$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} - var param=r; - continue} - return [0,v0,d0]}} - var param$1=r$0; - continue} - throw Not_found}} - function find_first_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=l$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} - var param=r; - continue} - return [0,[0,v0,d0]]}} - var param$1=r$0; - continue} - return 0}} - function find_last(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=r$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} - var param=l; - continue} - return [0,v0,d0]}} - var param$1=l$0; - continue} - throw Not_found}} - function find_last_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=r$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} - var param=l; - continue} - return [0,[0,v0,d0]]}} - var param$1=l$0; - continue} - return 0}} - function find_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,d]; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function mem(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v), - _vL_=0 === c?1:0; - if(_vL_)return _vL_; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function min_binding(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _vK_=param$0[1]; - if(_vK_){var param$0=_vK_;continue} - var d=param$0[3],v=param$0[2]; - return [0,v,d]} - throw Not_found}} - function min_binding_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _vJ_=param$0[1]; - if(_vJ_){var param$0=_vJ_;continue} - var d=param$0[3],v=param$0[2]; - return [0,[0,v,d]]} - return 0}} - function max_binding(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} - var d=param$0[3],v=param$0[2]; - return [0,v,d]} - throw Not_found}} - function max_binding_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} - var d=param$0[3],v=param$0[2]; - return [0,[0,v,d]]} - return 0}} - function remove_min_binding(param) - {if(param) - {var _vI_=param[1]; - if(_vI_) - {var r=param[4],d=param[3],v=param[2]; - return bal(remove_min_binding(_vI_),v,d,r)} - var r$0=param[4]; - return r$0} - return invalid_arg(cst_Map_remove_min_elt)} - function _vh_(t1,t2) - {if(t1) - {if(t2) - {var match=min_binding(t2),d=match[2],x=match[1]; - return bal(t1,x,d,remove_min_binding(t2))} - return t1} - return t2} - function remove(x,m) - {if(m) - {var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return _vh_(l,r); - if(0 <= c){var rr=remove(x,r);return r === rr?m:bal(l,v,d,rr)} - var ll=remove(x,l); - return l === ll?m:bal(ll,v,d,r)} - return 0} - function update(x,f,m) - {if(m) - {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c) - {var match=caml_call1(f,[0,d]); - if(match) - {var data=match[1];return d === data?m:[0,l,x,data,r,h]} - return _vh_(l,r)} - if(0 <= c){var rr=update(x,f,r);return r === rr?m:bal(l,v,d,rr)} - var ll=update(x,f,l); - return l === ll?m:bal(ll,v,d,r)} - var match$0=caml_call1(f,0); - if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]} - return 0} - function iter(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1]; - iter(f,l); - caml_call2(f,v,d); - var param$0=r; - continue} - return 0}} - function map(f,param) - {if(param) - {var - h=param[5], - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=map(f,l), - d$0=caml_call1(f,d), - r$0=map(f,r); - return [0,l$0,v,d$0,r$0,h]} - return 0} - function mapi(f,param) - {if(param) - {var - h=param[5], - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=mapi(f,l), - d$0=caml_call2(f,v,d), - r$0=mapi(f,r); - return [0,l$0,v,d$0,r$0,h]} - return 0} - function fold(f,m,accu) - {var m$0=m,accu$0=accu; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - l=m$0[1], - accu$1=caml_call3(f,v,d,fold(f,l,accu$0)), - m$0=r, - accu$0=accu$1; - continue} - return accu$0}} - function for_all(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - _vF_=caml_call2(p,v,d); - if(_vF_) - {var _vG_=for_all(p,l); - if(_vG_){var param$0=r;continue} - var _vH_=_vG_} - else - var _vH_=_vF_; - return _vH_} - return 1}} - function exists(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - _vC_=caml_call2(p,v,d); - if(_vC_) - var _vD_=_vC_; - else - {var _vE_=exists(p,l); - if(! _vE_){var param$0=r;continue} - var _vD_=_vE_} - return _vD_} - return 0}} - function add_min_binding(k,x,param) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - return bal(add_min_binding(k,x,l),v,d,r)} - return singleton(k,x)} - function add_max_binding(k,x,param) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - return bal(l,v,d,add_max_binding(k,x,r))} - return singleton(k,x)} - function join(l,v,d,r) - {if(l) - {if(r) - {var - rh=r[5], - rr=r[4], - rd=r[3], - rv=r[2], - rl=r[1], - lh=l[5], - lr=l[4], - ld=l[3], - lv=l[2], - ll=l[1]; - return (rh + 2 | 0) < lh - ?bal(ll,lv,ld,join(lr,v,d,r)) - :(lh + 2 | 0) < rh - ?bal(join(l,v,d,rl),rv,rd,rr) - :create(l,v,d,r)} - return add_max_binding(v,d,l)} - return add_min_binding(v,d,r)} - function concat(t1,t2) - {if(t1) - {if(t2) - {var match=min_binding(t2),d=match[2],x=match[1]; - return join(t1,x,d,remove_min_binding(t2))} - return t1} - return t2} - function concat_or_join(t1,v,d,t2) - {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)} - function split(x,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,l,[0,d],r]; - if(0 <= c) - {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; - return [0,join(l,v,d,lr),pres,rr]} - var - match$0=split(x,l), - rl=match$0[3], - pres$0=match$0[2], - ll=match$0[1]; - return [0,ll,pres$0,join(rl,v,d,r)]} - return _L_} - function merge(f,s1,s2) - {if(s1) - {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; - if(height(s2) <= h1) - {var - match=split(v1,s2), - r2=match[3], - d2=match[2], - l2=match[1], - _vy_=merge(f,r1,r2), - _vz_=caml_call3(f,v1,[0,d1],d2); - return concat_or_join(merge(f,l1,l2),v1,_vz_,_vy_)}} - else - if(! s2)return 0; - if(s2) - {var - r2$0=s2[4], - d2$0=s2[3], - v2=s2[2], - l2$0=s2[1], - match$0=split(v2,s1), - r1$0=match$0[3], - d1$0=match$0[2], - l1$0=match$0[1], - _vA_=merge(f,r1$0,r2$0), - _vB_=caml_call3(f,v2,d1$0,[0,d2$0]); - return concat_or_join(merge(f,l1$0,l2$0),v2,_vB_,_vA_)} - throw [0,Assert_failure,_M_]} - function union(f,s1,s2) - {if(s1) - {if(s2) - {var - h2=s2[5], - r2=s2[4], - d2=s2[3], - v2=s2[2], - l2=s2[1], - h1=s1[5], - r1=s1[4], - d1=s1[3], - v1=s1[2], - l1=s1[1]; - if(h2 <= h1) - {var - match=split(v1,s2), - r2$0=match[3], - d2$0=match[2], - l2$0=match[1], - l=union(f,l1,l2$0), - r=union(f,r1,r2$0); - if(d2$0) - {var d2$1=d2$0[1]; - return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)} - return join(l,v1,d1,r)} - var - match$0=split(v2,s1), - r1$0=match$0[3], - d1$0=match$0[2], - l1$0=match$0[1], - l$0=union(f,l1$0,l2), - r$0=union(f,r1$0,r2); - if(d1$0) - {var d1$1=d1$0[1]; - return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)} - return join(l$0,v2,d2,r$0)} - var s=s1} - else - var s=s2; - return s} - function filter(p,m) - {if(m) - {var - r=m[4], - d=m[3], - v=m[2], - l=m[1], - l$0=filter(p,l), - pvd=caml_call2(p,v,d), - r$0=filter(p,r); - if(pvd) - {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)} - return concat(l$0,r$0)} - return 0} - function filter_map(f,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=filter_map(f,l), - fvd=caml_call2(f,v,d), - r$0=filter_map(f,r); - if(fvd){var d$0=fvd[1];return join(l$0,v,d$0,r$0)} - return concat(l$0,r$0)} - return 0} - function partition(p,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - match=partition(p,l), - lf=match[2], - lt=match[1], - pvd=caml_call2(p,v,d), - match$0=partition(p,r), - rf=match$0[2], - rt=match$0[1]; - if(pvd){var _vw_=concat(lf,rf);return [0,join(lt,v,d,rt),_vw_]} - var _vx_=join(lf,v,d,rf); - return [0,concat(lt,rt),_vx_]} - return _N_} - function cons_enum(m,e) - {var m$0=m,e$0=e; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - m$1=m$0[1], - e$1=[0,v,d,r,e$0], - m$0=m$1, - e$0=e$1; - continue} - return e$0}} - function compare(cmp,m1,m2) - {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[4], - r2=e2[3], - d2=e2[2], - v2=e2[1], - e1$0=e1[4], - r1=e1[3], - d1=e1[2], - v1=e1[1], - c=caml_call2(Ord[1],v1,v2); - if(0 === c) - {var c$0=caml_call2(cmp,d1,d2); - if(0 === c$0) - {var - e2$1=cons_enum(r2,e2$0), - e1$1=cons_enum(r1,e1$0), - e1=e1$1, - e2=e2$1; - continue} - return c$0} - return c} - return 1} - return e2?-1:0}} - function equal(cmp,m1,m2) - {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[4], - r2=e2[3], - d2=e2[2], - v2=e2[1], - e1$0=e1[4], - r1=e1[3], - d1=e1[2], - v1=e1[1], - _vt_=0 === caml_call2(Ord[1],v1,v2)?1:0; - if(_vt_) - {var _vu_=caml_call2(cmp,d1,d2); - if(_vu_) - {var - e2$1=cons_enum(r2,e2$0), - e1$1=cons_enum(r1,e1$0), - e1=e1$1, - e2=e2$1; - continue} - var _vv_=_vu_} - else - var _vv_=_vt_; - return _vv_} - return 0} - return e2?0:1}} - function cardinal(param) - {if(param) - {var r=param[4],l=param[1],_vs_=cardinal(r); - return (cardinal(l) + 1 | 0) + _vs_ | 0} - return 0} - function bindings_aux(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - accu$1=[0,[0,v,d],bindings_aux(accu$0,r)], - accu$0=accu$1, - param$0=l; - continue} - return accu$0}} - function bindings(s){return bindings_aux(0,s)} - function add_seq(i,m) - {return fold_left - (function(m,param) - {var v=param[2],k=param[1];return add(k,v,m)}, - m, - i)} - function of_seq(i){return add_seq(i,empty)} - function seq_of_enum(c,param) - {if(c) - {var rest=c[4],t=c[3],v=c[2],k=c[1],_vq_=cons_enum(t,rest); - return [0,[0,k,v],function(_vr_){return seq_of_enum(_vq_,_vr_)}]} - return 0} - function to_seq(m) - {var _vo_=cons_enum(m,0); - return function(_vp_){return seq_of_enum(_vo_,_vp_)}} - function snoc_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - s$1=s$0[4], - d=s$0[3], - v=s$0[2], - l=s$0[1], - e$1=[0,v,d,l,e$0], - s$0=s$1, - e$0=e$1; - continue} - return e$0}} - function rev_seq_of_enum(c,param) - {if(c) - {var rest=c[4],t=c[3],v=c[2],k=c[1],_vm_=snoc_enum(t,rest); - return [0, - [0,k,v], - function(_vn_){return rev_seq_of_enum(_vm_,_vn_)}]} - return 0} - function to_rev_seq(c) - {var _vk_=snoc_enum(c,0); - return function(_vl_){return rev_seq_of_enum(_vk_,_vl_)}} - function to_seq_from(low,m) - {var m$0=m,c=0; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - l=m$0[1], - n=caml_call2(Ord[1],v,low); - if(0 !== n) - {if(0 <= n){var c$0=[0,v,d,r,c],m$0=l,c=c$0;continue} - var m$0=r; - continue} - var _vi_=[0,v,d,r,c]} - else - var _vi_=c; - return function(_vj_){return seq_of_enum(_vi_,_vj_)}}} - return [0, - empty, - is_empty, - mem, - add, - update, - singleton, - remove, - merge, - union, - compare, - equal, - iter, - fold, - for_all, - exists, - filter, - filter_map, - partition, - cardinal, - bindings, - min_binding, - min_binding_opt, - max_binding, - max_binding_opt, - min_binding, - min_binding_opt, - split, - find, - find_opt, - find_first, - find_first_opt, - find_last, - find_last_opt, - map, - mapi, - to_seq, - to_rev_seq, - to_seq_from, - add_seq, - of_seq]}]; - caml_register_global(784,Stdlib_Map,"Stdlib__Map"); - var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)]; - function create$0(param){return [0,0,0]} - function clear(s){s[1] = 0;s[2] = 0;return 0} - function copy$3(s){return [0,s[1],s[2]]} - function push(x,s){s[1] = [0,x,s[1]];s[2] = s[2] + 1 | 0;return 0} - function pop(s) - {var _vg_=s[1]; - if(_vg_) - {var tl=_vg_[2],hd=_vg_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} - throw Empty} - function pop_opt(s) - {var _vf_=s[1]; - if(_vf_) - {var tl=_vf_[2],hd=_vf_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} - return 0} - function top(s) - {var _ve_=s[1];if(_ve_){var hd=_ve_[1];return hd}throw Empty} - function top_opt(s) - {var _vd_=s[1];if(_vd_){var hd=_vd_[1];return [0,hd]}return 0} - function is_empty(s){return 0 === s[1]?1:0} - function length$1(s){return s[2]} - function iter$7(f,s){return iter$2(f,s[1])} - function fold$2(f,acc,s){return fold_left$0(f,acc,s[1])} - function to_seq$6(s){return to_seq$1(s[1])} - function add_seq(q,i){return iter(function(x){return push(x,q)},i)} - function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s} - var - Stdlib_Stack= - [0, - Empty, - create$0, - push, - pop, - pop_opt, - top, - top_opt, - clear, - copy$3, - is_empty, - length$1, - iter$7, - fold$2, - to_seq$6, - add_seq, - of_seq$4]; - caml_register_global(785,Stdlib_Stack,"Stdlib__Stack"); - var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)]; - function create$1(param){return [0,0,0,0]} - function clear$0(q){q[1] = 0;q[2] = 0;q[3] = 0;return 0} - function add(x,q) - {var cell=[0,x,0],_vc_=q[3]; - return _vc_ - ?(q[1] = q[1] + 1 | 0,_vc_[2] = cell,q[3] = cell,0) - :(q[1] = 1,q[2] = cell,q[3] = cell,0)} - function peek(q) - {var _vb_=q[2];if(_vb_){var content=_vb_[1];return content}throw Empty$0} - function peek_opt(q) - {var _va_=q[2];if(_va_){var content=_va_[1];return [0,content]}return 0} - function take(q) - {var _u__=q[2]; - if(_u__) - {var _u$_=_u__[1]; - if(_u__[2]) - {var next=_u__[2];q[1] = q[1] - 1 | 0;q[2] = next;return _u$_} - clear$0(q); - return _u$_} - throw Empty$0} - function take_opt(q) - {var _u8_=q[2]; - if(_u8_) - {var _u9_=_u8_[1]; - if(_u8_[2]) - {var next=_u8_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_u9_]} - clear$0(q); - return [0,_u9_]} - return 0} - function copy$4(q) - {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; - for(;;) - {if(cell) - {var content=cell[1],next=cell[2],res=[0,content,0]; - if(prev)prev[2] = res;else q_res[2] = res; - var prev=res,cell=next; - continue} - q_res[3] = prev; - return q_res}} - function is_empty$0(q){return 0 === q[1]?1:0} - function length$2(q){return q[1]} - function iter$8(f,q) - {var cell=q[2]; - for(;;) - {if(cell) - {var content=cell[1],next=cell[2]; - caml_call1(f,content); - var cell=next; - continue} - return 0}} - function fold$3(f,accu$1,q) - {var accu=accu$1,cell=q[2]; - for(;;) - {if(cell) - {var - content=cell[1], - next=cell[2], - accu$0=caml_call2(f,accu,content), - accu=accu$0, - cell=next; - continue} - return accu}} - function transfer(q1,q2) - {var _u6_=0 < q1[1]?1:0; - if(_u6_) - {var _u7_=q2[3]; - return _u7_ - ?(q2[1] - = - q2[1] - + - q1[1] - | - 0, - _u7_[2] - = - q1[2], - q2[3] - = - q1[3], - clear$0(q1)) - :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} - return _u6_} - function to_seq$7(q) - {function aux(c,param) - {if(c) - {var x=c[1],next=c[2]; - return [0,x,function(_u5_){return aux(next,_u5_)}]} - return 0} - var _u3_=q[2]; - return function(_u4_){return aux(_u3_,_u4_)}} - function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)} - function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q} - var - Stdlib_Queue= - [0, - Empty$0, - create$1, - add, - add, - take, - take_opt, - take, - peek, - peek_opt, - peek, - clear$0, - copy$4, - is_empty$0, - length$2, - iter$8, - fold$3, - transfer, - to_seq$7, - add_seq$0, - of_seq$5]; - caml_register_global(786,Stdlib_Queue,"Stdlib__Queue"); - var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)]; - function raise_undefined(param){throw Undefined} - function force_lazy_block(blk) - {var closure=blk[1]; - blk[1] = raise_undefined; - try - {var result=caml_call1(closure,0); - caml_obj_make_forward(blk,result); - return result} - catch(e) - {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}} - function force_val_lazy_block(blk) - {var closure=blk[1]; - blk[1] = raise_undefined; - var result=caml_call1(closure,0); - caml_obj_make_forward(blk,result); - return result} - function force(lzv) - {var t=caml_obj_tag(lzv); - return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)} - function force_val(lzv) - {var t=caml_obj_tag(lzv); - return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)} - var - CamlinternalLazy= - [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val]; - caml_register_global(787,CamlinternalLazy,"CamlinternalLazy"); - function from_fun(f){var x=caml_obj_block(246,1);x[1] = f;return x} - function from_val(v) - {var t=caml_obj_tag(v); - if(t !== 250 && t !== 246 && t !== 253)return v; - return runtime.caml_lazy_make_forward(v)} - function is_val(l){return caml_obj_tag(l) !== 246?1:0} - function map$8(f,x) - {return [246, - function(_u0_) - {var - _u1_=caml_obj_tag(x), - _u2_=250 === _u1_?x[1]:246 === _u1_?force_lazy_block(x):x; - return caml_call1(f,_u2_)}]} - function map_val(f,x) - {if(is_val(x)) - {var - _uV_=caml_obj_tag(x), - _uW_=250 === _uV_?x[1]:246 === _uV_?force_lazy_block(x):x; - return from_val(caml_call1(f,_uW_))} - return [246, - function(_uX_) - {var - _uY_=caml_obj_tag(x), - _uZ_=250 === _uY_?x[1]:246 === _uY_?force_lazy_block(x):x; - return caml_call1(f,_uZ_)}]} - var - Stdlib_Lazy= - [0, - Undefined, - map$8, - is_val, - from_val, - map_val, - from_fun, - force_val, - from_fun, - from_val, - is_val]; - caml_register_global(788,Stdlib_Lazy,"Stdlib__Lazy"); - var - Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)], - Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)]; - function count(param) - {if(param){var match=param[1],count=match[1];return count}return 0} - function data(param) - {if(param){var match=param[1],data=match[2];return data}return 0} - function fill_buff(b) - {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0} - function get_data(count,d) - {var d$0=d; - for(;;) - {if(typeof d$0 !== "number") - switch(d$0[0]) - {case 1: - var d2=d$0[2],d1=d$0[1],match=get_data(count,d1); - if(typeof match === "number") - {var d$0=d2;continue} - else - {if(0 === match[0]) - {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} - throw [0,Assert_failure,_O_]} - case 2: - var - f=d$0[1], - _uR_=caml_obj_tag(f), - d$1=250 === _uR_?f[1]:246 === _uR_?force_lazy_block(f):f, - d$0=d$1; - continue; - case 3: - var _uS_=d$0[1],_uT_=_uS_[1]; - if(_uT_) - {var _uU_=_uT_[1]; - if(_uU_){var a$0=_uU_[1];_uS_[1] = 0;return [0,a$0,d$0]} - return 0} - var match$0=caml_call1(_uS_[2],count); - if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} - _uS_[1] = _P_; - return 0; - case 4: - var b=d$0[1]; - if(b[3] <= b[4])fill_buff(b); - if(0 === b[3])return 0; - var r=caml_bytes_unsafe_get(b[2],b[4]); - b[4] = b[4] + 1 | 0; - return [0,r,d$0] - } - return d$0}} - function peek_data(s) - {for(;;) - {var _uM_=s[2]; - if(typeof _uM_ === "number") - return 0; - else - switch(_uM_[0]) - {case 0:var a=_uM_[1];return [0,a]; - case 1: - var d=get_data(s[1],s[2]); - if(typeof d === "number") - return 0; - else - {if(0 === d[0]){var a$0=d[1];s[2] = d;return [0,a$0]} - throw [0,Assert_failure,_Q_]} - case 2: - var - f=_uM_[1], - _uN_=caml_obj_tag(f), - _uO_=250 === _uN_?f[1]:246 === _uN_?force_lazy_block(f):f; - s[2] = _uO_; - continue; - case 3: - var _uP_=_uM_[1],_uQ_=_uP_[1]; - if(_uQ_){var a$1=_uQ_[1];return a$1} - var x=caml_call1(_uP_[2],s[1]); - _uP_[1] = [0,x]; - return x; - default: - var b=_uM_[1]; - if(b[3] <= b[4])fill_buff(b); - return 0 === b[3] - ?(s[2] = 0,0) - :[0,caml_bytes_unsafe_get(b[2],b[4])]}}} - function peek$0(param) - {if(param){var s=param[1];return peek_data(s)}return 0} - function junk_data(s) - {for(;;) - {var _uK_=s[2]; - if(typeof _uK_ !== "number") - switch(_uK_[0]) - {case 0:var d=_uK_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; - case 3: - var _uL_=_uK_[1]; - if(_uL_[1]){s[1] = s[1] + 1 | 0;_uL_[1] = 0;return 0} - break; - case 4: - var b=_uK_[1]; - if(b[3] <= b[4])fill_buff(b); - return 0 === b[3] - ?(s[2] = 0,0) - :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0) - } - var match=peek_data(s); - if(match)continue; - return 0}} - function junk(param) - {if(param){var data=param[1];return junk_data(data)}return 0} - function nget_data(n,s) - {if(0 < n) - {var match=peek_data(s); - if(match) - {var a=match[1]; - junk_data(s); - var - match$0=nget_data(n - 1 | 0,s), - k=match$0[3], - d=match$0[2], - al=match$0[1]; - return [0,[0,a,al],[0,a,d],k + 1 | 0]} - return [0,0,s[2],0]} - return [0,0,s[2],0]} - function npeek(n,param) - {if(param) - {var - d$0=param[1], - match=nget_data(n,d$0), - len=match[3], - d=match[2], - al=match[1]; - d$0[1] = d$0[1] - len | 0; - d$0[2] = d; - return al} - return 0} - function next(s) - {var match=peek$0(s); - if(match){var a=match[1];junk(s);return a} - throw Failure$0} - function empty$2(s){var match=peek$0(s);if(match)throw Failure$0;return 0} - function iter$9(f,strm) - {for(;;) - {var match=peek$0(strm); - if(match){var a=match[1];junk(strm);caml_call1(f,a);continue} - return 0}} - function from(f){return [0,[0,0,[3,[0,0,f]]]]} - function of_list$1(l) - {var _uJ_=0; - return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_uJ_)]]} - function of_string(s) - {var count=[0,0]; - return from - (function(param) - {var c=count[1]; - return c < caml_ml_string_length(s) - ?(count[1]++,[0,caml_string_get(s,c)]) - :0})} - function of_bytes$0(s) - {var count=[0,0]; - return from - (function(param) - {var c=count[1]; - return c < caml_ml_bytes_length(s) - ?(count[1]++,[0,caml_bytes_get(s,c)]) - :0})} - function of_channel(ic) - {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]} - function iapp(i,s){var _uI_=data(s);return [0,[0,0,[1,data(i),_uI_]]]} - function icons(i,s){return [0,[0,0,[0,i,data(s)]]]} - function ising(i){return [0,[0,0,[0,i,0]]]} - function lapp(f,s) - {return [0, - [0, - 0, - [2, - [246, - function(_uG_) - {var _uH_=data(s);return [1,data(caml_call1(f,0)),_uH_]}]]]]} - function lcons(f,s) - {return [0, - [0, - 0, - [2, - [246, - function(_uE_) - {var _uF_=data(s);return [0,caml_call1(f,0),_uF_]}]]]]} - function lsing(f) - {return [0,[0,0,[2,[246,function(_uD_){return [0,caml_call1(f,0),0]}]]]]} - var sempty=0; - function slazy(f) - {return [0,[0,0,[2,[246,function(_uC_){return data(caml_call1(f,0))}]]]]} - function dump_data(f,param) - {if(typeof param === "number") - return print_string(cst_Sempty); - else - switch(param[0]) - {case 0: - var d=param[2],a=param[1]; - print_string(cst_Scons); - caml_call1(f,a); - print_string(cst$7); - dump_data(f,d); - return print_string(cst$8); - case 1: - var d2=param[2],d1=param[1]; - print_string(cst_Sapp); - dump_data(f,d1); - print_string(cst$9); - dump_data(f,d2); - return print_string(cst$10); - case 2:return print_string(cst_Slazy); - case 3:return print_string(cst_Sgen); - default:return print_string(cst_Sbuffio)}} - function dump(f,s) - {print_string(cst_count); - print_int(count(s)); - print_string(cst_data); - dump_data(f,data(s)); - print_string(cst$6); - return print_newline(0)} - var - Stdlib_Stream= - [0, - Failure$0, - Error, - from, - of_list$1, - of_string, - of_bytes$0, - of_channel, - iter$9, - next, - empty$2, - peek$0, - junk, - count, - npeek, - iapp, - icons, - ising, - lapp, - lcons, - lsing, - sempty, - slazy, - dump]; - caml_register_global(789,Stdlib_Stream,"Stdlib__Stream"); - function create$2(n) - {var - n$0=1 <= n?n:1, - n$1=max_string_length < n$0?max_string_length:n$0, - s=caml_create_bytes(n$1); - return [0,s,0,n$1,s]} - function contents(b){return sub_string(b[1],0,b[2])} - function to_bytes$0(b){return sub(b[1],0,b[2])} - function sub$3(b,ofs,len) - {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs)) - return sub_string(b[1],ofs,len); - return invalid_arg(cst_Buffer_sub)} - function blit$3(src,srcoff,dst,dstoff,len) - {if - (0 - <= - len - && - 0 - <= - srcoff - && - ! - ((src[2] - len | 0) < srcoff) - && - 0 - <= - dstoff - && - ! - ((caml_ml_bytes_length(dst) - len | 0) < dstoff)) - return caml_blit_bytes(src[1],srcoff,dst,dstoff,len); - return invalid_arg(cst_Buffer_blit)} - function nth$0(b,ofs) - {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs); - return invalid_arg(cst_Buffer_nth)} - function length$3(b){return b[2]} - function clear$1(b){b[2] = 0;return 0} - function reset(b) - {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0} - function resize(b,more) - {var old_pos=b[2],old_len=b[3],new_len=[0,old_len]; - for(;;) - {if(new_len[1] < (old_pos + more | 0)) - {new_len[1] = 2 * new_len[1] | 0;continue} - if(max_string_length < new_len[1]) - if((old_pos + more | 0) <= max_string_length) - new_len[1] = max_string_length; - else - failwith(cst_Buffer_add_cannot_grow_buf); - var new_buffer=caml_create_bytes(new_len[1]); - blit(b[1],0,new_buffer,0,b[2]); - b[1] = new_buffer; - b[3] = new_len[1]; - if((b[2] + more | 0) <= b[3]) - {if((old_pos + more | 0) <= b[3])return 0; - throw [0,Assert_failure,_R_]} - throw [0,Assert_failure,_S_]}} - function add_char(b,c) - {var pos=b[2]; - if(b[3] <= pos)resize(b,1); - caml_bytes_unsafe_set(b[1],pos,c); - b[2] = pos + 1 | 0; - return 0} - function add_utf_8_uchar(b,u) - {if(0 <= u) - {if(127 < u) - {if(2047 < u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_T_]; - var pos=b[2]; - if(b[3] < (pos + 4 | 0))resize(b,4); - caml_bytes_unsafe_set(b[1],pos,240 | u >>> 18 | 0); - caml_bytes_unsafe_set - (b[1],pos + 1 | 0,128 | (u >>> 12 | 0) & 63); - caml_bytes_unsafe_set(b[1],pos + 2 | 0,128 | (u >>> 6 | 0) & 63); - caml_bytes_unsafe_set(b[1],pos + 3 | 0,128 | u & 63); - b[2] = pos + 4 | 0; - return 0} - var pos$0=b[2]; - if(b[3] < (pos$0 + 3 | 0))resize(b,3); - caml_bytes_unsafe_set(b[1],pos$0,224 | u >>> 12 | 0); - caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,128 | (u >>> 6 | 0) & 63); - caml_bytes_unsafe_set(b[1],pos$0 + 2 | 0,128 | u & 63); - b[2] = pos$0 + 3 | 0; - return 0} - var pos$1=b[2]; - if(b[3] < (pos$1 + 2 | 0))resize(b,2); - caml_bytes_unsafe_set(b[1],pos$1,192 | u >>> 6 | 0); - caml_bytes_unsafe_set(b[1],pos$1 + 1 | 0,128 | u & 63); - b[2] = pos$1 + 2 | 0; - return 0} - return add_char(b,u)} - throw [0,Assert_failure,_U_]} - function add_utf_16be_uchar(b,u) - {if(0 <= u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_V_]; - var - u$0=u - 65536 | 0, - hi=55296 | u$0 >>> 10 | 0, - lo=56320 | u$0 & 1023, - pos=b[2]; - if(b[3] < (pos + 4 | 0))resize(b,4); - caml_bytes_unsafe_set(b[1],pos,hi >>> 8 | 0); - caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi & 255); - caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo >>> 8 | 0); - caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo & 255); - b[2] = pos + 4 | 0; - return 0} - var pos$0=b[2]; - if(b[3] < (pos$0 + 2 | 0))resize(b,2); - caml_bytes_unsafe_set(b[1],pos$0,u >>> 8 | 0); - caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u & 255); - b[2] = pos$0 + 2 | 0; - return 0} - throw [0,Assert_failure,_W_]} - function add_utf_16le_uchar(b,u) - {if(0 <= u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_X_]; - var - u$0=u - 65536 | 0, - hi=55296 | u$0 >>> 10 | 0, - lo=56320 | u$0 & 1023, - pos=b[2]; - if(b[3] < (pos + 4 | 0))resize(b,4); - caml_bytes_unsafe_set(b[1],pos,hi & 255); - caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi >>> 8 | 0); - caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo & 255); - caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo >>> 8 | 0); - b[2] = pos + 4 | 0; - return 0} - var pos$0=b[2]; - if(b[3] < (pos$0 + 2 | 0))resize(b,2); - caml_bytes_unsafe_set(b[1],pos$0,u & 255); - caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u >>> 8 | 0); - b[2] = pos$0 + 2 | 0; - return 0} - throw [0,Assert_failure,_Y_]} - function add_substring(b,s,offset,len) - {var _uz_=offset < 0?1:0; - if(_uz_) - var _uA_=_uz_; - else - var - _uB_=len < 0?1:0, - _uA_=_uB_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); - if(_uA_)invalid_arg(cst_Buffer_add_substring_add_s); - var new_position=b[2] + len | 0; - if(b[3] < new_position)resize(b,len); - caml_blit_string(s,offset,b[1],b[2],len); - b[2] = new_position; - return 0} - function add_subbytes(b,s,offset,len) - {return add_substring(b,caml_string_of_bytes(s),offset,len)} - function add_string(b,s) - {var len=caml_ml_string_length(s),new_position=b[2] + len | 0; - if(b[3] < new_position)resize(b,len); - caml_blit_string(s,0,b[1],b[2],len); - b[2] = new_position; - return 0} - function add_bytes(b,s){return add_string(b,caml_string_of_bytes(s))} - function add_buffer(b,bs){return add_subbytes(b,bs[1],0,bs[2])} - function add_channel(b,ic,len) - {var _ux_=len < 0?1:0,_uy_=_ux_ || (max_string_length < len?1:0); - if(_uy_)invalid_arg(cst_Buffer_add_channel); - if(b[3] < (b[2] + len | 0))resize(b,len); - var already_read=0,ofs=b[2],to_read=len,_uw_=b[1]; - for(;;) - {if(0 !== to_read) - {var r=input(ic,_uw_,ofs,to_read); - if(0 !== r) - {var - already_read$0=already_read + r | 0, - ofs$0=ofs + r | 0, - to_read$0=to_read - r | 0, - already_read=already_read$0, - ofs=ofs$0, - to_read=to_read$0; - continue}} - if((b[2] + already_read | 0) <= b[3]) - {b[2] = b[2] + already_read | 0; - if(already_read < len)throw End_of_file; - return 0} - throw [0,Assert_failure,_Z_]}} - function output_buffer(oc,b){return output(oc,b[1],0,b[2])} - function add_substitute(b,f,s) - {var lim$1=caml_ml_string_length(s),previous=32,i$7=0; - for(;;) - {if(i$7 < lim$1) - {var current=caml_string_get(s,i$7); - if(36 === current) - {if(92 === previous) - {add_char(b,current); - var i$8=i$7 + 1 | 0,previous=32,i$7=i$8; - continue} - var start=i$7 + 1 | 0; - if(lim$1 <= start)throw Not_found; - var opening=caml_string_get(s,start),switch$0=0; - if(40 !== opening && 123 !== opening) - {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6; - for(;;) - {if(lim$0 <= i$3) - var stop=lim$0; - else - {var match=caml_string_get(s,i$3),switch$1=0; - if(91 <= match) - {if(97 <= match) - {if(! (123 <= match))switch$1 = 1} - else - if(95 === match)switch$1 = 1} - else - if(58 <= match) - {if(65 <= match)switch$1 = 1} - else - if(48 <= match)switch$1 = 1; - if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue} - var stop=i$3} - var match$0=[0,sub$0(s,start,stop - start | 0),stop]; - switch$0 = 1; - break}} - if(! switch$0) - {var i$5=start + 1 | 0,k$2=0; - if(40 === opening) - var _uu_=41; - else - {if(123 !== opening)throw [0,Assert_failure,___];var _uu_=125} - var lim=caml_ml_string_length(s),k=k$2,i=i$5; - for(;;) - {if(lim <= i)throw Not_found; - if(caml_string_get(s,i) === opening) - {var i$0=i + 1 | 0,k$0=k + 1 | 0,k=k$0,i=i$0;continue} - if(caml_string_get(s,i) !== _uu_) - {var i$2=i + 1 | 0,i=i$2;continue} - if(0 !== k) - {var i$1=i + 1 | 0,k$1=k - 1 | 0,k=k$1,i=i$1;continue} - var - match$0= - [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0]; - break}} - var next_i=match$0[2],ident=match$0[1]; - add_string(b,caml_call1(f,ident)); - var previous=32,i$7=next_i; - continue} - if(92 === previous) - {add_char(b,92); - add_char(b,current); - var i$9=i$7 + 1 | 0,previous=32,i$7=i$9; - continue} - if(92 === current) - {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue} - add_char(b,current); - var i$11=i$7 + 1 | 0,previous=current,i$7=i$11; - continue} - var _uv_=92 === previous?1:0; - return _uv_?add_char(b,previous):_uv_}} - function truncate(b,len) - {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0} - return invalid_arg(cst_Buffer_truncate)} - function to_seq$8(b) - {function aux(i,param) - {if(b[2] <= i)return 0; - var x=caml_bytes_unsafe_get(b[1],i),_us_=i + 1 | 0; - return [0,x,function(_ut_){return aux(_us_,_ut_)}]} - var _uq_=0; - return function(_ur_){return aux(_uq_,_ur_)}} - function to_seqi$3(b) - {function aux(i,param) - {if(b[2] <= i)return 0; - var x=caml_bytes_unsafe_get(b[1],i),_uo_=i + 1 | 0; - return [0,[0,i,x],function(_up_){return aux(_uo_,_up_)}]} - var _um_=0; - return function(_un_){return aux(_um_,_un_)}} - function add_seq$1(b,seq) - {return iter(function(_ul_){return add_char(b,_ul_)},seq)} - function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b} - function add_int8(b,x) - {var new_position=b[2] + 1 | 0; - if(b[3] < new_position)resize(b,1); - caml_bytes_unsafe_set(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int16_ne(b,x) - {var new_position=b[2] + 2 | 0; - if(b[3] < new_position)resize(b,2); - caml_bytes_set16(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int32_ne(b,x) - {var new_position=b[2] + 4 | 0; - if(b[3] < new_position)resize(b,4); - caml_bytes_set32(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int64_ne(b,x) - {var new_position=b[2] + 8 | 0; - if(b[3] < new_position)resize(b,8); - caml_bytes_set64(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int16_le(b,x){return add_int16_ne(b,x)} - function add_int16_be(b,x) - {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)} - function add_int32_le(b,x){return add_int32_ne(b,x)} - function add_int32_be(b,x) - {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)} - function add_int64_le(b,x){return add_int64_ne(b,x)} - function add_int64_be(b,x) - {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)} - var - Stdlib_Buffer= - [0, - create$2, - contents, - to_bytes$0, - sub$3, - blit$3, - nth$0, - length$3, - clear$1, - reset, - output_buffer, - truncate, - add_char, - add_utf_8_uchar, - add_utf_16le_uchar, - add_utf_16be_uchar, - add_string, - add_bytes, - add_substring, - add_subbytes, - add_substitute, - add_buffer, - add_channel, - to_seq$8, - to_seqi$3, - add_seq$1, - of_seq$6, - add_int8, - add_int8, - add_int16_ne, - add_int16_be, - add_int16_le, - add_int16_ne, - add_int16_be, - add_int16_le, - add_int32_ne, - add_int32_be, - add_int32_le, - add_int64_ne, - add_int64_be, - add_int64_le]; - caml_register_global(790,Stdlib_Buffer,"Stdlib__Buffer"); - function create_char_set(param){return make$0(32,0)} - function add_in_char_set(char_set,c) - {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); - return caml_bytes_set - (char_set, - str_ind, - char_of_int(caml_bytes_get(char_set,str_ind) | mask))} - function freeze_char_set(char_set){return of_bytes(char_set)} - function rev_char_set(char_set) - {var char_set$0=create_char_set(0),i=0; - for(;;) - {caml_bytes_set - (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255)); - var _uk_=i + 1 | 0; - if(31 !== i){var i=_uk_;continue} - return caml_string_of_bytes(char_set$0)}} - function is_in_char_set(char_set,c) - {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); - return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0} - function pad_of_pad_opt(pad_opt) - {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0} - function param_format_of_ignored_format(ign,fmt) - {if(typeof ign === "number") - switch(ign) - {case 0:return [0,[0,fmt]]; - case 1:return [0,[1,fmt]]; - case 2:return [0,[19,fmt]]; - default:return [0,[22,fmt]]} - else - switch(ign[0]) - {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]]; - case 1: - var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]]; - case 2: - var pad_opt$1=ign[2],iconv=ign[1]; - return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]]; - case 3: - var pad_opt$2=ign[2],iconv$0=ign[1]; - return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]]; - case 4: - var pad_opt$3=ign[2],iconv$1=ign[1]; - return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]]; - case 5: - var pad_opt$4=ign[2],iconv$2=ign[1]; - return [0,[7,iconv$2,pad_of_pad_opt(pad_opt$4),0,fmt]]; - case 6: - var prec_opt=ign[2],pad_opt$5=ign[1]; - if(prec_opt)var ndec=prec_opt[1],_uj_=[0,ndec];else var _uj_=0; - return [0,[8,_$_,pad_of_pad_opt(pad_opt$5),_uj_,fmt]]; - case 7: - var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]]; - case 8: - var fmtty=ign[2],pad_opt$7=ign[1]; - return [0,[13,pad_opt$7,fmtty,fmt]]; - case 9: - var fmtty$0=ign[2],pad_opt$8=ign[1]; - return [0,[14,pad_opt$8,fmtty$0,fmt]]; - case 10: - var char_set=ign[2],width_opt=ign[1]; - return [0,[20,width_opt,char_set,fmt]]; - default:var counter=ign[1];return [0,[21,counter,fmt]]}} - function default_float_precision(fconv){return 5 === fconv[2]?12:-6} - function buffer_create(init_size) - {return [0,0,caml_create_bytes(init_size)]} - function buffer_check_size(buf,overhead) - {var - len=caml_ml_bytes_length(buf[2]), - min_len=buf[1] + overhead | 0, - _uh_=len < min_len?1:0; - if(_uh_) - {var - new_len=max$1(len * 2 | 0,min_len), - new_str=caml_create_bytes(new_len); - blit(buf[2],0,new_str,0,len); - buf[2] = new_str; - var _ui_=0} - else - var _ui_=_uh_; - return _ui_} - function buffer_add_char(buf,c) - {buffer_check_size(buf,1); - caml_bytes_set(buf[2],buf[1],c); - buf[1] = buf[1] + 1 | 0; - return 0} - function buffer_add_string(buf,s) - {var str_len=caml_ml_string_length(s); - buffer_check_size(buf,str_len); - blit$0(s,0,buf[2],buf[1],str_len); - buf[1] = buf[1] + str_len | 0; - return 0} - function buffer_contents(buf){return sub_string(buf[2],0,buf[1])} - function char_of_iconv(iconv) - {switch(iconv) - {case 6: - case 7:return 120; - case 8: - case 9:return 88; - case 10: - case 11:return 111; - case 12: - case 15:return 117; - case 0: - case 1: - case 2: - case 13:return 100; - default:return 105}} - function char_of_fconv(opt,fconv) - {if(opt)var sth=opt[1],cF=sth;else var cF=70; - switch(fconv[2]) - {case 0:return 102; - case 1:return 101; - case 2:return 69; - case 3:return 103; - case 4:return 71; - case 5:return cF; - case 6:return 104; - case 7:return 72; - default:return 70}} - function bprint_padty(buf,padty) - {switch(padty) - {case 0:return buffer_add_char(buf,45); - case 1:return 0; - default:return buffer_add_char(buf,48)}} - function bprint_ignored_flag(buf,ign_flag) - {return ign_flag?buffer_add_char(buf,95):ign_flag} - function bprint_pad_opt(buf,pad_opt) - {if(pad_opt) - {var width=pad_opt[1]; - return buffer_add_string(buf,caml_string_of_jsbytes("" + width))} - return 0} - function bprint_padding(buf,pad) - {if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - {var n=pad[2],padty=pad[1]; - bprint_padty(buf,padty); - return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} - var padty$0=pad[1]; - bprint_padty(buf,padty$0); - return buffer_add_char(buf,42)}} - function bprint_precision(buf,prec) - {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0; - var n=prec[1]; - buffer_add_char(buf,46); - return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} - function bprint_iconv_flag(buf,iconv) - {switch(iconv) - {case 1: - case 4:return buffer_add_char(buf,43); - case 2: - case 5:return buffer_add_char(buf,32); - case 7: - case 9: - case 11: - case 13: - case 14: - case 15:return buffer_add_char(buf,35); - default:return 0}} - function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c) - {buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag); - bprint_iconv_flag(buf,iconv); - bprint_padding(buf,pad); - bprint_precision(buf,prec); - buffer_add_char(buf,c); - return buffer_add_char(buf,char_of_iconv(iconv))} - function bprint_fconv_flag(buf,fconv) - {switch(fconv[1]) - {case 0:break; - case 1:buffer_add_char(buf,43);break; - default:buffer_add_char(buf,32)} - return 8 <= fconv[2]?buffer_add_char(buf,35):0} - function string_of_formatting_lit(formatting_lit) - {if(typeof formatting_lit === "number") - switch(formatting_lit) - {case 0:return cst$12; - case 1:return cst$13; - case 2:return cst$14; - case 3:return cst$15; - case 4:return cst$16; - case 5:return cst$17; - default:return cst$18} - else - switch(formatting_lit[0]) - {case 0:var str=formatting_lit[1];return str; - case 1:var str$0=formatting_lit[1];return str$0; - default:var c=formatting_lit[1];return cat(cst$19,make$1(1,c))}} - function bprint_char_literal(buf,chr) - {return 37 === chr?buffer_add_string(buf,cst$20):buffer_add_char(buf,chr)} - function bprint_string_literal(buf,str) - {var _uf_=caml_ml_string_length(str) - 1 | 0,_ue_=0; - if(! (_uf_ < 0)) - {var i=_ue_; - for(;;) - {bprint_char_literal(buf,caml_string_get(str,i)); - var _ug_=i + 1 | 0; - if(_uf_ !== i){var i=_ug_;continue} - break}} - return 0} - function bprint_fmtty(buf,fmtty) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - return 0; - else - switch(fmtty$0[0]) - {case 0: - var rest=fmtty$0[1]; - buffer_add_string(buf,cst_c); - var fmtty$0=rest; - continue; - case 1: - var rest$0=fmtty$0[1]; - buffer_add_string(buf,cst_s); - var fmtty$0=rest$0; - continue; - case 2: - var rest$1=fmtty$0[1]; - buffer_add_string(buf,cst_i); - var fmtty$0=rest$1; - continue; - case 3: - var rest$2=fmtty$0[1]; - buffer_add_string(buf,cst_li); - var fmtty$0=rest$2; - continue; - case 4: - var rest$3=fmtty$0[1]; - buffer_add_string(buf,cst_ni); - var fmtty$0=rest$3; - continue; - case 5: - var rest$4=fmtty$0[1]; - buffer_add_string(buf,cst_Li); - var fmtty$0=rest$4; - continue; - case 6: - var rest$5=fmtty$0[1]; - buffer_add_string(buf,cst_f); - var fmtty$0=rest$5; - continue; - case 7: - var rest$6=fmtty$0[1]; - buffer_add_string(buf,cst_B); - var fmtty$0=rest$6; - continue; - case 8: - var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1]; - buffer_add_string(buf,cst$21); - bprint_fmtty(buf,sub_fmtty); - buffer_add_string(buf,cst$22); - var fmtty$0=rest$7; - continue; - case 9: - var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1]; - buffer_add_string(buf,cst$23); - bprint_fmtty(buf,sub_fmtty$0); - buffer_add_string(buf,cst$24); - var fmtty$0=rest$8; - continue; - case 10: - var rest$9=fmtty$0[1]; - buffer_add_string(buf,cst_a); - var fmtty$0=rest$9; - continue; - case 11: - var rest$10=fmtty$0[1]; - buffer_add_string(buf,cst_t$0); - var fmtty$0=rest$10; - continue; - case 12: - var rest$11=fmtty$0[1]; - buffer_add_string(buf,cst$25); - var fmtty$0=rest$11; - continue; - case 13: - var rest$12=fmtty$0[1]; - buffer_add_string(buf,cst_r$0); - var fmtty$0=rest$12; - continue; - default: - var rest$13=fmtty$0[1]; - buffer_add_string(buf,cst_r$1); - var fmtty$0=rest$13; - continue}} - function int_of_custom_arity(param) - {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0} - function string_of_fmt(fmt) - {var buf=buffer_create(16); - function fmtiter(fmt,ign_flag) - {var fmt$0=fmt,ign_flag$0=ign_flag; - a: - for(;;) - if(typeof fmt$0 === "number") - return 0; - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,99); - var fmt$0=rest,ign_flag$0=0; - continue; - case 1: - var rest$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,67); - var fmt$0=rest$0,ign_flag$0=0; - continue; - case 2: - var rest$1=fmt$0[2],pad=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad); - buffer_add_char(buf,115); - var fmt$0=rest$1,ign_flag$0=0; - continue; - case 3: - var rest$2=fmt$0[2],pad$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad$0); - buffer_add_char(buf,83); - var fmt$0=rest$2,ign_flag$0=0; - continue; - case 4: - var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_iconv_flag(buf,iconv); - bprint_padding(buf,pad$1); - bprint_precision(buf,prec); - buffer_add_char(buf,char_of_iconv(iconv)); - var fmt$0=rest$3,ign_flag$0=0; - continue; - case 5: - var - rest$4=fmt$0[4], - prec$0=fmt$0[3], - pad$2=fmt$0[2], - iconv$0=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$0,pad$2,prec$0,108); - var fmt$0=rest$4,ign_flag$0=0; - continue; - case 6: - var - rest$5=fmt$0[4], - prec$1=fmt$0[3], - pad$3=fmt$0[2], - iconv$1=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$1,pad$3,prec$1,110); - var fmt$0=rest$5,ign_flag$0=0; - continue; - case 7: - var - rest$6=fmt$0[4], - prec$2=fmt$0[3], - pad$4=fmt$0[2], - iconv$2=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$2,pad$4,prec$2,76); - var fmt$0=rest$6,ign_flag$0=0; - continue; - case 8: - var - rest$7=fmt$0[4], - prec$3=fmt$0[3], - pad$5=fmt$0[2], - fconv=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_fconv_flag(buf,fconv); - bprint_padding(buf,pad$5); - bprint_precision(buf,prec$3); - buffer_add_char(buf,char_of_fconv(0,fconv)); - var fmt$0=rest$7,ign_flag$0=0; - continue; - case 9: - var rest$8=fmt$0[2],pad$6=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad$6); - buffer_add_char(buf,66); - var fmt$0=rest$8,ign_flag$0=0; - continue; - case 10: - var rest$9=fmt$0[1]; - buffer_add_string(buf,cst$26); - var fmt$0=rest$9; - continue; - case 11: - var rest$10=fmt$0[2],str=fmt$0[1]; - bprint_string_literal(buf,str); - var fmt$0=rest$10; - continue; - case 12: - var rest$11=fmt$0[2],chr$0=fmt$0[1]; - bprint_char_literal(buf,chr$0); - var fmt$0=rest$11; - continue; - case 13: - var rest$12=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,pad_opt); - buffer_add_char(buf,123); - bprint_fmtty(buf,fmtty); - buffer_add_char(buf,37); - buffer_add_char(buf,125); - var fmt$0=rest$12,ign_flag$0=0; - continue; - case 14: - var rest$13=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,pad_opt$0); - buffer_add_char(buf,40); - bprint_fmtty(buf,fmtty$0); - buffer_add_char(buf,37); - buffer_add_char(buf,41); - var fmt$0=rest$13,ign_flag$0=0; - continue; - case 15: - var rest$14=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,97); - var fmt$0=rest$14,ign_flag$0=0; - continue; - case 16: - var rest$15=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,116); - var fmt$0=rest$15,ign_flag$0=0; - continue; - case 17: - var rest$16=fmt$0[2],fmting_lit=fmt$0[1]; - bprint_string_literal(buf,string_of_formatting_lit(fmting_lit)); - var fmt$0=rest$16; - continue; - case 18: - var rest$17=fmt$0[2],fmting_gen=fmt$0[1]; - if(0 === fmting_gen[0]) - {var match$1=fmting_gen[1],str$0=match$1[2]; - buffer_add_string(buf,cst$27); - buffer_add_string(buf,str$0)} - else - {var match$2=fmting_gen[1],str$1=match$2[2]; - buffer_add_string(buf,cst$28); - buffer_add_string(buf,str$1)} - var fmt$0=rest$17; - continue; - case 19: - var rest$18=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,114); - var fmt$0=rest$18,ign_flag$0=0; - continue; - case 20: - var rest$19=fmt$0[3],char_set=fmt$0[2],width_opt=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,width_opt); - var - print_char= - function(buf,i) - {var c=char_of_int(i); - return 37 === c - ?(buffer_add_char(buf,37),buffer_add_char(buf,37)) - :64 === c - ?(buffer_add_char(buf,37),buffer_add_char(buf,64)) - :buffer_add_char(buf,c)}; - buffer_add_char(buf,91); - var - _t6_= - is_in_char_set(char_set,0) - ?(buffer_add_char(buf,94),rev_char_set(char_set)) - :char_set, - is_alone$0= - function(_t$_) - {function is_alone(c) - {var - after=chr(c + 1 | 0), - before=chr(c - 1 | 0), - _ua_=is_in_char_set(_t$_,c); - if(_ua_) - var - _ub_=is_in_char_set(_t$_,before), - _uc_=_ub_?is_in_char_set(_t$_,after):_ub_, - _ud_=1 - _uc_; - else - var _ud_=_ua_; - return _ud_} - return is_alone}, - is_alone=is_alone$0(_t6_); - if(is_alone(93))buffer_add_char(buf,93); - var i=1; - b: - for(;;) - {if(i < 256) - {if(! is_in_char_set(_t6_,char_of_int(i))) - {var i$0=i + 1 | 0,i=i$0;continue} - var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0; - if(48 < switcher >>> 0) - if(210 <= switcher)print_char(buf,255);else switch$0 = 1; - else - {if(46 < switcher - 1 >>> 0) - {var i$2=i + 1 | 0,i=i$2;continue} - switch$0 = 1} - if(switch$0) - {var i$1=i + 1 | 0; - if(! is_in_char_set(_t6_,char_of_int(i$1))) - {print_char(buf,i$1 - 1 | 0); - var i$6=i$1 + 1 | 0,i=i$6; - continue} - var - match$0=char_of_int(i$1), - switcher$0=match$0 - 45 | 0, - switch$1=0; - if(48 < switcher$0 >>> 0) - if(210 <= switcher$0) - {print_char(buf,254);print_char(buf,255)} - else - switch$1 = 1; - else - if(46 < switcher$0 - 1 >>> 0) - {if(! is_in_char_set(_t6_,char_of_int(i$1 + 1 | 0))) - {print_char(buf,i$1 - 1 | 0); - var i$5=i$1 + 1 | 0,i=i$5; - continue} - switch$1 = 1} - else - switch$1 = 1; - if(switch$1) - {if(! is_in_char_set(_t6_,char_of_int(i$1 + 1 | 0))) - {print_char(buf,i$1 - 1 | 0); - print_char(buf,i$1); - var i$4=i$1 + 2 | 0,i=i$4; - continue} - var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j; - for(;;) - {if(256 !== j$0 && is_in_char_set(_t6_,char_of_int(j$0))) - {var j$1=j$0 + 1 | 0,j$0=j$1;continue} - print_char(buf,i$3); - print_char(buf,45); - print_char(buf,j$0 - 1 | 0); - if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b} - break}}}} - if(is_alone(45))buffer_add_char(buf,45); - buffer_add_char(buf,93); - var fmt$0=rest$19,ign_flag$0=0; - continue a} - case 21: - var rest$20=fmt$0[2],counter=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - switch(counter) - {case 0:var _t7_=108;break; - case 1:var _t7_=110;break; - default:var _t7_=78} - buffer_add_char(buf,_t7_); - var fmt$0=rest$20,ign_flag$0=0; - continue; - case 22: - var rest$21=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_string_literal(buf,cst_0c); - var fmt$0=rest$21,ign_flag$0=0; - continue; - case 23: - var - rest$22=fmt$0[2], - ign=fmt$0[1], - match$3=param_format_of_ignored_format(ign,rest$22), - fmt$1=match$3[1], - fmt$0=fmt$1, - ign_flag$0=1; - continue; - default: - var - rest$23=fmt$0[3], - arity=fmt$0[1], - _t9_=int_of_custom_arity(arity), - _t8_=1; - if(! (_t9_ < 1)) - {var i$8=_t8_; - for(;;) - {buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,63); - var _t__=i$8 + 1 | 0; - if(_t9_ !== i$8){var i$8=_t__;continue} - break}} - var fmt$0=rest$23,ign_flag$0=0; - continue}} - fmtiter(fmt,0); - return buffer_contents(buf)} - function symm(param) - {if(typeof param === "number") - return 0; - else - switch(param[0]) - {case 0:var rest=param[1];return [0,symm(rest)]; - case 1:var rest$0=param[1];return [1,symm(rest$0)]; - case 2:var rest$1=param[1];return [2,symm(rest$1)]; - case 3:var rest$2=param[1];return [3,symm(rest$2)]; - case 4:var rest$3=param[1];return [4,symm(rest$3)]; - case 5:var rest$4=param[1];return [5,symm(rest$4)]; - case 6:var rest$5=param[1];return [6,symm(rest$5)]; - case 7:var rest$6=param[1];return [7,symm(rest$6)]; - case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)]; - case 9: - var rest$8=param[3],ty2=param[2],ty1=param[1]; - return [9,ty2,ty1,symm(rest$8)]; - case 10:var rest$9=param[1];return [10,symm(rest$9)]; - case 11:var rest$10=param[1];return [11,symm(rest$10)]; - case 12:var rest$11=param[1];return [12,symm(rest$11)]; - case 13:var rest$12=param[1];return [13,symm(rest$12)]; - default:var rest$13=param[1];return [14,symm(rest$13)]}} - function trans(ty1,ty2) - {var switch$0=0; - if(typeof ty1 === "number") - if(typeof ty2 === "number") - return 0; - else - switch(ty2[0]) - {case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - default:throw [0,Assert_failure,_aa_]} - else - switch(ty1[0]) - {case 0: - var switch$1=0,_tN_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 0:var rest2=ty2[1];return [0,trans(_tN_,rest2)]; - case 8:switch$0 = 5;switch$1 = 1;break; - case 9:switch$0 = 6;switch$1 = 1;break; - case 10:switch$1 = 1;break; - case 11:switch$0 = 1;switch$1 = 1;break; - case 12:switch$0 = 2;switch$1 = 1;break; - case 13:switch$0 = 3;switch$1 = 1;break; - case 14:switch$0 = 4;switch$1 = 1;break - } - if(! switch$1)switch$0 = 7; - break; - case 1: - var switch$2=0,_tO_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 1:var rest2$0=ty2[1];return [1,trans(_tO_,rest2$0)]; - case 8:switch$0 = 5;switch$2 = 1;break; - case 9:switch$0 = 6;switch$2 = 1;break; - case 10:switch$2 = 1;break; - case 11:switch$0 = 1;switch$2 = 1;break; - case 12:switch$0 = 2;switch$2 = 1;break; - case 13:switch$0 = 3;switch$2 = 1;break; - case 14:switch$0 = 4;switch$2 = 1;break - } - if(! switch$2)switch$0 = 7; - break; - case 2: - var switch$3=0,_tP_=ty1[1]; - if(typeof ty2 === "number") - switch$3 = 1; - else - switch(ty2[0]) - {case 2:var rest2$1=ty2[1];return [2,trans(_tP_,rest2$1)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$3 = 1} - if(switch$3)switch$0 = 7; - break; - case 3: - var switch$4=0,_tQ_=ty1[1]; - if(typeof ty2 === "number") - switch$4 = 1; - else - switch(ty2[0]) - {case 3:var rest2$2=ty2[1];return [3,trans(_tQ_,rest2$2)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$4 = 1} - if(switch$4)switch$0 = 7; - break; - case 4: - var switch$5=0,_tR_=ty1[1]; - if(typeof ty2 === "number") - switch$5 = 1; - else - switch(ty2[0]) - {case 4:var rest2$3=ty2[1];return [4,trans(_tR_,rest2$3)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$5 = 1} - if(switch$5)switch$0 = 7; - break; - case 5: - var switch$6=0,_tS_=ty1[1]; - if(typeof ty2 === "number") - switch$6 = 1; - else - switch(ty2[0]) - {case 5:var rest2$4=ty2[1];return [5,trans(_tS_,rest2$4)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$6 = 1} - if(switch$6)switch$0 = 7; - break; - case 6: - var switch$7=0,_tT_=ty1[1]; - if(typeof ty2 === "number") - switch$7 = 1; - else - switch(ty2[0]) - {case 6:var rest2$5=ty2[1];return [6,trans(_tT_,rest2$5)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$7 = 1} - if(switch$7)switch$0 = 7; - break; - case 7: - var switch$8=0,_tU_=ty1[1]; - if(typeof ty2 === "number") - switch$8 = 1; - else - switch(ty2[0]) - {case 7:var rest2$6=ty2[1];return [7,trans(_tU_,rest2$6)]; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$8 = 1} - if(switch$8)switch$0 = 7; - break; - case 8: - var switch$9=0,_tV_=ty1[2],_tW_=ty1[1]; - if(typeof ty2 === "number") - switch$9 = 1; - else - switch(ty2[0]) - {case 8: - var rest2$7=ty2[2],ty2$0=ty2[1],_tX_=trans(_tV_,rest2$7); - return [8,trans(_tW_,ty2$0),_tX_]; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$9 = 1} - if(switch$9)throw [0,Assert_failure,_aj_]; - break; - case 9: - var switch$10=0,_tY_=ty1[3],_tZ_=ty1[2],_t0_=ty1[1]; - if(typeof ty2 === "number") - switch$10 = 1; - else - switch(ty2[0]) - {case 8:switch$0 = 5;break; - case 9: - var - rest2$8=ty2[3], - ty22=ty2[2], - ty21=ty2[1], - ty=trans(symm(_tZ_),ty21), - match=fmtty_rel_det(ty), - f4=match[4], - f2=match[2]; - caml_call1(f2,0); - caml_call1(f4,0); - return [9,_t0_,ty22,trans(_tY_,rest2$8)]; - case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:switch$0 = 4;break; - default:switch$10 = 1} - if(switch$10)throw [0,Assert_failure,_ak_]; - break; - case 10: - var _t1_=ty1[1]; - if(typeof ty2 !== "number" && 10 === ty2[0]) - {var rest2$9=ty2[1];return [10,trans(_t1_,rest2$9)]} - throw [0,Assert_failure,_al_]; - case 11: - var switch$11=0,_t2_=ty1[1]; - if(typeof ty2 === "number") - switch$11 = 1; - else - switch(ty2[0]) - {case 10:break; - case 11:var rest2$10=ty2[1];return [11,trans(_t2_,rest2$10)]; - default:switch$11 = 1} - if(switch$11)throw [0,Assert_failure,_am_]; - break; - case 12: - var switch$12=0,_t3_=ty1[1]; - if(typeof ty2 === "number") - switch$12 = 1; - else - switch(ty2[0]) - {case 10:break; - case 11:switch$0 = 1;break; - case 12:var rest2$11=ty2[1];return [12,trans(_t3_,rest2$11)]; - default:switch$12 = 1} - if(switch$12)throw [0,Assert_failure,_an_]; - break; - case 13: - var switch$13=0,_t4_=ty1[1]; - if(typeof ty2 === "number") - switch$13 = 1; - else - switch(ty2[0]) - {case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:var rest2$12=ty2[1];return [13,trans(_t4_,rest2$12)]; - default:switch$13 = 1} - if(switch$13)throw [0,Assert_failure,_ao_]; - break; - default: - var switch$14=0,_t5_=ty1[1]; - if(typeof ty2 === "number") - switch$14 = 1; - else - switch(ty2[0]) - {case 10:break; - case 11:switch$0 = 1;break; - case 12:switch$0 = 2;break; - case 13:switch$0 = 3;break; - case 14:var rest2$13=ty2[1];return [14,trans(_t5_,rest2$13)]; - default:switch$14 = 1} - if(switch$14)throw [0,Assert_failure,_ap_]} - switch(switch$0) - {case 0:throw [0,Assert_failure,_ad_]; - case 1:throw [0,Assert_failure,_ae_]; - case 2:throw [0,Assert_failure,_af_]; - case 3:throw [0,Assert_failure,_ag_]; - case 4:throw [0,Assert_failure,_ah_]; - case 5:throw [0,Assert_failure,_ab_]; - case 6:throw [0,Assert_failure,_ac_]; - default:throw [0,Assert_failure,_ai_]}} - function fmtty_rel_det(param) - {if(typeof param === "number") - {var - _tp_=function(param){return 0}, - _tq_=function(param){return 0}, - _tr_=function(param){return 0}; - return [0,function(param){return 0},_tr_,_tq_,_tp_]} - else - switch(param[0]) - {case 0: - var - rest=param[1], - match=fmtty_rel_det(rest), - de=match[4], - ed=match[3], - af=match[2], - fa=match[1], - _ts_=function(param){caml_call1(af,0);return 0}; - return [0,function(param){caml_call1(fa,0);return 0},_ts_,ed,de]; - case 1: - var - rest$0=param[1], - match$0=fmtty_rel_det(rest$0), - de$0=match$0[4], - ed$0=match$0[3], - af$0=match$0[2], - fa$0=match$0[1], - _tt_=function(param){caml_call1(af$0,0);return 0}; - return [0, - function(param){caml_call1(fa$0,0);return 0}, - _tt_, - ed$0, - de$0]; - case 2: - var - rest$1=param[1], - match$1=fmtty_rel_det(rest$1), - de$1=match$1[4], - ed$1=match$1[3], - af$1=match$1[2], - fa$1=match$1[1], - _tu_=function(param){caml_call1(af$1,0);return 0}; - return [0, - function(param){caml_call1(fa$1,0);return 0}, - _tu_, - ed$1, - de$1]; - case 3: - var - rest$2=param[1], - match$2=fmtty_rel_det(rest$2), - de$2=match$2[4], - ed$2=match$2[3], - af$2=match$2[2], - fa$2=match$2[1], - _tv_=function(param){caml_call1(af$2,0);return 0}; - return [0, - function(param){caml_call1(fa$2,0);return 0}, - _tv_, - ed$2, - de$2]; - case 4: - var - rest$3=param[1], - match$3=fmtty_rel_det(rest$3), - de$3=match$3[4], - ed$3=match$3[3], - af$3=match$3[2], - fa$3=match$3[1], - _tw_=function(param){caml_call1(af$3,0);return 0}; - return [0, - function(param){caml_call1(fa$3,0);return 0}, - _tw_, - ed$3, - de$3]; - case 5: - var - rest$4=param[1], - match$4=fmtty_rel_det(rest$4), - de$4=match$4[4], - ed$4=match$4[3], - af$4=match$4[2], - fa$4=match$4[1], - _tx_=function(param){caml_call1(af$4,0);return 0}; - return [0, - function(param){caml_call1(fa$4,0);return 0}, - _tx_, - ed$4, - de$4]; - case 6: - var - rest$5=param[1], - match$5=fmtty_rel_det(rest$5), - de$5=match$5[4], - ed$5=match$5[3], - af$5=match$5[2], - fa$5=match$5[1], - _ty_=function(param){caml_call1(af$5,0);return 0}; - return [0, - function(param){caml_call1(fa$5,0);return 0}, - _ty_, - ed$5, - de$5]; - case 7: - var - rest$6=param[1], - match$6=fmtty_rel_det(rest$6), - de$6=match$6[4], - ed$6=match$6[3], - af$6=match$6[2], - fa$6=match$6[1], - _tz_=function(param){caml_call1(af$6,0);return 0}; - return [0, - function(param){caml_call1(fa$6,0);return 0}, - _tz_, - ed$6, - de$6]; - case 8: - var - rest$7=param[2], - match$7=fmtty_rel_det(rest$7), - de$7=match$7[4], - ed$7=match$7[3], - af$7=match$7[2], - fa$7=match$7[1], - _tA_=function(param){caml_call1(af$7,0);return 0}; - return [0, - function(param){caml_call1(fa$7,0);return 0}, - _tA_, - ed$7, - de$7]; - case 9: - var - rest$8=param[3], - ty2=param[2], - ty1=param[1], - match$8=fmtty_rel_det(rest$8), - de$8=match$8[4], - ed$8=match$8[3], - af$8=match$8[2], - fa$8=match$8[1], - ty=trans(symm(ty1),ty2), - match$9=fmtty_rel_det(ty), - jd=match$9[4], - dj=match$9[3], - ga=match$9[2], - ag=match$9[1], - _tB_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, - _tC_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, - _tD_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; - return [0, - function(param) - {caml_call1(fa$8,0);caml_call1(ag,0);return 0}, - _tD_, - _tC_, - _tB_]; - case 10: - var - rest$9=param[1], - match$10=fmtty_rel_det(rest$9), - de$9=match$10[4], - ed$9=match$10[3], - af$9=match$10[2], - fa$9=match$10[1], - _tE_=function(param){caml_call1(af$9,0);return 0}; - return [0, - function(param){caml_call1(fa$9,0);return 0}, - _tE_, - ed$9, - de$9]; - case 11: - var - rest$10=param[1], - match$11=fmtty_rel_det(rest$10), - de$10=match$11[4], - ed$10=match$11[3], - af$10=match$11[2], - fa$10=match$11[1], - _tF_=function(param){caml_call1(af$10,0);return 0}; - return [0, - function(param){caml_call1(fa$10,0);return 0}, - _tF_, - ed$10, - de$10]; - case 12: - var - rest$11=param[1], - match$12=fmtty_rel_det(rest$11), - de$11=match$12[4], - ed$11=match$12[3], - af$11=match$12[2], - fa$11=match$12[1], - _tG_=function(param){caml_call1(af$11,0);return 0}; - return [0, - function(param){caml_call1(fa$11,0);return 0}, - _tG_, - ed$11, - de$11]; - case 13: - var - rest$12=param[1], - match$13=fmtty_rel_det(rest$12), - de$12=match$13[4], - ed$12=match$13[3], - af$12=match$13[2], - fa$12=match$13[1], - _tH_=function(param){caml_call1(de$12,0);return 0}, - _tI_=function(param){caml_call1(ed$12,0);return 0}, - _tJ_=function(param){caml_call1(af$12,0);return 0}; - return [0, - function(param){caml_call1(fa$12,0);return 0}, - _tJ_, - _tI_, - _tH_]; - default: - var - rest$13=param[1], - match$14=fmtty_rel_det(rest$13), - de$13=match$14[4], - ed$13=match$14[3], - af$13=match$14[2], - fa$13=match$14[1], - _tK_=function(param){caml_call1(de$13,0);return 0}, - _tL_=function(param){caml_call1(ed$13,0);return 0}, - _tM_=function(param){caml_call1(af$13,0);return 0}; - return [0, - function(param){caml_call1(fa$13,0);return 0}, - _tM_, - _tL_, - _tK_]}} - function fmtty_of_precision_fmtty(prec,fmtty) - {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} - function fmtty_of_padding_fmtty(pad,fmtty) - {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} - function fmtty_of_custom(arity,fmtty) - {if(arity) - {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]} - return fmtty} - function fmtty_of_fmt(fmtty) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - return 0; - else - switch(fmtty$0[0]) - {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)]; - case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)]; - case 2: - var rest$1=fmtty$0[2],pad=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]); - case 3: - var rest$2=fmtty$0[2],pad$0=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]); - case 4: - var - rest$3=fmtty$0[4], - prec=fmtty$0[3], - pad$1=fmtty$0[2], - ty_rest=fmtty_of_fmt(rest$3), - prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]); - return fmtty_of_padding_fmtty(pad$1,prec_ty); - case 5: - var - rest$4=fmtty$0[4], - prec$0=fmtty$0[3], - pad$2=fmtty$0[2], - ty_rest$0=fmtty_of_fmt(rest$4), - prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]); - return fmtty_of_padding_fmtty(pad$2,prec_ty$0); - case 6: - var - rest$5=fmtty$0[4], - prec$1=fmtty$0[3], - pad$3=fmtty$0[2], - ty_rest$1=fmtty_of_fmt(rest$5), - prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]); - return fmtty_of_padding_fmtty(pad$3,prec_ty$1); - case 7: - var - rest$6=fmtty$0[4], - prec$2=fmtty$0[3], - pad$4=fmtty$0[2], - ty_rest$2=fmtty_of_fmt(rest$6), - prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]); - return fmtty_of_padding_fmtty(pad$4,prec_ty$2); - case 8: - var - rest$7=fmtty$0[4], - prec$3=fmtty$0[3], - pad$5=fmtty$0[2], - ty_rest$3=fmtty_of_fmt(rest$7), - prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]); - return fmtty_of_padding_fmtty(pad$5,prec_ty$3); - case 9: - var rest$8=fmtty$0[2],pad$6=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]); - case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; - case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue; - case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue; - case 13: - var rest$9=fmtty$0[3],ty=fmtty$0[2]; - return [8,ty,fmtty_of_fmt(rest$9)]; - case 14: - var rest$10=fmtty$0[3],ty$0=fmtty$0[2]; - return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)]; - case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)]; - case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)]; - case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue; - case 18: - var - rest$13=fmtty$0[2], - fmting_gen=fmtty$0[1], - _tn_=fmtty_of_fmt(rest$13); - if(0 === fmting_gen[0]) - var match=fmting_gen[1],fmt=match[1],_to_=fmtty_of_fmt(fmt); - else - var - match$0=fmting_gen[1], - fmt$0=match$0[1], - _to_=fmtty_of_fmt(fmt$0); - return concat_fmtty(_to_,_tn_); - case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)]; - case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)]; - case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)]; - case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)]; - case 23: - var rest$18=fmtty$0[2],ign=fmtty$0[1]; - if(typeof ign === "number") - switch(ign) - {case 0:var fmtty$0=rest$18;continue; - case 1:var fmtty$0=rest$18;continue; - case 2:return [14,fmtty_of_fmt(rest$18)]; - default:var fmtty$0=rest$18;continue} - else - switch(ign[0]) - {case 0:var fmtty$0=rest$18;continue; - case 1:var fmtty$0=rest$18;continue; - case 2:var fmtty$0=rest$18;continue; - case 3:var fmtty$0=rest$18;continue; - case 4:var fmtty$0=rest$18;continue; - case 5:var fmtty$0=rest$18;continue; - case 6:var fmtty$0=rest$18;continue; - case 7:var fmtty$0=rest$18;continue; - case 8:var fmtty$0=rest$18;continue; - case 9: - var fmtty$5=ign[2]; - return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18)); - case 10:var fmtty$0=rest$18;continue; - default:var fmtty$0=rest$18;continue} - default: - var rest$19=fmtty$0[3],arity=fmtty$0[1]; - return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}} - var - Type_mismatch= - [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)]; - function type_padding(pad,fmtty) - {if(typeof pad === "number") - return [0,0,fmtty]; - else - {if(0 === pad[0]) - {var w=pad[2],padty=pad[1];return [0,[0,padty,w],fmtty]} - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var rest=fmtty[1],padty$0=pad[1];return [0,[1,padty$0],rest]} - throw Type_mismatch}} - function type_padprec(pad,prec,fmtty) - {var match=type_padding(pad,fmtty); - if(typeof prec === "number") - {if(prec) - {var _tm_=match[2]; - if(typeof _tm_ !== "number" && 2 === _tm_[0]) - {var rest=_tm_[1],pad$0=match[1];return [0,pad$0,1,rest]} - throw Type_mismatch} - var rest$0=match[2],pad$1=match[1]; - return [0,pad$1,0,rest$0]} - var rest$1=match[2],pad$2=match[1],p=prec[1]; - return [0,pad$2,[0,p],rest$1]} - function type_ignored_format_substituti(sub_fmtty,fmt,fmtty) - {if(typeof sub_fmtty === "number") - return [0,0,type_format_gen(fmt,fmtty)]; - else - switch(sub_fmtty[0]) - {case 0: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest=fmtty[1], - sub_fmtty_rest=sub_fmtty[1], - match= - type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest), - fmt$0=match[2], - sub_fmtty_rest$0=match[1]; - return [0,[0,sub_fmtty_rest$0],fmt$0]} - break; - case 1: - if(typeof fmtty !== "number" && 1 === fmtty[0]) - {var - fmtty_rest$0=fmtty[1], - sub_fmtty_rest$1=sub_fmtty[1], - match$0= - type_ignored_format_substituti - (sub_fmtty_rest$1,fmt,fmtty_rest$0), - fmt$1=match$0[2], - sub_fmtty_rest$2=match$0[1]; - return [0,[1,sub_fmtty_rest$2],fmt$1]} - break; - case 2: - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var - fmtty_rest$1=fmtty[1], - sub_fmtty_rest$3=sub_fmtty[1], - match$1= - type_ignored_format_substituti - (sub_fmtty_rest$3,fmt,fmtty_rest$1), - fmt$2=match$1[2], - sub_fmtty_rest$4=match$1[1]; - return [0,[2,sub_fmtty_rest$4],fmt$2]} - break; - case 3: - if(typeof fmtty !== "number" && 3 === fmtty[0]) - {var - fmtty_rest$2=fmtty[1], - sub_fmtty_rest$5=sub_fmtty[1], - match$2= - type_ignored_format_substituti - (sub_fmtty_rest$5,fmt,fmtty_rest$2), - fmt$3=match$2[2], - sub_fmtty_rest$6=match$2[1]; - return [0,[3,sub_fmtty_rest$6],fmt$3]} - break; - case 4: - if(typeof fmtty !== "number" && 4 === fmtty[0]) - {var - fmtty_rest$3=fmtty[1], - sub_fmtty_rest$7=sub_fmtty[1], - match$3= - type_ignored_format_substituti - (sub_fmtty_rest$7,fmt,fmtty_rest$3), - fmt$4=match$3[2], - sub_fmtty_rest$8=match$3[1]; - return [0,[4,sub_fmtty_rest$8],fmt$4]} - break; - case 5: - if(typeof fmtty !== "number" && 5 === fmtty[0]) - {var - fmtty_rest$4=fmtty[1], - sub_fmtty_rest$9=sub_fmtty[1], - match$4= - type_ignored_format_substituti - (sub_fmtty_rest$9,fmt,fmtty_rest$4), - fmt$5=match$4[2], - sub_fmtty_rest$10=match$4[1]; - return [0,[5,sub_fmtty_rest$10],fmt$5]} - break; - case 6: - if(typeof fmtty !== "number" && 6 === fmtty[0]) - {var - fmtty_rest$5=fmtty[1], - sub_fmtty_rest$11=sub_fmtty[1], - match$5= - type_ignored_format_substituti - (sub_fmtty_rest$11,fmt,fmtty_rest$5), - fmt$6=match$5[2], - sub_fmtty_rest$12=match$5[1]; - return [0,[6,sub_fmtty_rest$12],fmt$6]} - break; - case 7: - if(typeof fmtty !== "number" && 7 === fmtty[0]) - {var - fmtty_rest$6=fmtty[1], - sub_fmtty_rest$13=sub_fmtty[1], - match$6= - type_ignored_format_substituti - (sub_fmtty_rest$13,fmt,fmtty_rest$6), - fmt$7=match$6[2], - sub_fmtty_rest$14=match$6[1]; - return [0,[7,sub_fmtty_rest$14],fmt$7]} - break; - case 8: - if(typeof fmtty !== "number" && 8 === fmtty[0]) - {var - fmtty_rest$7=fmtty[2], - sub2_fmtty=fmtty[1], - sub_fmtty_rest$15=sub_fmtty[2], - sub2_fmtty$0=sub_fmtty[1]; - if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty])) - throw Type_mismatch; - var - match$7= - type_ignored_format_substituti - (sub_fmtty_rest$15,fmt,fmtty_rest$7), - fmt$8=match$7[2], - sub_fmtty_rest$16=match$7[1]; - return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]} - break; - case 9: - if(typeof fmtty !== "number" && 9 === fmtty[0]) - {var - fmtty_rest$8=fmtty[3], - sub2_fmtty$1=fmtty[2], - sub1_fmtty=fmtty[1], - sub_fmtty_rest$17=sub_fmtty[3], - sub2_fmtty$2=sub_fmtty[2], - sub1_fmtty$0=sub_fmtty[1], - _tk_=[0,erase_rel(sub1_fmtty)]; - if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_tk_)) - throw Type_mismatch; - var _tl_=[0,erase_rel(sub2_fmtty$1)]; - if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_tl_)) - throw Type_mismatch; - var - sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1), - match$8=fmtty_rel_det(sub_fmtty$0), - f4=match$8[4], - f2=match$8[2]; - caml_call1(f2,0); - caml_call1(f4,0); - var - match$9= - type_ignored_format_substituti - (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8), - fmt$9=match$9[2], - sub_fmtty_rest$18=match$9[1]; - return [0, - [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)], - fmt$9]} - break; - case 10: - if(typeof fmtty !== "number" && 10 === fmtty[0]) - {var - fmtty_rest$9=fmtty[1], - sub_fmtty_rest$19=sub_fmtty[1], - match$10= - type_ignored_format_substituti - (sub_fmtty_rest$19,fmt,fmtty_rest$9), - fmt$10=match$10[2], - sub_fmtty_rest$20=match$10[1]; - return [0,[10,sub_fmtty_rest$20],fmt$10]} - break; - case 11: - if(typeof fmtty !== "number" && 11 === fmtty[0]) - {var - fmtty_rest$10=fmtty[1], - sub_fmtty_rest$21=sub_fmtty[1], - match$11= - type_ignored_format_substituti - (sub_fmtty_rest$21,fmt,fmtty_rest$10), - fmt$11=match$11[2], - sub_fmtty_rest$22=match$11[1]; - return [0,[11,sub_fmtty_rest$22],fmt$11]} - break; - case 13: - if(typeof fmtty !== "number" && 13 === fmtty[0]) - {var - fmtty_rest$11=fmtty[1], - sub_fmtty_rest$23=sub_fmtty[1], - match$12= - type_ignored_format_substituti - (sub_fmtty_rest$23,fmt,fmtty_rest$11), - fmt$12=match$12[2], - sub_fmtty_rest$24=match$12[1]; - return [0,[13,sub_fmtty_rest$24],fmt$12]} - break; - case 14: - if(typeof fmtty !== "number" && 14 === fmtty[0]) - {var - fmtty_rest$12=fmtty[1], - sub_fmtty_rest$25=sub_fmtty[1], - match$13= - type_ignored_format_substituti - (sub_fmtty_rest$25,fmt,fmtty_rest$12), - fmt$13=match$13[2], - sub_fmtty_rest$26=match$13[1]; - return [0,[14,sub_fmtty_rest$26],fmt$13]} - break - } - throw Type_mismatch} - function type_format_gen(fmt,fmtty) - {if(typeof fmt === "number") - return [0,0,fmtty]; - else - switch(fmt[0]) - {case 0: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest=fmtty[1], - fmt_rest=fmt[1], - match=type_format_gen(fmt_rest,fmtty_rest), - fmtty$0=match[2], - fmt$0=match[1]; - return [0,[0,fmt$0],fmtty$0]} - break; - case 1: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest$0=fmtty[1], - fmt_rest$0=fmt[1], - match$0=type_format_gen(fmt_rest$0,fmtty_rest$0), - fmtty$1=match$0[2], - fmt$1=match$0[1]; - return [0,[1,fmt$1],fmtty$1]} - break; - case 2: - var - fmt_rest$1=fmt[2], - pad=fmt[1], - match$1=type_padding(pad,fmtty), - _s5_=match$1[2], - _s4_=match$1[1]; - if(typeof _s5_ !== "number" && 1 === _s5_[0]) - {var - fmtty_rest$1=_s5_[1], - match$2=type_format_gen(fmt_rest$1,fmtty_rest$1), - fmtty$2=match$2[2], - fmt$2=match$2[1]; - return [0,[2,_s4_,fmt$2],fmtty$2]} - throw Type_mismatch; - case 3: - var - fmt_rest$2=fmt[2], - pad$0=fmt[1], - match$3=type_padding(pad$0,fmtty), - _s7_=match$3[2], - _s6_=match$3[1]; - if(typeof _s7_ !== "number" && 1 === _s7_[0]) - {var - fmtty_rest$2=_s7_[1], - match$4=type_format_gen(fmt_rest$2,fmtty_rest$2), - fmtty$3=match$4[2], - fmt$3=match$4[1]; - return [0,[3,_s6_,fmt$3],fmtty$3]} - throw Type_mismatch; - case 4: - var - fmt_rest$3=fmt[4], - prec=fmt[3], - pad$1=fmt[2], - iconv=fmt[1], - match$5=type_padprec(pad$1,prec,fmtty), - _s9_=match$5[3], - _s8_=match$5[1]; - if(typeof _s9_ !== "number" && 2 === _s9_[0]) - {var - fmtty_rest$3=_s9_[1], - prec$0=match$5[2], - match$6=type_format_gen(fmt_rest$3,fmtty_rest$3), - fmtty$4=match$6[2], - fmt$4=match$6[1]; - return [0,[4,iconv,_s8_,prec$0,fmt$4],fmtty$4]} - throw Type_mismatch; - case 5: - var - fmt_rest$4=fmt[4], - prec$1=fmt[3], - pad$2=fmt[2], - iconv$0=fmt[1], - match$7=type_padprec(pad$2,prec$1,fmtty), - _s$_=match$7[3], - _s__=match$7[1]; - if(typeof _s$_ !== "number" && 3 === _s$_[0]) - {var - fmtty_rest$4=_s$_[1], - prec$2=match$7[2], - match$8=type_format_gen(fmt_rest$4,fmtty_rest$4), - fmtty$5=match$8[2], - fmt$5=match$8[1]; - return [0,[5,iconv$0,_s__,prec$2,fmt$5],fmtty$5]} - throw Type_mismatch; - case 6: - var - fmt_rest$5=fmt[4], - prec$3=fmt[3], - pad$3=fmt[2], - iconv$1=fmt[1], - match$9=type_padprec(pad$3,prec$3,fmtty), - _tb_=match$9[3], - _ta_=match$9[1]; - if(typeof _tb_ !== "number" && 4 === _tb_[0]) - {var - fmtty_rest$5=_tb_[1], - prec$4=match$9[2], - match$10=type_format_gen(fmt_rest$5,fmtty_rest$5), - fmtty$6=match$10[2], - fmt$6=match$10[1]; - return [0,[6,iconv$1,_ta_,prec$4,fmt$6],fmtty$6]} - throw Type_mismatch; - case 7: - var - fmt_rest$6=fmt[4], - prec$5=fmt[3], - pad$4=fmt[2], - iconv$2=fmt[1], - match$11=type_padprec(pad$4,prec$5,fmtty), - _td_=match$11[3], - _tc_=match$11[1]; - if(typeof _td_ !== "number" && 5 === _td_[0]) - {var - fmtty_rest$6=_td_[1], - prec$6=match$11[2], - match$12=type_format_gen(fmt_rest$6,fmtty_rest$6), - fmtty$7=match$12[2], - fmt$7=match$12[1]; - return [0,[7,iconv$2,_tc_,prec$6,fmt$7],fmtty$7]} - throw Type_mismatch; - case 8: - var - fmt_rest$7=fmt[4], - prec$7=fmt[3], - pad$5=fmt[2], - fconv=fmt[1], - match$13=type_padprec(pad$5,prec$7,fmtty), - _tf_=match$13[3], - _te_=match$13[1]; - if(typeof _tf_ !== "number" && 6 === _tf_[0]) - {var - fmtty_rest$7=_tf_[1], - prec$8=match$13[2], - match$14=type_format_gen(fmt_rest$7,fmtty_rest$7), - fmtty$8=match$14[2], - fmt$8=match$14[1]; - return [0,[8,fconv,_te_,prec$8,fmt$8],fmtty$8]} - throw Type_mismatch; - case 9: - var - fmt_rest$8=fmt[2], - pad$6=fmt[1], - match$15=type_padding(pad$6,fmtty), - _th_=match$15[2], - _tg_=match$15[1]; - if(typeof _th_ !== "number" && 7 === _th_[0]) - {var - fmtty_rest$8=_th_[1], - match$16=type_format_gen(fmt_rest$8,fmtty_rest$8), - fmtty$9=match$16[2], - fmt$9=match$16[1]; - return [0,[9,_tg_,fmt$9],fmtty$9]} - throw Type_mismatch; - case 10: - var - fmt_rest$9=fmt[1], - match$17=type_format_gen(fmt_rest$9,fmtty), - fmtty$10=match$17[2], - fmt$10=match$17[1]; - return [0,[10,fmt$10],fmtty$10]; - case 11: - var - fmt_rest$10=fmt[2], - str=fmt[1], - match$18=type_format_gen(fmt_rest$10,fmtty), - fmtty$11=match$18[2], - fmt$11=match$18[1]; - return [0,[11,str,fmt$11],fmtty$11]; - case 12: - var - fmt_rest$11=fmt[2], - chr=fmt[1], - match$19=type_format_gen(fmt_rest$11,fmtty), - fmtty$12=match$19[2], - fmt$12=match$19[1]; - return [0,[12,chr,fmt$12],fmtty$12]; - case 13: - if(typeof fmtty !== "number" && 8 === fmtty[0]) - {var - fmtty_rest$9=fmtty[2], - sub_fmtty=fmtty[1], - fmt_rest$12=fmt[3], - sub_fmtty$0=fmt[2], - pad_opt=fmt[1]; - if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty])) - throw Type_mismatch; - var - match$20=type_format_gen(fmt_rest$12,fmtty_rest$9), - fmtty$13=match$20[2], - fmt$13=match$20[1]; - return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]} - break; - case 14: - if(typeof fmtty !== "number" && 9 === fmtty[0]) - {var - fmtty_rest$10=fmtty[3], - sub_fmtty1=fmtty[1], - fmt_rest$13=fmt[3], - sub_fmtty$1=fmt[2], - pad_opt$0=fmt[1], - _ti_=[0,erase_rel(sub_fmtty1)]; - if(caml_notequal([0,erase_rel(sub_fmtty$1)],_ti_)) - throw Type_mismatch; - var - match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)), - fmtty$14=match$21[2], - fmt$14=match$21[1]; - return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]} - break; - case 15: - if(typeof fmtty !== "number" && 10 === fmtty[0]) - {var - fmtty_rest$11=fmtty[1], - fmt_rest$14=fmt[1], - match$22=type_format_gen(fmt_rest$14,fmtty_rest$11), - fmtty$15=match$22[2], - fmt$15=match$22[1]; - return [0,[15,fmt$15],fmtty$15]} - break; - case 16: - if(typeof fmtty !== "number" && 11 === fmtty[0]) - {var - fmtty_rest$12=fmtty[1], - fmt_rest$15=fmt[1], - match$23=type_format_gen(fmt_rest$15,fmtty_rest$12), - fmtty$16=match$23[2], - fmt$16=match$23[1]; - return [0,[16,fmt$16],fmtty$16]} - break; - case 17: - var - fmt_rest$16=fmt[2], - formatting_lit=fmt[1], - match$24=type_format_gen(fmt_rest$16,fmtty), - fmtty$17=match$24[2], - fmt$17=match$24[1]; - return [0,[17,formatting_lit,fmt$17],fmtty$17]; - case 18: - var fmt_rest$17=fmt[2],formatting_gen=fmt[1]; - if(0 === formatting_gen[0]) - {var - match$28=formatting_gen[1], - str$0=match$28[2], - fmt1=match$28[1], - match$29=type_format_gen(fmt1,fmtty), - fmtty2=match$29[2], - fmt2=match$29[1], - match$30=type_format_gen(fmt_rest$17,fmtty2), - fmtty3=match$30[2], - fmt3=match$30[1]; - return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]} - var - match$31=formatting_gen[1], - str$1=match$31[2], - fmt1$0=match$31[1], - match$32=type_format_gen(fmt1$0,fmtty), - fmtty2$0=match$32[2], - fmt2$0=match$32[1], - match$33=type_format_gen(fmt_rest$17,fmtty2$0), - fmtty3$0=match$33[2], - fmt3$0=match$33[1]; - return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0]; - case 19: - if(typeof fmtty !== "number" && 13 === fmtty[0]) - {var - fmtty_rest$13=fmtty[1], - fmt_rest$18=fmt[1], - match$25=type_format_gen(fmt_rest$18,fmtty_rest$13), - fmtty$18=match$25[2], - fmt$18=match$25[1]; - return [0,[19,fmt$18],fmtty$18]} - break; - case 20: - if(typeof fmtty !== "number" && 1 === fmtty[0]) - {var - fmtty_rest$14=fmtty[1], - fmt_rest$19=fmt[3], - char_set=fmt[2], - width_opt=fmt[1], - match$26=type_format_gen(fmt_rest$19,fmtty_rest$14), - fmtty$19=match$26[2], - fmt$19=match$26[1]; - return [0,[20,width_opt,char_set,fmt$19],fmtty$19]} - break; - case 21: - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var - fmtty_rest$15=fmtty[1], - fmt_rest$20=fmt[2], - counter=fmt[1], - match$27=type_format_gen(fmt_rest$20,fmtty_rest$15), - fmtty$20=match$27[2], - fmt$20=match$27[1]; - return [0,[21,counter,fmt$20],fmtty$20]} - break; - case 23: - var rest=fmt[2],ign=fmt[1]; - if(typeof ign === "number") - switch(ign) - {case 0:return type_ignored_param_one(ign,rest,fmtty); - case 1:return type_ignored_param_one(ign,rest,fmtty); - case 2: - if(typeof fmtty !== "number" && 14 === fmtty[0]) - {var - fmtty_rest$16=fmtty[1], - match$34=type_format_gen(rest,fmtty_rest$16), - fmtty$21=match$34[2], - fmt$21=match$34[1]; - return [0,[23,2,fmt$21],fmtty$21]} - throw Type_mismatch; - default:return type_ignored_param_one(ign,rest,fmtty)} - else - switch(ign[0]) - {case 0:return type_ignored_param_one(ign,rest,fmtty); - case 1:return type_ignored_param_one(ign,rest,fmtty); - case 2:return type_ignored_param_one(ign,rest,fmtty); - case 3:return type_ignored_param_one(ign,rest,fmtty); - case 4:return type_ignored_param_one(ign,rest,fmtty); - case 5:return type_ignored_param_one(ign,rest,fmtty); - case 6:return type_ignored_param_one(ign,rest,fmtty); - case 7:return type_ignored_param_one(ign,rest,fmtty); - case 8: - var sub_fmtty$2=ign[2],pad_opt$1=ign[1]; - return type_ignored_param_one - ([8,pad_opt$1,sub_fmtty$2],rest,fmtty); - case 9: - var - sub_fmtty$3=ign[2], - pad_opt$2=ign[1], - _tj_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), - match$35=_tj_[2], - fmtty$22=match$35[2], - fmt$22=match$35[1], - sub_fmtty$4=_tj_[1]; - return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22]; - case 10:return type_ignored_param_one(ign,rest,fmtty); - default:return type_ignored_param_one(ign,rest,fmtty)} - } - throw Type_mismatch} - function type_ignored_param_one(ign,fmt,fmtty) - {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1]; - return [0,[23,ign,fmt$0],fmtty$0]} - function type_format(fmt,fmtty) - {var _s3_=type_format_gen(fmt,fmtty); - if(typeof _s3_[2] === "number"){var fmt$0=_s3_[1];return fmt$0} - throw Type_mismatch} - function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} - function fix_padding(padty,width,str) - {var - len=caml_ml_string_length(str), - padty$0=0 <= width?padty:0, - width$0=abs(width); - if(width$0 <= len)return str; - var _s2_=2 === padty$0?48:32,res=make$0(width$0,_s2_); - switch(padty$0) - {case 0:blit$0(str,0,res,0,len);break; - case 1:blit$0(str,0,res,width$0 - len | 0,len);break; - default: - var switch$0=0; - if(0 < len) - {var switch$1=0; - if - (43 - !== - caml_string_get(str,0) - && - 45 - !== - caml_string_get(str,0) - && - 32 - !== - caml_string_get(str,0)) - {switch$0 = 1;switch$1 = 1} - if(! switch$1) - {caml_bytes_set(res,0,caml_string_get(str,0)); - blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}} - else - switch$0 = 1; - if(switch$0) - {var switch$2=0; - if(1 < len && 48 === caml_string_get(str,0)) - {var switch$3=0; - if - (120 - !== - caml_string_get(str,1) - && - 88 - !== - caml_string_get(str,1)) - {switch$2 = 1;switch$3 = 1} - if(! switch$3) - {caml_bytes_set(res,1,caml_string_get(str,1)); - blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}} - else - switch$2 = 1; - if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}} - return caml_string_of_bytes(res)} - function fix_int_precision(prec,str) - {var - prec$0=abs(prec), - len=caml_ml_string_length(str), - c=caml_string_get(str,0), - switch$0=0; - if(58 <= c) - {if(71 <= c) - {if(! (5 < c - 97 >>> 0))switch$0 = 1} - else - if(65 <= c)switch$0 = 1} - else - {var switch$1=0; - if(32 !== c) - if(43 <= c) - switch(c - 43 | 0) - {case 5: - if(len < (prec$0 + 2 | 0) && 1 < len) - {var switch$2=0; - if - (120 - === - caml_string_get(str,1) - || - 88 - === - caml_string_get(str,1)) - switch$2 = 1; - if(switch$2) - {var res$1=make$0(prec$0 + 2 | 0,48); - caml_bytes_set(res$1,1,caml_string_get(str,1)); - blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0); - return caml_string_of_bytes(res$1)}} - switch$0 = 1; - switch$1 = 1; - break; - case 0: - case 2:break; - case 1: - case 3: - case 4:switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1} - else - switch$1 = 1; - if(! switch$1 && len < (prec$0 + 1 | 0)) - {var res$0=make$0(prec$0 + 1 | 0,48); - caml_bytes_set(res$0,0,c); - blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0); - return caml_string_of_bytes(res$0)}} - if(switch$0 && len < prec$0) - {var res=make$0(prec$0,48); - blit$0(str,0,res,prec$0 - len | 0,len); - return caml_string_of_bytes(res)} - return str} - function string_to_caml_string(str) - {var - str$0=escaped$1(str), - l=caml_ml_string_length(str$0), - res=make$0(l + 2 | 0,34); - caml_blit_string(str$0,0,res,1,l); - return caml_string_of_bytes(res)} - function format_of_fconv(fconv,prec) - {var - prec$0=abs(prec), - symb=char_of_fconv(_aq_,fconv), - buf=buffer_create(16); - buffer_add_char(buf,37); - bprint_fconv_flag(buf,fconv); - buffer_add_char(buf,46); - buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0)); - buffer_add_char(buf,symb); - return buffer_contents(buf)} - function transform_int_alt(iconv,s) - {if(13 <= iconv) - {var n=[0,0],_sX_=caml_ml_string_length(s) - 1 | 0,_sW_=0; - if(! (_sX_ < 0)) - {var i$0=_sW_; - for(;;) - {var match=caml_string_unsafe_get(s,i$0); - if(! (9 < match - 48 >>> 0))n[1]++; - var _s1_=i$0 + 1 | 0; - if(_sX_ !== i$0){var i$0=_s1_;continue} - break}} - var - digits=n[1], - buf= - caml_create_bytes - (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0), - pos=[0,0], - put=function(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0}, - left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0], - _sZ_=caml_ml_string_length(s) - 1 | 0, - _sY_=0; - if(! (_sZ_ < 0)) - {var i=_sY_; - for(;;) - {var c=caml_string_unsafe_get(s,i); - if(9 < c - 48 >>> 0) - put(c); - else - {if(0 === left[1]){put(95);left[1] = 3}left[1] += -1;put(c)} - var _s0_=i + 1 | 0; - if(_sZ_ !== i){var i=_s0_;continue} - break}} - return caml_string_of_bytes(buf)} - return s} - function convert_int(iconv,n) - {switch(iconv) - {case 1:var _sV_=cst_d$3;break; - case 2:var _sV_=cst_d$4;break; - case 4:var _sV_=cst_i$1;break; - case 5:var _sV_=cst_i$2;break; - case 6:var _sV_=cst_x;break; - case 7:var _sV_=cst_x$0;break; - case 8:var _sV_=cst_X$0;break; - case 9:var _sV_=cst_X$1;break; - case 10:var _sV_=cst_o;break; - case 11:var _sV_=cst_o$0;break; - case 0: - case 13:var _sV_=cst_d$2;break; - case 3: - case 14:var _sV_=cst_i$0;break; - default:var _sV_=cst_u} - return transform_int_alt(iconv,caml_format_int(_sV_,n))} - function convert_int32(iconv,n) - {switch(iconv) - {case 1:var _sU_=cst_ld$0;break; - case 2:var _sU_=cst_ld$1;break; - case 4:var _sU_=cst_li$1;break; - case 5:var _sU_=cst_li$2;break; - case 6:var _sU_=cst_lx;break; - case 7:var _sU_=cst_lx$0;break; - case 8:var _sU_=cst_lX;break; - case 9:var _sU_=cst_lX$0;break; - case 10:var _sU_=cst_lo;break; - case 11:var _sU_=cst_lo$0;break; - case 0: - case 13:var _sU_=cst_ld;break; - case 3: - case 14:var _sU_=cst_li$0;break; - default:var _sU_=cst_lu} - return transform_int_alt(iconv,caml_format_int(_sU_,n))} - function convert_nativeint(iconv,n) - {switch(iconv) - {case 1:var _sT_=cst_nd$0;break; - case 2:var _sT_=cst_nd$1;break; - case 4:var _sT_=cst_ni$1;break; - case 5:var _sT_=cst_ni$2;break; - case 6:var _sT_=cst_nx;break; - case 7:var _sT_=cst_nx$0;break; - case 8:var _sT_=cst_nX;break; - case 9:var _sT_=cst_nX$0;break; - case 10:var _sT_=cst_no;break; - case 11:var _sT_=cst_no$0;break; - case 0: - case 13:var _sT_=cst_nd;break; - case 3: - case 14:var _sT_=cst_ni$0;break; - default:var _sT_=cst_nu} - return transform_int_alt(iconv,caml_format_int(_sT_,n))} - function convert_int64(iconv,n) - {switch(iconv) - {case 1:var _sS_=cst_Ld$0;break; - case 2:var _sS_=cst_Ld$1;break; - case 4:var _sS_=cst_Li$1;break; - case 5:var _sS_=cst_Li$2;break; - case 6:var _sS_=cst_Lx;break; - case 7:var _sS_=cst_Lx$0;break; - case 8:var _sS_=cst_LX;break; - case 9:var _sS_=cst_LX$0;break; - case 10:var _sS_=cst_Lo;break; - case 11:var _sS_=cst_Lo$0;break; - case 0: - case 13:var _sS_=cst_Ld;break; - case 3: - case 14:var _sS_=cst_Li$0;break; - default:var _sS_=cst_Lu} - return transform_int_alt(iconv,caml_int64_format(_sS_,n))} - function convert_float(fconv,prec,x) - {function hex(param) - {switch(fconv[1]) - {case 0:var sign=45;break; - case 1:var sign=43;break; - default:var sign=32} - return runtime.caml_hexstring_of_float(x,prec,sign)} - function caml_special_val(str) - {var match=runtime.caml_classify_float(x); - return 3 === match - ?x < 0.?cst_neg_infinity:cst_infinity - :4 <= match?cst_nan:str} - switch(fconv[2]) - {case 5: - var - str=caml_format_float(format_of_fconv(fconv,prec),x), - len=caml_ml_string_length(str), - i=0; - for(;;) - {if(i === len) - var _sQ_=0; - else - {var match=caml_string_get(str,i),_sP_=match - 46 | 0,switch$0=0; - if(23 < _sP_ >>> 0) - {if(55 === _sP_)switch$0 = 1} - else - if(21 < _sP_ - 1 >>> 0)switch$0 = 1; - if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue} - var _sQ_=1} - var _sR_=_sQ_?str:cat(str,cst$29); - return caml_special_val(_sR_)} - case 6:return hex(0); - case 7:return uppercase_ascii$1(hex(0)); - case 8:return caml_special_val(hex(0)); - default:return caml_format_float(format_of_fconv(fconv,prec),x)}} - function string_of_fmtty(fmtty) - {var buf=buffer_create(16); - bprint_fmtty(buf,fmtty); - return buffer_contents(buf)} - function make_printf$0(counter,k,acc,fmt) - {var k$0=k,acc$0=acc,fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k$0,acc$0); - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - return function(c) - {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)}; - case 1: - var rest$0=fmt$0[1]; - return function(c) - {var - str=escaped(c), - l=caml_ml_string_length(str), - res=make$0(l + 2 | 0,39); - caml_blit_string(str,0,res,1,l); - var new_acc=[4,acc$0,caml_string_of_bytes(res)]; - return make_printf(k$0,new_acc,rest$0)}; - case 2: - var rest$1=fmt$0[2],pad=fmt$0[1]; - return make_padding(k$0,acc$0,rest$1,pad,function(str){return str}); - case 3: - var rest$2=fmt$0[2],pad$0=fmt$0[1]; - return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string); - case 4: - var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv); - case 5: - var - rest$4=fmt$0[4], - prec$0=fmt$0[3], - pad$2=fmt$0[2], - iconv$0=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0); - case 6: - var - rest$5=fmt$0[4], - prec$1=fmt$0[3], - pad$3=fmt$0[2], - iconv$1=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1); - case 7: - var - rest$6=fmt$0[4], - prec$2=fmt$0[3], - pad$4=fmt$0[2], - iconv$2=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2); - case 8: - var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1]; - if(typeof pad$5 === "number") - {if(typeof prec$3 === "number") - return prec$3 - ?function(p,x) - {var str=convert_float(fconv,p,x); - return make_printf(k$0,[4,acc$0,str],rest$7)} - :function(x) - {var - str= - convert_float(fconv,default_float_precision(fconv),x); - return make_printf(k$0,[4,acc$0,str],rest$7)}; - var p=prec$3[1]; - return function(x) - {var str=convert_float(fconv,p,x); - return make_printf(k$0,[4,acc$0,str],rest$7)}} - else - {if(0 === pad$5[0]) - {var _sM_=pad$5[2],_sN_=pad$5[1]; - if(typeof prec$3 === "number") - return prec$3 - ?function(p,x) - {var str=fix_padding(_sN_,_sM_,convert_float(fconv,p,x)); - return make_printf(k$0,[4,acc$0,str],rest$7)} - :function(x) - {var - str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_sN_,_sM_,str); - return make_printf(k$0,[4,acc$0,str$0],rest$7)}; - var p$0=prec$3[1]; - return function(x) - {var str=fix_padding(_sN_,_sM_,convert_float(fconv,p$0,x)); - return make_printf(k$0,[4,acc$0,str],rest$7)}} - var _sO_=pad$5[1]; - if(typeof prec$3 === "number") - return prec$3 - ?function(w,p,x) - {var str=fix_padding(_sO_,w,convert_float(fconv,p,x)); - return make_printf(k$0,[4,acc$0,str],rest$7)} - :function(w,x) - {var - str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_sO_,w,str); - return make_printf(k$0,[4,acc$0,str$0],rest$7)}; - var p$1=prec$3[1]; - return function(w,x) - {var str=fix_padding(_sO_,w,convert_float(fconv,p$1,x)); - return make_printf(k$0,[4,acc$0,str],rest$7)}} - case 9: - var rest$8=fmt$0[2],pad$6=fmt$0[1]; - return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool); - case 10: - var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1; - continue; - case 11: - var - fmt$2=fmt$0[2], - str=fmt$0[1], - acc$2=[2,acc$0,str], - acc$0=acc$2, - fmt$0=fmt$2; - continue; - case 12: - var - fmt$3=fmt$0[2], - chr=fmt$0[1], - acc$3=[3,acc$0,chr], - acc$0=acc$3, - fmt$0=fmt$3; - continue; - case 13: - var - rest$9=fmt$0[3], - sub_fmtty=fmt$0[2], - ty=string_of_fmtty(sub_fmtty); - return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)}; - case 14: - var rest$10=fmt$0[3],fmtty=fmt$0[2]; - return function(param) - {var fmt=param[1]; - return make_printf - (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))}; - case 15: - var rest$11=fmt$0[1]; - return function(f,x) - {return make_printf - (k$0, - [6,acc$0,function(o){return caml_call2(f,o,x)}], - rest$11)}; - case 16: - var rest$12=fmt$0[1]; - return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)}; - case 17: - var - fmt$4=fmt$0[2], - fmting_lit=fmt$0[1], - acc$4=[0,acc$0,fmting_lit], - acc$0=acc$4, - fmt$0=fmt$4; - continue; - case 18: - var _sK_=fmt$0[1]; - if(0 === _sK_[0]) - {var - rest$13=fmt$0[2], - match=_sK_[1], - fmt$5=match[1], - k$3= - function(acc,k,rest) - {function k$0(kacc) - {return make_printf(k,[1,acc,[0,kacc]],rest)} - return k$0}, - k$1=k$3(acc$0,k$0,rest$13), - k$0=k$1, - acc$0=0, - fmt$0=fmt$5; - continue} - var - rest$14=fmt$0[2], - match$0=_sK_[1], - fmt$6=match$0[1], - k$4= - function(acc,k,rest) - {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)} - return k$0}, - k$2=k$4(acc$0,k$0,rest$14), - k$0=k$2, - acc$0=0, - fmt$0=fmt$6; - continue; - case 19:throw [0,Assert_failure,_ar_]; - case 20: - var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion]; - return function(param){return make_printf(k$0,new_acc,rest$15)}; - case 21: - var rest$16=fmt$0[2]; - return function(n) - {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)]; - return make_printf(k$0,new_acc,rest$16)}; - case 22: - var rest$17=fmt$0[1]; - return function(c) - {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)}; - case 23: - var rest$18=fmt$0[2],ign=fmt$0[1]; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)} - return caml_trampoline_return - (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]); - default: - var - rest$19=fmt$0[3], - f=fmt$0[2], - arity=fmt$0[1], - _sL_=caml_call1(f,0); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_sL_)} - return caml_trampoline_return - (make_custom$0,[0,k$0,acc$0,rest$19,arity,_sL_])}} - function make_ignored_param$0(counter,k,acc,ign,fmt) - {if(typeof ign === "number") - switch(ign) - {case 0: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_invalid_arg(counter$0,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 1: - if(counter < 50) - {var counter$1=counter + 1 | 0; - return make_invalid_arg(counter$1,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 2:throw [0,Assert_failure,_as_]; - default: - if(counter < 50) - {var counter$2=counter + 1 | 0; - return make_invalid_arg(counter$2,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} - else - switch(ign[0]) - {case 0: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return make_invalid_arg(counter$3,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 1: - if(counter < 50) - {var counter$4=counter + 1 | 0; - return make_invalid_arg(counter$4,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 2: - if(counter < 50) - {var counter$5=counter + 1 | 0; - return make_invalid_arg(counter$5,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 3: - if(counter < 50) - {var counter$6=counter + 1 | 0; - return make_invalid_arg(counter$6,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 4: - if(counter < 50) - {var counter$7=counter + 1 | 0; - return make_invalid_arg(counter$7,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 5: - if(counter < 50) - {var counter$8=counter + 1 | 0; - return make_invalid_arg(counter$8,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 6: - if(counter < 50) - {var counter$9=counter + 1 | 0; - return make_invalid_arg(counter$9,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 7: - if(counter < 50) - {var counter$10=counter + 1 | 0; - return make_invalid_arg(counter$10,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 8: - if(counter < 50) - {var counter$11=counter + 1 | 0; - return make_invalid_arg(counter$11,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 9: - var fmtty=ign[2]; - if(counter < 50) - {var counter$14=counter + 1 | 0; - return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)} - return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]); - case 10: - if(counter < 50) - {var counter$12=counter + 1 | 0; - return make_invalid_arg(counter$12,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - default: - if(counter < 50) - {var counter$13=counter + 1 | 0; - return make_invalid_arg(counter$13,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}} - function make_from_fmtty$0(counter,k,acc,fmtty,fmt) - {if(typeof fmtty === "number") - {if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_invalid_arg(counter$0,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} - else - switch(fmtty[0]) - {case 0: - var rest=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest,fmt)}; - case 1: - var rest$0=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$0,fmt)}; - case 2: - var rest$1=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$1,fmt)}; - case 3: - var rest$2=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$2,fmt)}; - case 4: - var rest$3=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$3,fmt)}; - case 5: - var rest$4=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$4,fmt)}; - case 6: - var rest$5=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$5,fmt)}; - case 7: - var rest$6=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$6,fmt)}; - case 8: - var rest$7=fmtty[2]; - return function(param){return make_from_fmtty(k,acc,rest$7,fmt)}; - case 9: - var - rest$8=fmtty[3], - ty2=fmtty[2], - ty1=fmtty[1], - ty=trans(symm(ty1),ty2); - return function(param) - {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; - case 10: - var rest$9=fmtty[1]; - return function(param,_sJ_) - {return make_from_fmtty(k,acc,rest$9,fmt)}; - case 11: - var rest$10=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$10,fmt)}; - case 12: - var rest$11=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$11,fmt)}; - case 13:throw [0,Assert_failure,_at_]; - default:throw [0,Assert_failure,_au_]}} - function make_invalid_arg(counter,k,acc,fmt) - {var _sI_=[8,acc,cst_Printf_bad_conversion$0]; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_printf$0(counter$0,k,_sI_,fmt)} - return caml_trampoline_return(make_printf$0,[0,k,_sI_,fmt])} - function make_custom$0(counter,k,acc,rest,arity,f) - {if(arity) - {var arity$0=arity[1]; - return function(x) - {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}} - var _sH_=[4,acc,f]; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_printf$0(counter$0,k,_sH_,rest)} - return caml_trampoline_return(make_printf$0,[0,k,_sH_,rest])} - function make_printf(k,acc,fmt) - {return caml_trampoline(make_printf$0(0,k,acc,fmt))} - function make_ignored_param(k,acc,ign,fmt) - {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))} - function make_from_fmtty(k,acc,fmtty,fmt) - {return caml_trampoline(make_from_fmtty$0(0,k,acc,fmtty,fmt))} - function make_custom(k,acc,rest,arity,f) - {return caml_trampoline(make_custom$0(0,k,acc,rest,arity,f))} - function make_padding(k,acc,fmt,pad,trans) - {if(typeof pad === "number") - return function(x) - {var new_acc=[4,acc,caml_call1(trans,x)]; - return make_printf(k,new_acc,fmt)}; - else - {if(0 === pad[0]) - {var width=pad[2],padty=pad[1]; - return function(x) - {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))]; - return make_printf(k,new_acc,fmt)}} - var padty$0=pad[1]; - return function(w,x) - {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))]; - return make_printf(k,new_acc,fmt)}}} - function make_int_padding_precision(k,acc,fmt,pad,prec,trans,iconv) - {if(typeof pad === "number") - {if(typeof prec === "number") - return prec - ?function(p,x) - {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)} - :function(x) - {var str=caml_call2(trans,iconv,x); - return make_printf(k,[4,acc,str],fmt)}; - var p=prec[1]; - return function(x) - {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}} - else - {if(0 === pad[0]) - {var _sE_=pad[2],_sF_=pad[1]; - if(typeof prec === "number") - return prec - ?function(p,x) - {var - str= - fix_padding - (_sF_,_sE_,fix_int_precision(p,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)} - :function(x) - {var str=fix_padding(_sF_,_sE_,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}; - var p$0=prec[1]; - return function(x) - {var - str= - fix_padding - (_sF_,_sE_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)}} - var _sG_=pad[1]; - if(typeof prec === "number") - return prec - ?function(w,p,x) - {var - str= - fix_padding - (_sG_,w,fix_int_precision(p,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)} - :function(w,x) - {var str=fix_padding(_sG_,w,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}; - var p$1=prec[1]; - return function(w,x) - {var - str= - fix_padding - (_sG_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)}}} - function make_iprintf$0(counter,k,o,fmt) - {var k$0=k,fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k$0,o); - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1],_rV_=make_iprintf(k$0,o,rest); - return function(_sD_){return _rV_}; - case 1: - var rest$0=fmt$0[1],_rW_=make_iprintf(k$0,o,rest$0); - return function(_sC_){return _rW_}; - case 2: - var _rX_=fmt$0[1]; - if(typeof _rX_ === "number") - {var rest$1=fmt$0[2],_rY_=make_iprintf(k$0,o,rest$1); - return function(_sy_){return _rY_}} - else - {if(0 === _rX_[0]) - {var rest$2=fmt$0[2],_rZ_=make_iprintf(k$0,o,rest$2); - return function(_sB_){return _rZ_}} - var - rest$3=fmt$0[2], - _r0_=make_iprintf(k$0,o,rest$3), - _r1_=function(_sA_){return _r0_}; - return function(_sz_){return _r1_}} - case 3: - var _r2_=fmt$0[1]; - if(typeof _r2_ === "number") - {var rest$4=fmt$0[2],_r3_=make_iprintf(k$0,o,rest$4); - return function(_su_){return _r3_}} - else - {if(0 === _r2_[0]) - {var rest$5=fmt$0[2],_r4_=make_iprintf(k$0,o,rest$5); - return function(_sx_){return _r4_}} - var - rest$6=fmt$0[2], - _r5_=make_iprintf(k$0,o,rest$6), - _r6_=function(_sw_){return _r5_}; - return function(_sv_){return _r6_}} - case 4: - var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$7,pad,prec); - case 5: - var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0); - case 6: - var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1); - case 7: - var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2); - case 8: - var rest$11=fmt$0[4],prec$3=fmt$0[3],pad$3=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$11,pad$3,prec$3); - case 9: - var _r7_=fmt$0[1]; - if(typeof _r7_ === "number") - {var rest$12=fmt$0[2],_r8_=make_iprintf(k$0,o,rest$12); - return function(_sq_){return _r8_}} - else - {if(0 === _r7_[0]) - {var rest$13=fmt$0[2],_r9_=make_iprintf(k$0,o,rest$13); - return function(_st_){return _r9_}} - var - rest$14=fmt$0[2], - _r__=make_iprintf(k$0,o,rest$14), - _r$_=function(_ss_){return _r__}; - return function(_sr_){return _r$_}} - case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; - case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue; - case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; - case 13: - var rest$15=fmt$0[3],_sa_=make_iprintf(k$0,o,rest$15); - return function(_sp_){return _sa_}; - case 14: - var rest$16=fmt$0[3],fmtty=fmt$0[2]; - return function(param) - {var fmt=param[1]; - return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))}; - case 15: - var - rest$17=fmt$0[1], - _sb_=make_iprintf(k$0,o,rest$17), - _sc_=function(_so_){return _sb_}; - return function(_sn_){return _sc_}; - case 16: - var rest$18=fmt$0[1],_sd_=make_iprintf(k$0,o,rest$18); - return function(_sm_){return _sd_}; - case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; - case 18: - var _se_=fmt$0[1]; - if(0 === _se_[0]) - {var - rest$19=fmt$0[2], - match=_se_[1], - fmt$5=match[1], - k$3= - function(k,rest) - {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, - k$1=k$3(k$0,rest$19), - k$0=k$1, - fmt$0=fmt$5; - continue} - var - rest$20=fmt$0[2], - match$0=_se_[1], - fmt$6=match$0[1], - k$4= - function(k,rest) - {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, - k$2=k$4(k$0,rest$20), - k$0=k$2, - fmt$0=fmt$6; - continue; - case 19:throw [0,Assert_failure,_av_]; - case 20: - var rest$21=fmt$0[3],_sf_=make_iprintf(k$0,o,rest$21); - return function(_sl_){return _sf_}; - case 21: - var rest$22=fmt$0[2],_sg_=make_iprintf(k$0,o,rest$22); - return function(_sk_){return _sg_}; - case 22: - var rest$23=fmt$0[1],_sh_=make_iprintf(k$0,o,rest$23); - return function(_sj_){return _sh_}; - case 23: - var rest$24=fmt$0[2],ign=fmt$0[1],_si_=0; - return make_ignored_param - (function(param){return caml_call1(k$0,o)},_si_,ign,rest$24); - default: - var rest$25=fmt$0[3],arity=fmt$0[1]; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)} - return caml_trampoline_return - (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}} - function fn_of_custom_arity$0(counter,k,o,fmt,param) - {if(param) - {var arity=param[1],_rT_=fn_of_custom_arity(k,o,fmt,arity); - return function(_rU_){return _rT_}} - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_iprintf$0(counter$0,k,o,fmt)} - return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])} - function make_iprintf(k,o,fmt) - {return caml_trampoline(make_iprintf$0(0,k,o,fmt))} - function fn_of_custom_arity(k,o,fmt,param) - {return caml_trampoline(fn_of_custom_arity$0(0,k,o,fmt,param))} - function fn_of_padding_precision(k,o,fmt,pad,prec) - {if(typeof pad === "number") - {if(typeof prec === "number") - {if(prec) - {var _rp_=make_iprintf(k,o,fmt),_rq_=function(_rH_){return _rp_}; - return function(_rG_){return _rq_}} - var _rr_=make_iprintf(k,o,fmt); - return function(_rF_){return _rr_}} - var _rs_=make_iprintf(k,o,fmt); - return function(_rE_){return _rs_}} - else - {if(0 === pad[0]) - {if(typeof prec === "number") - {if(prec) - {var _rt_=make_iprintf(k,o,fmt),_ru_=function(_rS_){return _rt_}; - return function(_rR_){return _ru_}} - var _rv_=make_iprintf(k,o,fmt); - return function(_rQ_){return _rv_}} - var _rw_=make_iprintf(k,o,fmt); - return function(_rP_){return _rw_}} - if(typeof prec === "number") - {if(prec) - {var - _rx_=make_iprintf(k,o,fmt), - _ry_=function(_rO_){return _rx_}, - _rz_=function(_rN_){return _ry_}; - return function(_rM_){return _rz_}} - var _rA_=make_iprintf(k,o,fmt),_rB_=function(_rL_){return _rA_}; - return function(_rK_){return _rB_}} - var _rC_=make_iprintf(k,o,fmt),_rD_=function(_rJ_){return _rC_}; - return function(_rI_){return _rD_}}} - function output_acc(o,acc) - {var acc$0=acc; - for(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - output_acc(o,p); - return output_string(o,s); - case 1: - var _rn_=acc$0[2],_ro_=acc$0[1]; - if(0 === _rn_[0]) - {var acc$1=_rn_[1]; - output_acc(o,_ro_); - output_string(o,cst$30); - var acc$0=acc$1; - continue} - var acc$2=_rn_[1]; - output_acc(o,_ro_); - output_string(o,cst$31); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - output_acc(o,p$2); - return caml_call1(f,o); - case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o); - case 8: - var msg=acc$0[2],p$4=acc$0[1]; - output_acc(o,p$4); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - output_acc(o,p$0); - return output_string(o,s$0); - default: - var c=acc$0[2],p$1=acc$0[1]; - output_acc(o,p$1); - return caml_ml_output_char(o,c)}} - function bufput_acc(b,acc) - {var acc$0=acc; - for(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - bufput_acc(b,p); - return add_string(b,s); - case 1: - var _rl_=acc$0[2],_rm_=acc$0[1]; - if(0 === _rl_[0]) - {var acc$1=_rl_[1]; - bufput_acc(b,_rm_); - add_string(b,cst$32); - var acc$0=acc$1; - continue} - var acc$2=_rl_[1]; - bufput_acc(b,_rm_); - add_string(b,cst$33); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - bufput_acc(b,p$2); - return caml_call1(f,b); - case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; - case 8: - var msg=acc$0[2],p$3=acc$0[1]; - bufput_acc(b,p$3); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - bufput_acc(b,p$0); - return add_string(b,s$0); - default: - var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}} - function strput_acc(b,acc) - {var acc$0=acc; - for(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - strput_acc(b,p); - return add_string(b,s); - case 1: - var _rj_=acc$0[2],_rk_=acc$0[1]; - if(0 === _rj_[0]) - {var acc$1=_rj_[1]; - strput_acc(b,_rk_); - add_string(b,cst$34); - var acc$0=acc$1; - continue} - var acc$2=_rj_[1]; - strput_acc(b,_rk_); - add_string(b,cst$35); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - strput_acc(b,p$2); - return add_string(b,caml_call1(f,0)); - case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; - case 8: - var msg=acc$0[2],p$3=acc$0[1]; - strput_acc(b,p$3); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - strput_acc(b,p$0); - return add_string(b,s$0); - default: - var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}} - function failwith_message(param) - {var fmt=param[1],buf=create$2(256); - function k(acc){strput_acc(buf,acc);return failwith(contents(buf))} - return make_printf(k,0,fmt)} - function open_box_of_string(str) - {if(caml_string_equal(str,cst$36))return _aw_; - var len=caml_ml_string_length(str); - function invalid_box(param) - {return caml_call1(failwith_message(_ax_),str)} - function parse_spaces(i) - {var i$0=i; - for(;;) - {if(i$0 === len)return i$0; - var match=caml_string_get(str,i$0); - if(9 !== match && 32 !== match)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function parse_lword(i,j) - {var j$0=j; - for(;;) - {if(j$0 === len)return j$0; - var match=caml_string_get(str,j$0); - if(25 < match - 97 >>> 0)return j$0; - var j$1=j$0 + 1 | 0,j$0=j$1; - continue}} - function parse_int(i,j) - {var j$0=j; - for(;;) - {if(j$0 === len)return j$0; - var match=caml_string_get(str,j$0),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue} - return j$0}} - var - wstart=parse_spaces(0), - wend=parse_lword(wstart,wstart), - box_name=sub$0(str,wstart,wend - wstart | 0), - nstart=parse_spaces(wend), - nend=parse_int(nstart,nstart); - if(nstart === nend) - var indent=0; - else - try - {var - _rh_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), - indent=_rh_} - catch(_ri_) - {_ri_ = caml_wrap_exception(_ri_); - if(_ri_[1] !== Failure)throw _ri_; - var indent=invalid_box(0)} - var exp_end=parse_spaces(nend); - if(exp_end !== len)invalid_box(0); - var switch$0=0; - if - (caml_string_notequal(box_name,cst$37) - && - caml_string_notequal(box_name,cst_b$0)) - var - box_type= - caml_string_notequal(box_name,cst_h) - ?caml_string_notequal(box_name,cst_hov) - ?caml_string_notequal(box_name,cst_hv) - ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1 - :2 - :3 - :0; - else - switch$0 = 1; - if(switch$0)var box_type=4; - return [0,indent,box_type]} - function make_padding_fmt_ebb(pad,fmt) - {if(typeof pad === "number") - return [0,0,fmt]; - else - {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]} - var s$0=pad[1]; - return [0,[1,s$0],fmt]}} - function make_padprec_fmt_ebb(pad,prec,fmt) - {if(typeof prec === "number") - var match=prec?[0,1,fmt]:[0,0,fmt]; - else - var p=prec[1],match=[0,[0,p],fmt]; - var prec$0=match[1]; - if(typeof pad === "number") - return [0,0,prec$0,fmt]; - else - {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]} - var s$0=pad[1]; - return [0,[1,s$0],prec$0,fmt]}} - function fmt_ebb_of_string(legacy_behavior,str) - {if(legacy_behavior) - var flag=legacy_behavior[1],legacy_behavior$0=flag; - else - var legacy_behavior$0=1; - function invalid_format_message(str_ind,msg) - {return caml_call3(failwith_message(_ay_),str,str_ind,msg)} - function unexpected_end_of_format(end_ind) - {return invalid_format_message(end_ind,cst_unexpected_end_of_format)} - function invalid_format_without(str_ind,c,s) - {return caml_call4(failwith_message(_az_),str,str_ind,c,s)} - function expected_character(str_ind,expected,read) - {return caml_call4(failwith_message(_aA_),str,str_ind,expected,read)} - function add_literal(lit_start,str_ind,fmt) - {var size=str_ind - lit_start | 0; - return 0 === size - ?[0,fmt] - :1 === size - ?[0,[12,caml_string_get(str,lit_start),fmt]] - :[0,[11,sub$0(str,lit_start,size),fmt]]} - function parse_positive(str_ind,end_ind,acc) - {var str_ind$0=str_ind,acc$0=acc; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind$0); - if(9 < c - 48 >>> 0)return [0,str_ind$0,acc$0]; - var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0; - if(max_string_length < acc$1) - return caml_call3 - (failwith_message(_aR_),str,acc$1,max_string_length); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1; - continue}} - function parse_integer(str_ind,end_ind) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var match=caml_string_get(str,str_ind); - if(48 <= match) - {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)} - else - if(45 === match) - {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind + 1 | 0); - if(9 < c - 48 >>> 0) - return expected_character(str_ind + 1 | 0,cst_digit,c); - var - match$0=parse_positive(str_ind + 1 | 0,end_ind,0), - n=match$0[2], - next_ind=match$0[1]; - return [0,next_ind,- n | 0]} - throw [0,Assert_failure,_aS_]} - function parse_spaces(str_ind,end_ind) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - if(32 === caml_string_get(str,str_ind$0)) - {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} - return str_ind$0}} - function incompatible_flag(pct_ind,str_ind,symb,option) - {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0); - return caml_call5 - (failwith_message(_aX_),str,pct_ind,option,symb,subfmt)} - function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb) - {var plus$0=plus,hash$0=hash,space$0=space; - for(;;) - {var switch$0=0; - if(plus$0) - {if(hash$0) - switch$0 = 1; - else - if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}} - else - if(hash$0) - if(space$0) - switch$0 = 1; - else - {var switcher$0=symb - 88 | 0; - if(32 < switcher$0 >>> 0) - switch$0 = 1; - else - switch(switcher$0) - {case 0:return 9; - case 12:return 13; - case 17:return 14; - case 23:return 11; - case 29:return 15; - case 32:return 7; - default:switch$0 = 1}} - else - if(space$0) - {if(100 === symb)return 2;if(105 === symb)return 5} - else - {var switcher$1=symb - 88 | 0; - if(! (32 < switcher$1 >>> 0)) - switch(switcher$1) - {case 0:return 8; - case 12:return 0; - case 17:return 3; - case 23:return 10; - case 29:return 12; - case 32:return 6 - }} - if(switch$0) - {var switcher=symb - 88 | 0; - if(! (32 < switcher >>> 0)) - switch(switcher) - {case 0:if(legacy_behavior$0)return 9;break; - case 23:if(legacy_behavior$0)return 11;break; - case 32:if(legacy_behavior$0)return 7;break; - case 12: - case 17: - case 29: - if(legacy_behavior$0){var hash$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$49) - }} - if(plus$0) - {if(space$0) - {if(legacy_behavior$0){var space$0=0;continue} - return incompatible_flag(pct_ind,str_ind,32,cst$46)} - if(legacy_behavior$0){var plus$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$47)} - if(space$0) - {if(legacy_behavior$0){var space$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$48)} - throw [0,Assert_failure,_aV_]}} - function search_subformat_end(str_ind,end_ind,c) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind) - caml_call3(failwith_message(_aT_),str,c,end_ind); - var match=caml_string_get(str,str_ind$0); - if(37 === match) - {if((str_ind$0 + 1 | 0) === end_ind) - unexpected_end_of_format(end_ind); - if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; - var match$0=caml_string_get(str,str_ind$0 + 1 | 0); - if(95 <= match$0) - {if(123 <= match$0) - {if(! (126 <= match$0)) - switch(match$0 - 123 | 0) - {case 0: - var - sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), - str_ind$2=sub_end + 2 | 0, - str_ind$0=str_ind$2; - continue; - case 1:break; - default: - return expected_character - (str_ind$0 + 1 | 0,cst_character,125)}} - else - if(! (96 <= match$0)) - {if((str_ind$0 + 2 | 0) === end_ind) - unexpected_end_of_format(end_ind); - var match$1=caml_string_get(str,str_ind$0 + 2 | 0); - if(40 === match$1) - {var - sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), - str_ind$3=sub_end$0 + 2 | 0, - str_ind$0=str_ind$3; - continue} - if(123 === match$1) - {var - sub_end$1= - search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), - str_ind$4=sub_end$1 + 2 | 0, - str_ind$0=str_ind$4; - continue} - var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; - continue}} - else - {if(40 === match$0) - {var - sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), - str_ind$6=sub_end$2 + 2 | 0, - str_ind$0=str_ind$6; - continue} - if(41 === match$0) - return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} - var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; - continue} - var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; - continue}} - function parse_magic_size(str_ind,end_ind) - {try - {var - str_ind_1=parse_spaces(str_ind,end_ind), - match$2=caml_string_get(str,str_ind_1), - switch$0=0; - if(48 <= match$2) - {if(! (58 <= match$2))switch$0 = 1} - else - if(45 === match$2)switch$0 = 1; - if(switch$0) - {var - match$3=parse_integer(str_ind_1,end_ind), - size=match$3[2], - str_ind_2=match$3[1], - str_ind_3=parse_spaces(str_ind_2,end_ind); - if(62 !== caml_string_get(str,str_ind_3))throw Not_found; - var - s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), - _rf_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} - else - var _rf_=0; - var _re_=_rf_} - catch(_rg_) - {_rg_ = caml_wrap_exception(_rg_); - if(_rg_ !== Not_found && _rg_[1] !== Failure)throw _rg_; - var _re_=0} - if(_re_) - {var - match=_re_[1], - formatting_lit=match[2], - next_ind=match[1], - match$0=parse(next_ind,end_ind), - fmt_rest=match$0[1]; - return [0,[17,formatting_lit,fmt_rest]]} - var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1]; - return [0,[17,_aP_,fmt_rest$0]]} - function parse_good_break(str_ind,end_ind) - {try - {var - _q9_=str_ind === end_ind?1:0, - _q__=_q9_ || (60 !== caml_string_get(str,str_ind)?1:0); - if(_q__)throw Not_found; - var - str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind), - match$0=caml_string_get(str,str_ind_1), - switch$0=0; - if(48 <= match$0) - {if(! (58 <= match$0))switch$0 = 1} - else - if(45 === match$0)switch$0 = 1; - if(! switch$0)throw Not_found; - var - match$1=parse_integer(str_ind_1,end_ind), - width=match$1[2], - str_ind_2=match$1[1], - str_ind_3=parse_spaces(str_ind_2,end_ind), - match$2=caml_string_get(str,str_ind_3), - switcher=match$2 - 45 | 0, - switch$1=0; - if(12 < switcher >>> 0) - if(17 === switcher) - var - s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), - _q$_=[0,s,width,0], - _ra_=str_ind_3 + 1 | 0, - formatting_lit$0=_q$_, - next_ind=_ra_; - else - switch$1 = 1; - else - if(1 < switcher - 1 >>> 0) - {var - match$3=parse_integer(str_ind_3,end_ind), - offset=match$3[2], - str_ind_4=match$3[1], - str_ind_5=parse_spaces(str_ind_4,end_ind); - if(62 !== caml_string_get(str,str_ind_5))throw Not_found; - var - s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0), - _rb_=[0,s$0,width,offset], - _rc_=str_ind_5 + 1 | 0, - formatting_lit$0=_rb_, - next_ind=_rc_} - else - switch$1 = 1; - if(switch$1)throw Not_found} - catch(_rd_) - {_rd_ = caml_wrap_exception(_rd_); - if(_rd_ !== Not_found && _rd_[1] !== Failure)throw _rd_; - var formatting_lit$0=formatting_lit,next_ind=str_ind} - var match=parse(next_ind,end_ind),fmt_rest=match[1]; - return [0,[17,formatting_lit$0,fmt_rest]]} - function parse_tag(is_open_tag,str_ind,end_ind) - {try - {if(str_ind === end_ind)throw Not_found; - var match$0=caml_string_get(str,str_ind); - if(60 === match$0) - {var ind=index_from$0(str,str_ind + 1 | 0,62); - if(end_ind <= ind)throw Not_found; - var - sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0), - match$1=parse(ind + 1 | 0,end_ind), - fmt_rest$0=match$1[1], - match$2=parse(str_ind,ind + 1 | 0), - sub_fmt=match$2[1], - sub_format$0=[0,sub_fmt,sub_str], - formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0], - _q7_=[0,[18,formatting$0,fmt_rest$0]]; - return _q7_} - throw Not_found} - catch(_q8_) - {_q8_ = caml_wrap_exception(_q8_); - if(_q8_ === Not_found) - {var - match=parse(str_ind,end_ind), - fmt_rest=match[1], - formatting=is_open_tag?[0,sub_format]:[1,sub_format]; - return [0,[18,formatting,fmt_rest]]} - throw _q8_}} - function parse_flags(pct_ind,str_ind,end_ind,ign) - {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0]; - function set_flag(str_ind,flag) - {var _q4_=flag[1],_q5_=_q4_?1 - legacy_behavior$0:_q4_; - if(_q5_) - {var _q6_=caml_string_get(str,str_ind); - caml_call3(failwith_message(_aB_),str,str_ind,_q6_)} - flag[1] = 1; - return 0} - var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0; - if(! (16 < switcher >>> 0)) - switch(switcher) - {case 0: - set_flag(str_ind$0,space); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; - continue; - case 3: - set_flag(str_ind$0,hash); - var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2; - continue; - case 11: - set_flag(str_ind$0,plus); - var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3; - continue; - case 13: - set_flag(str_ind$0,minus); - var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4; - continue; - case 16: - set_flag(str_ind$0,zero); - var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5; - continue - } - var - _qZ_=space[1], - _q0_=hash[1], - _q1_=plus[1], - _q2_=minus[1], - _q3_=zero[1]; - if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var - padty= - _q3_ - ?_q2_ - ?legacy_behavior$0 - ?0 - :incompatible_flag(pct_ind,str_ind$0,45,cst_0) - :2 - :_q2_?0:1, - match$0=caml_string_get(str,str_ind$0); - if(48 <= match$0) - {if(! (58 <= match$0)) - {var - match$1=parse_positive(str_ind$0,end_ind,0), - width=match$1[2], - new_ind=match$1[1]; - return parse_after_padding - (pct_ind, - new_ind, - end_ind, - _q2_, - _q1_, - _q0_, - _qZ_, - ign, - [0,padty,width])}} - else - if(42 === match$0) - return parse_after_padding - (pct_ind, - str_ind$0 + 1 | 0, - end_ind, - _q2_, - _q1_, - _q0_, - _qZ_, - ign, - [1,padty]); - switch(padty) - {case 0: - if(1 - legacy_behavior$0) - invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding); - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,0); - case 1: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,0); - default: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,_aC_)}}} - function parse_after_padding - (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var symb=caml_string_get(str,str_ind); - if(46 === symb) - {var str_ind$0=str_ind + 1 | 0; - if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var - parse_literal= - function(minus,str_ind) - {var - match=parse_positive(str_ind,end_ind,0), - prec=match[2], - new_ind=match[1]; - return parse_after_precision - (pct_ind, - new_ind, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - [0,prec])}, - symb$0=caml_string_get(str,str_ind$0); - if(48 <= symb$0) - {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)} - else - if(42 <= symb$0) - switch(symb$0 - 42 | 0) - {case 0: - return parse_after_precision - (pct_ind, - str_ind$0 + 1 | 0, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - 1); - case 1: - case 3: - if(legacy_behavior$0) - {var - _qY_=str_ind$0 + 1 | 0, - minus$0=minus || (45 === symb$0?1:0); - return parse_literal(minus$0,_qY_)} - break - } - return legacy_behavior$0 - ?parse_after_precision - (pct_ind, - str_ind$0, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - _aD_) - :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} - return parse_conversion - (pct_ind, - str_ind + 1 | 0, - end_ind, - plus, - hash, - space, - ign, - pad, - 0, - pad, - symb)} - function parse_after_precision - (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - function parse_conv(padprec) - {return parse_conversion - (pct_ind, - str_ind + 1 | 0, - end_ind, - plus, - hash, - space, - ign, - pad, - prec, - padprec, - caml_string_get(str,str_ind))} - if(typeof pad === "number") - {if(typeof prec === "number" && ! prec)return parse_conv(0); - if(minus) - {if(typeof prec === "number")return parse_conv(_aE_); - var n=prec[1]; - return parse_conv([0,0,n])} - if(typeof prec === "number")return parse_conv(_aF_); - var n$0=prec[1]; - return parse_conv([0,1,n$0])} - return parse_conv(pad)} - function parse_conversion - (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb) - {var - plus_used=[0,0], - hash_used=[0,0], - space_used=[0,0], - ign_used=[0,0], - pad_used=[0,0], - prec_used=[0,0]; - function get_plus(param){plus_used[1] = 1;return plus} - function get_hash(param){hash_used[1] = 1;return hash} - function get_space(param){space_used[1] = 1;return space} - function get_ign(param){ign_used[1] = 1;return ign} - function get_pad(param){pad_used[1] = 1;return pad} - function get_prec(param){prec_used[1] = 1;return prec} - function get_padprec(param){pad_used[1] = 1;return padprec} - function get_int_pad(param) - {var pad=get_pad(0),match=get_prec(0); - if(typeof match === "number" && ! match)return pad; - if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - {if(2 <= pad[1]) - {var n=pad[2]; - return legacy_behavior$0 - ?[0,1,n] - :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} - return pad} - return 2 <= pad[1] - ?legacy_behavior$0 - ?_aG_ - :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) - :pad}} - function check_no_0(symb,pad) - {if(typeof pad === "number") - return pad; - else - {if(0 === pad[0]) - {if(2 <= pad[1]) - {var width=pad[2]; - return legacy_behavior$0 - ?[0,1,width] - :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} - return pad} - return 2 <= pad[1] - ?legacy_behavior$0 - ?_aH_ - :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) - :pad}} - function opt_of_pad(c,pad) - {if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - switch(pad[1]) - {case 0: - var width=pad[2]; - return legacy_behavior$0 - ?[0,width] - :incompatible_flag(pct_ind,str_ind,c,cst$38); - case 1:var width$0=pad[2];return [0,width$0]; - default: - var width$1=pad[2]; - return legacy_behavior$0 - ?[0,width$1] - :incompatible_flag(pct_ind,str_ind,c,cst_0$2)} - return incompatible_flag(pct_ind,str_ind,c,cst$39)}} - function get_pad_opt(c){return opt_of_pad(c,get_pad(0))} - function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))} - var switch$0=0; - if(124 <= symb) - switch$0 = 1; - else - switch(symb) - {case 33: - var - match$6=parse(str_ind,end_ind), - fmt_rest$5=match$6[1], - fmt_result=[0,[10,fmt_rest$5]]; - break; - case 40: - var - sub_end=search_subformat_end(str_ind,end_ind,41), - match$8=parse(sub_end + 2 | 0,end_ind), - fmt_rest$7=match$8[1], - match$9=parse(str_ind,sub_end), - sub_fmt=match$9[1], - sub_fmtty=fmtty_of_fmt(sub_fmt); - if(get_ign(0)) - var - ignored$2=[9,get_pad_opt(95),sub_fmtty], - _qv_=[0,[23,ignored$2,fmt_rest$7]]; - else - var _qv_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; - var fmt_result=_qv_; - break; - case 44:var fmt_result=parse(str_ind,end_ind);break; - case 67: - var - match$12=parse(str_ind,end_ind), - fmt_rest$10=match$12[1], - _qx_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], - fmt_result=_qx_; - break; - case 78: - var - match$16=parse(str_ind,end_ind), - fmt_rest$14=match$16[1], - counter$0=2; - if(get_ign(0)) - var ignored$6=[11,counter$0],_qD_=[0,[23,ignored$6,fmt_rest$14]]; - else - var _qD_=[0,[21,counter$0,fmt_rest$14]]; - var fmt_result=_qD_; - break; - case 83: - var - pad$6=check_no_0(symb,get_padprec(0)), - match$17=parse(str_ind,end_ind), - fmt_rest$15=match$17[1]; - if(get_ign(0)) - var - ignored$7=[1,get_padprec_opt(95)], - _qE_=[0,[23,ignored$7,fmt_rest$15]]; - else - var - match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15), - fmt_rest$16=match$18[2], - pad$7=match$18[1], - _qE_=[0,[3,pad$7,fmt_rest$16]]; - var fmt_result=_qE_; - break; - case 91: - if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var - char_set=create_char_set(0), - add_char=function(c){return add_in_char_set(char_set,c)}, - add_range= - function(c$0,c) - {if(! (c < c$0)) - {var i=c$0; - for(;;) - {add_in_char_set(char_set,char_of_int(i)); - var _qX_=i + 1 | 0; - if(c !== i){var i=_qX_;continue} - break}} - return 0}, - fail_single_percent= - function(str_ind) - {return caml_call2(failwith_message(_aQ_),str,str_ind)}, - parse_char_set_content= - function(counter,str_ind,end_ind) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind$0); - if(45 === c) - {add_char(45); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; - continue} - if(93 === c)return str_ind$0 + 1 | 0; - var _qW_=str_ind$0 + 1 | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return parse_char_set_after_char$0(counter$0,_qW_,end_ind,c)} - return caml_trampoline_return - (parse_char_set_after_char$0,[0,_qW_,end_ind,c])}}, - parse_char_set_after_char$0= - function(counter,str_ind,end_ind,c) - {var str_ind$0=str_ind,c$0=c; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c$1=caml_string_get(str,str_ind$0),switch$0=0; - if(46 <= c$1) - {if(64 === c$1) - switch$0 = 1; - else - if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}} - else - if(37 === c$1) - switch$0 = 1; - else - if(45 <= c$1) - {var str_ind$2=str_ind$0 + 1 | 0; - if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); - var c$2=caml_string_get(str,str_ind$2); - if(37 === c$2) - {if((str_ind$2 + 1 | 0) === end_ind) - unexpected_end_of_format(end_ind); - var c$3=caml_string_get(str,str_ind$2 + 1 | 0); - if(37 !== c$3 && 64 !== c$3) - return fail_single_percent(str_ind$2); - add_range(c$0,c$3); - var _qU_=str_ind$2 + 2 | 0; - if(counter < 50) - {var counter$2=counter + 1 | 0; - return parse_char_set_content(counter$2,_qU_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_qU_,end_ind])} - if(93 === c$2) - {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0} - add_range(c$0,c$2); - var _qV_=str_ind$2 + 1 | 0; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return parse_char_set_content(counter$1,_qV_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_qV_,end_ind])} - if(switch$0 && 37 === c$0) - {add_char(c$1); - var _qT_=str_ind$0 + 1 | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return parse_char_set_content(counter$0,_qT_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_qT_,end_ind])} - if(37 === c$0)fail_single_percent(str_ind$0); - add_char(c$0); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1; - continue}}, - parse_char_set_after_char= - function(str_ind,end_ind,c) - {return caml_trampoline - (parse_char_set_after_char$0(0,str_ind,end_ind,c))}; - if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var match$31=caml_string_get(str,str_ind); - if(94 === match$31) - var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0; - else - var reverse=0,str_ind$1=str_ind; - if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind); - var - c=caml_string_get(str,str_ind$1), - next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c), - char_set$0=freeze_char_set(char_set), - char_set$1=reverse?rev_char_set(char_set$0):char_set$0, - match$21=parse(next_ind,end_ind), - fmt_rest$19=match$21[1]; - if(get_ign(0)) - var - ignored$9=[10,get_pad_opt(95),char_set$1], - _qJ_=[0,[23,ignored$9,fmt_rest$19]]; - else - var _qJ_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; - var fmt_result=_qJ_; - break; - case 97: - var - match$22=parse(str_ind,end_ind), - fmt_rest$20=match$22[1], - fmt_result=[0,[15,fmt_rest$20]]; - break; - case 99: - var - char_format= - function(fmt_rest) - {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]}, - match$23=parse(str_ind,end_ind), - fmt_rest$21=match$23[1], - match$24=get_pad_opt(99); - if(match$24) - {if(0 === match$24[1]) - var - _qK_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], - _qL_=_qK_; - else - var - _qL_= - legacy_behavior$0 - ?char_format(fmt_rest$21) - :invalid_format_message - (str_ind,cst_non_zero_widths_are_unsupp); - var _qM_=_qL_} - else - var _qM_=char_format(fmt_rest$21); - var fmt_result=_qM_; - break; - case 114: - var - match$25=parse(str_ind,end_ind), - fmt_rest$22=match$25[1], - _qN_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], - fmt_result=_qN_; - break; - case 115: - var - pad$9=check_no_0(symb,get_padprec(0)), - match$26=parse(str_ind,end_ind), - fmt_rest$23=match$26[1]; - if(get_ign(0)) - var - ignored$10=[0,get_padprec_opt(95)], - _qO_=[0,[23,ignored$10,fmt_rest$23]]; - else - var - match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23), - fmt_rest$24=match$27[2], - pad$10=match$27[1], - _qO_=[0,[2,pad$10,fmt_rest$24]]; - var fmt_result=_qO_; - break; - case 116: - var - match$28=parse(str_ind,end_ind), - fmt_rest$25=match$28[1], - fmt_result=[0,[16,fmt_rest$25]]; - break; - case 123: - var - sub_end$0=search_subformat_end(str_ind,end_ind,125), - match$29=parse(str_ind,sub_end$0), - sub_fmt$0=match$29[1], - match$30=parse(sub_end$0 + 2 | 0,end_ind), - fmt_rest$26=match$30[1], - sub_fmtty$0=fmtty_of_fmt(sub_fmt$0); - if(get_ign(0)) - var - ignored$11=[8,get_pad_opt(95),sub_fmtty$0], - _qP_=[0,[23,ignored$11,fmt_rest$26]]; - else - var _qP_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; - var fmt_result=_qP_; - break; - case 66: - case 98: - var - pad$3=check_no_0(symb,get_padprec(0)), - match$10=parse(str_ind,end_ind), - fmt_rest$8=match$10[1]; - if(get_ign(0)) - var - ignored$3=[7,get_padprec_opt(95)], - _qw_=[0,[23,ignored$3,fmt_rest$8]]; - else - var - match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8), - fmt_rest$9=match$11[2], - pad$4=match$11[1], - _qw_=[0,[9,pad$4,fmt_rest$9]]; - var fmt_result=_qw_; - break; - case 37: - case 64: - var - match$7=parse(str_ind,end_ind), - fmt_rest$6=match$7[1], - fmt_result=[0,[12,symb,fmt_rest$6]]; - break; - case 76: - case 108: - case 110: - var switch$1=0; - if(str_ind !== end_ind) - {var - symb$0=caml_string_get(str,str_ind), - _qQ_=symb$0 - 88 | 0, - switch$2=0; - if(! (32 < _qQ_ >>> 0)) - switch(_qQ_) - {case 0: - case 12: - case 17: - case 23: - case 29: - case 32:var _qC_=1;switch$2 = 1;break - } - if(! switch$2)var _qC_=0; - if(_qC_){switch$0 = 1;switch$1 = 1}} - if(! switch$1) - {var - match$15=parse(str_ind,end_ind), - fmt_rest$13=match$15[1], - switch$3=0; - if(108 <= symb) - {if(! (111 <= symb)) - switch(symb - 108 | 0) - {case 0:var counter=0;switch$3 = 1;break; - case 1:break; - default:var counter=1;switch$3 = 1}} - else - if(76 === symb){var counter=2;switch$3 = 1} - if(! switch$3)throw [0,Assert_failure,_aU_]; - if(get_ign(0)) - var ignored$5=[11,counter],_qB_=[0,[23,ignored$5,fmt_rest$13]]; - else - var _qB_=[0,[21,counter,fmt_rest$13]]; - var fmt_result=_qB_} - break; - case 32: - case 35: - case 43: - case 45: - case 95: - var - fmt_result= - caml_call3(failwith_message(_aL_),str,pct_ind,symb); - break; - case 88: - case 100: - case 105: - case 111: - case 117: - case 120: - var - _qF_=get_space(0), - _qG_=get_hash(0), - iconv$2= - compute_int_conv(pct_ind,str_ind,get_plus(0),_qG_,_qF_,symb), - match$19=parse(str_ind,end_ind), - fmt_rest$17=match$19[1]; - if(get_ign(0)) - var - ignored$8=[2,iconv$2,get_pad_opt(95)], - _qH_=[0,[23,ignored$8,fmt_rest$17]]; - else - var - _qI_=get_prec(0), - match$20=make_padprec_fmt_ebb(get_int_pad(0),_qI_,fmt_rest$17), - fmt_rest$18=match$20[3], - prec$4=match$20[2], - pad$8=match$20[1], - _qH_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; - var fmt_result=_qH_; - break; - case 69: - case 70: - case 71: - case 72: - case 101: - case 102: - case 103: - case 104: - var - space$1=get_space(0), - hash$1=get_hash(0), - plus$2=get_plus(0), - flag= - plus$2 - ?space$1 - ?legacy_behavior$0 - ?1 - :incompatible_flag(pct_ind,str_ind,32,cst$50) - :1 - :space$1?2:0, - switch$4=0; - if(73 <= symb) - {var switcher=symb - 101 | 0; - if(3 < switcher >>> 0) - switch$4 = 1; - else - {switch(switcher) - {case 0:var _qR_=1;break; - case 1:var _qR_=0;break; - case 2:var _qR_=3;break; - default:var _qR_=6} - var kind=_qR_}} - else - if(69 <= symb) - {var switch$5=0; - switch(symb - 69 | 0) - {case 0:var _qS_=2;break; - case 1:switch$4 = 1;switch$5 = 1;break; - case 2:var _qS_=4;break; - default:var _qS_=7} - if(! switch$5)var kind=_qS_} - else - switch$4 = 1; - if(switch$4) - {var switch$6=0; - if(hash$1) - if(70 === symb)var kind=8;else switch$6 = 1; - else - if(70 === symb)var kind=5;else switch$6 = 1; - if(switch$6)throw [0,Assert_failure,_aW_]} - var - fconv=[0,flag,kind], - match$13=parse(str_ind,end_ind), - fmt_rest$11=match$13[1]; - if(get_ign(0)) - {var match=get_prec(0); - if(typeof match === "number") - var _qy_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; - else - var ndec=match[1],_qy_=[0,ndec]; - var - ignored$4=[6,get_pad_opt(95),_qy_], - _qz_=[0,[23,ignored$4,fmt_rest$11]]} - else - var - _qA_=get_prec(0), - match$14=make_padprec_fmt_ebb(get_pad(0),_qA_,fmt_rest$11), - fmt_rest$12=match$14[3], - prec$3=match$14[2], - pad$5=match$14[1], - _qz_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; - var fmt_result=_qz_; - break; - default:switch$0 = 1} - if(switch$0) - {var switch$7=0; - if(108 <= symb) - if(111 <= symb) - switch$7 = 1; - else - {var switch$8=0; - switch(symb - 108 | 0) - {case 0: - var - _qf_=caml_string_get(str,str_ind), - _qg_=get_space(0), - _qh_=get_hash(0), - iconv= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_qh_,_qg_,_qf_), - match$0=parse(str_ind + 1 | 0,end_ind), - fmt_rest=match$0[1]; - if(get_ign(0)) - var - ignored=[3,iconv,get_pad_opt(95)], - _qi_=[0,[23,ignored,fmt_rest]]; - else - var - _qk_=get_prec(0), - match$1=make_padprec_fmt_ebb(get_int_pad(0),_qk_,fmt_rest), - fmt_rest$0=match$1[3], - prec$0=match$1[2], - pad$0=match$1[1], - _qi_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; - var _qj_=_qi_; - break; - case 1:switch$7 = 1;switch$8 = 1;break; - default: - var - _ql_=caml_string_get(str,str_ind), - _qm_=get_space(0), - _qn_=get_hash(0), - iconv$0= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_qn_,_qm_,_ql_), - match$2=parse(str_ind + 1 | 0,end_ind), - fmt_rest$1=match$2[1]; - if(get_ign(0)) - var - ignored$0=[4,iconv$0,get_pad_opt(95)], - _qo_=[0,[23,ignored$0,fmt_rest$1]]; - else - var - _qp_=get_prec(0), - match$3=make_padprec_fmt_ebb(get_int_pad(0),_qp_,fmt_rest$1), - fmt_rest$2=match$3[3], - prec$1=match$3[2], - pad$1=match$3[1], - _qo_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; - var _qj_=_qo_} - if(! switch$8)var fmt_result=_qj_} - else - if(76 === symb) - {var - _qq_=caml_string_get(str,str_ind), - _qr_=get_space(0), - _qs_=get_hash(0), - iconv$1= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_qs_,_qr_,_qq_), - match$4=parse(str_ind + 1 | 0,end_ind), - fmt_rest$3=match$4[1]; - if(get_ign(0)) - var - ignored$1=[5,iconv$1,get_pad_opt(95)], - _qt_=[0,[23,ignored$1,fmt_rest$3]]; - else - var - _qu_=get_prec(0), - match$5=make_padprec_fmt_ebb(get_int_pad(0),_qu_,fmt_rest$3), - fmt_rest$4=match$5[3], - prec$2=match$5[2], - pad$2=match$5[1], - _qt_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; - var fmt_result=_qt_} - else - switch$7 = 1; - if(switch$7) - var - fmt_result= - caml_call3(failwith_message(_aI_),str,str_ind - 1 | 0,symb)} - if(1 - legacy_behavior$0) - {var _p8_=1 - plus_used[1],plus$0=_p8_?plus:_p8_; - if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); - var _p9_=1 - hash_used[1],hash$0=_p9_?hash:_p9_; - if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); - var _p__=1 - space_used[1],space$0=_p__?space:_p__; - if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); - var _p$_=1 - pad_used[1],_qa_=_p$_?caml_notequal([0,pad],_aJ_):_p$_; - if(_qa_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); - var - _qb_=1 - prec_used[1], - _qc_=_qb_?caml_notequal([0,prec],_aK_):_qb_; - if(_qc_) - {var _qd_=ign?95:symb; - incompatible_flag(pct_ind,str_ind,_qd_,cst_precision$2)} - var plus$1=ign?plus:ign; - if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} - var _qe_=1 - ign_used[1],ign$0=_qe_?ign:_qe_; - if(ign$0) - {var switch$9=0; - if(38 <= symb) - {if(44 !== symb && 64 !== symb)switch$9 = 1} - else - if(33 !== symb && ! (37 <= symb))switch$9 = 1; - var switch$10=0; - if(switch$9 || ! legacy_behavior$0)switch$10 = 1; - if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)} - return fmt_result} - function parse(lit_start,end_ind) - {var str_ind=lit_start; - for(;;) - {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0); - var match=caml_string_get(str,str_ind); - if(37 === match) - {var str_ind$2=str_ind + 1 | 0; - if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); - var - match$1=caml_string_get(str,str_ind$2), - _p7_= - 95 === match$1 - ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1) - :parse_flags(str_ind,str_ind$2,end_ind,0), - fmt_rest=_p7_[1]; - return add_literal(lit_start,str_ind,fmt_rest)} - if(64 === match) - {var str_ind$0=str_ind + 1 | 0; - if(str_ind$0 === end_ind) - var match$0=_aM_; - else - {var c=caml_string_get(str,str_ind$0),switch$0=0; - if(65 <= c) - if(94 <= c) - {var switcher=c - 123 | 0; - if(2 < switcher >>> 0) - switch$0 = 1; - else - switch(switcher) - {case 0: - var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break; - case 1:switch$0 = 1;break; - default: - var - match$3=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$2=match$3[1], - match$0=[0,[17,1,fmt_rest$2]]}} - else - if(91 <= c) - switch(c - 91 | 0) - {case 0: - var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break; - case 1:switch$0 = 1;break; - default: - var - match$4=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$3=match$4[1], - match$0=[0,[17,0,fmt_rest$3]]} - else - switch$0 = 1; - else - if(10 === c) - var - match$5=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$4=match$5[1], - match$0=[0,[17,3,fmt_rest$4]]; - else - if(32 <= c) - switch(c - 32 | 0) - {case 0: - var - match$6=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$5=match$6[1], - match$0=[0,[17,_aN_,fmt_rest$5]]; - break; - case 5: - var switch$1=0; - if - ((str_ind$0 + 1 | 0) - < - end_ind - && - 37 - === - caml_string_get(str,str_ind$0 + 1 | 0)) - {var - match$7=parse(str_ind$0 + 2 | 0,end_ind), - fmt_rest$6=match$7[1], - match$0=[0,[17,6,fmt_rest$6]]; - switch$1 = 1} - if(! switch$1) - var - match$8=parse(str_ind$0,end_ind), - fmt_rest$7=match$8[1], - match$0=[0,[12,64,fmt_rest$7]]; - break; - case 12: - var - match$9=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$8=match$9[1], - match$0=[0,[17,_aO_,fmt_rest$8]]; - break; - case 14: - var - match$10=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$9=match$10[1], - match$0=[0,[17,4,fmt_rest$9]]; - break; - case 27: - var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind); - break; - case 28: - var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind); - break; - case 31: - var - match$11=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$10=match$11[1], - match$0=[0,[17,2,fmt_rest$10]]; - break; - case 32: - var - match$12=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$11=match$12[1], - match$0=[0,[17,5,fmt_rest$11]]; - break; - default:switch$0 = 1} - else - switch$0 = 1; - if(switch$0) - var - match$2=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$1=match$2[1], - match$0=[0,[17,[2,c],fmt_rest$1]]} - var fmt_rest$0=match$0[1]; - return add_literal(lit_start,str_ind,fmt_rest$0)} - var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; - continue}} - return parse(0,caml_ml_string_length(str))} - function format_of_string_fmtty(str,fmtty) - {var match=fmt_ebb_of_string(0,str),fmt=match[1]; - try - {var _p5_=[0,type_format(fmt,fmtty),str];return _p5_} - catch(_p6_) - {_p6_ = caml_wrap_exception(_p6_); - if(_p6_ === Type_mismatch) - {var _p4_=string_of_fmtty(fmtty); - return caml_call2(failwith_message(_aY_),str,_p4_)} - throw _p6_}} - function format_of_string_format(str,param) - {var - str$0=param[2], - fmt=param[1], - match=fmt_ebb_of_string(0,str), - fmt$0=match[1]; - try - {var _p2_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _p2_} - catch(_p3_) - {_p3_ = caml_wrap_exception(_p3_); - if(_p3_ === Type_mismatch) - return caml_call2(failwith_message(_aZ_),str,str$0); - throw _p3_}} - var - CamlinternalFormat= - [0, - is_in_char_set, - rev_char_set, - create_char_set, - add_in_char_set, - freeze_char_set, - param_format_of_ignored_format, - make_printf, - make_iprintf, - output_acc, - bufput_acc, - strput_acc, - type_format, - fmt_ebb_of_string, - format_of_string_fmtty, - format_of_string_format, - char_of_iconv, - string_of_formatting_lit, - string_of_fmtty, - string_of_fmt, - open_box_of_string, - symm, - trans, - recast]; - caml_register_global(791,CamlinternalFormat,"CamlinternalFormat"); - function kfprintf(k,o,param) - {var fmt=param[1],_p1_=0; - return make_printf - (function(acc){output_acc(o,acc);return caml_call1(k,o)}, - _p1_, - fmt)} - function kbprintf(k,b,param) - {var fmt=param[1],_p0_=0; - return make_printf - (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, - _p0_, - fmt)} - function ikfprintf(k,oc,param) - {var fmt=param[1];return make_iprintf(k,oc,fmt)} - function fprintf(oc,fmt){return kfprintf(function(_pZ_){return 0},oc,fmt)} - function bprintf(b,fmt){return kbprintf(function(_pY_){return 0},b,fmt)} - function ifprintf(oc,fmt) - {return ikfprintf(function(_pX_){return 0},oc,fmt)} - function ibprintf(b,fmt){return ikfprintf(function(_pW_){return 0},b,fmt)} - function printf(fmt){return fprintf(stdout,fmt)} - function eprintf(fmt){return fprintf(stderr,fmt)} - function ksprintf(k,param) - {var fmt=param[1]; - function k$0(acc) - {var buf=create$2(64); - strput_acc(buf,acc); - return caml_call1(k,contents(buf))} - return make_printf(k$0,0,fmt)} - function sprintf(fmt){return ksprintf(function(s){return s},fmt)} - var - Stdlib_Printf= - [0, - fprintf, - printf, - eprintf, - sprintf, - bprintf, - ifprintf, - ibprintf, - kfprintf, - ikfprintf, - ksprintf, - kbprintf, - ikfprintf, - ksprintf]; - caml_register_global(792,Stdlib_Printf,"Stdlib__Printf"); - var - Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)], - Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)], - Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)]; - function assoc3(x,l) - {var l$0=l; - for(;;) - {if(l$0) - {var match=l$0[1],y2=match[2],y1=match[1]; - if(caml_equal(y1,x))return y2; - var l$1=l$0[2],l$0=l$1; - continue} - throw Not_found}} - function split$1(s) - {var - i=index$0(s,61), - len=caml_ml_string_length(s), - _pV_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); - return [0,sub$0(s,0,i),_pV_]} - function make_symlist(prefix,sep,suffix,l) - {if(l) - {var t=l[2],h=l[1],_pU_=cat(prefix,h); - return cat - (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_pU_,t), - suffix)} - return cst_none} - function help_action(param){throw [0,Stop,_a2_]} - function add_help(speclist) - {try - {assoc3(cst_help$2,speclist);var _pR_=0,_pP_=_pR_} - catch(_pT_) - {_pT_ = caml_wrap_exception(_pT_); - if(_pT_ !== Not_found)throw _pT_; - var - _pP_= - [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]} - try - {assoc3(cst_help$1,speclist);var _pQ_=0,add2=_pQ_} - catch(_pS_) - {_pS_ = caml_wrap_exception(_pS_); - if(_pS_ !== Not_found)throw _pS_; - var - add2= - [0, - [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], - 0]} - return append(speclist,append(_pP_,add2))} - function usage_b(buf,speclist,errmsg) - {caml_call1(bprintf(buf,_a3_),errmsg); - var _pM_=add_help(speclist); - return iter$2 - (function(param) - {var - doc=param[3], - spec=param[2], - key=param[1], - _pN_=0 < caml_ml_string_length(doc)?1:0; - if(_pN_) - {if(11 === spec[0]) - {var l=spec[1],_pO_=make_symlist(cst$53,cst$52,cst$51,l); - return caml_call3(bprintf(buf,_a1_),key,_pO_,doc)} - return caml_call2(bprintf(buf,_a0_),key,doc)} - return _pN_}, - _pM_)} - function usage_string(speclist,errmsg) - {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)} - function usage(speclist,errmsg) - {var _pL_=usage_string(speclist,errmsg); - return caml_call1(eprintf(_a4_),_pL_)} - var current=[0,0]; - function bool_of_string_opt$0(x) - {try - {var _pJ_=[0,bool_of_string(x)];return _pJ_} - catch(_pK_) - {_pK_ = caml_wrap_exception(_pK_); - if(_pK_[1] === Invalid_argument)return 0; - throw _pK_}} - function int_of_string_opt$0(x) - {try - {var _pH_=[0,caml_int_of_string(x)];return _pH_} - catch(_pI_) - {_pI_ = caml_wrap_exception(_pI_); - if(_pI_[1] === Failure)return 0; - throw _pI_}} - function float_of_string_opt(x) - {try - {var _pF_=[0,caml_float_of_string(x)];return _pF_} - catch(_pG_) - {_pG_ = caml_wrap_exception(_pG_); - if(_pG_[1] === Failure)return 0; - throw _pG_}} - function parse_and_expand_argv_dynamic_ - (allow_expand,current,argv,speclist,anonfun,errmsg) - {var initpos=current[1]; - function convert_error(error) - {var - b=create$2(200), - progname= - initpos < argv[1].length - 1 - ?caml_check_bound(argv[1],initpos)[1 + initpos] - :cst$54; - switch(error[0]) - {case 0: - var _pE_=error[1]; - if - (caml_string_notequal(_pE_,cst_help$3) - && - caml_string_notequal(_pE_,cst_help$4)) - caml_call2(bprintf(b,_a5_),progname,_pE_); - break; - case 1: - var expected=error[3],arg=error[2],opt=error[1]; - caml_call4(bprintf(b,_a8_),progname,arg,opt,expected); - break; - case 2:var s=error[1];caml_call2(bprintf(b,_a9_),progname,s);break; - default:var s$0=error[1];caml_call2(bprintf(b,_a__),progname,s$0)} - usage_b(b,speclist[1],errmsg); - if(! caml_equal(error,_a6_) && ! caml_equal(error,_a7_)) - return [0,Bad,contents(b)]; - return [0,Help,contents(b)]} - current[1]++; - for(;;) - {if(current[1] < argv[1].length - 1) - {try - {var - _pt_=current[1], - s=caml_check_bound(argv[1],_pt_)[1 + _pt_], - switch$0=0; - if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0)) - {try - {var - follow$1=0, - _pv_=assoc3(s,speclist[1]), - follow$0=follow$1, - action=_pv_} - catch(_pC_) - {_pC_ = caml_wrap_exception(_pC_); - if(_pC_ !== Not_found)throw _pC_; - try - {var - match=split$1(s), - arg=match[2], - keyword=match[1], - follow=[0,arg], - _pu_=assoc3(keyword,speclist[1])} - catch(_pD_) - {_pD_ = caml_wrap_exception(_pD_); - if(_pD_ === Not_found)throw [0,Stop,[0,s]]; - throw _pD_; - var _pw_=_pD_} - var follow$0=follow,action=_pu_,_px_=_pC_} - var - no_arg$0= - function(s,follow) - {function no_arg(param) - {if(follow) - {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]} - return 0} - return no_arg}, - no_arg=no_arg$0(s,follow$0), - get_arg$0= - function(s,follow) - {function get_arg(param) - {if(follow){var arg=follow[1];return arg} - if((current[1] + 1 | 0) < argv[1].length - 1) - {var _pB_=current[1] + 1 | 0; - return caml_check_bound(argv[1],_pB_)[1 + _pB_]} - throw [0,Stop,[2,s]]} - return get_arg}, - get_arg=get_arg$0(s,follow$0), - consume_arg$0= - function(follow) - {function consume_arg(param) - {return follow?0:(current[1]++,0)} - return consume_arg}, - consume_arg=consume_arg$0(follow$0), - treat_action$0= - function(s,no_arg,get_arg,consume_arg) - {function treat_action(param) - {switch(param[0]) - {case 0:var f=param[1];no_arg(0);return caml_call1(f,0); - case 1: - var - f$0=param[1], - arg=get_arg(0), - match=bool_of_string_opt$0(arg); - if(match) - {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)} - throw [0,Stop,[1,s,arg,cst_a_boolean]]; - case 2:var r=param[1];no_arg(0);r[1] = 1;return 0; - case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0; - case 4: - var f$1=param[1],arg$0=get_arg(0); - caml_call1(f$1,arg$0); - return consume_arg(0); - case 5: - var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0); - case 6: - var - f$2=param[1], - arg$1=get_arg(0), - match$0=int_of_string_opt$0(arg$1); - if(match$0) - {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)} - throw [0,Stop,[1,s,arg$1,cst_an_integer]]; - case 7: - var - r$2=param[1], - arg$2=get_arg(0), - match$1=int_of_string_opt$0(arg$2); - if(match$1) - {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)} - throw [0,Stop,[1,s,arg$2,cst_an_integer$0]]; - case 8: - var - f$3=param[1], - arg$3=get_arg(0), - match$2=float_of_string_opt(arg$3); - if(match$2) - {var x$1=match$2[1]; - caml_call1(f$3,x$1); - return consume_arg(0)} - throw [0,Stop,[1,s,arg$3,cst_a_float]]; - case 9: - var - r$3=param[1], - arg$4=get_arg(0), - match$3=float_of_string_opt(arg$4); - if(match$3) - {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)} - throw [0,Stop,[1,s,arg$4,cst_a_float$0]]; - case 10: - var specs=param[1]; - no_arg(0); - return iter$2(treat_action,specs); - case 11: - var f$4=param[2],symb=param[1],arg$5=get_arg(0); - if(mem(arg$5,symb)) - {caml_call1(f$4,arg$5);return consume_arg(0)} - throw [0, - Stop, - [1, - s, - arg$5, - cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]]; - case 12: - var f$5=param[1]; - no_arg(0); - for(;;) - {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _py_=current[1] + 1 | 0; - caml_call1(f$5,caml_check_bound(argv[1],_py_)[1 + _py_]); - consume_arg(0); - continue} - return 0} - case 13: - var f$6=param[1]; - no_arg(0); - var acc=[0,0]; - for(;;) - {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _pA_=current[1] + 1 | 0,_pz_=acc[1]; - acc[1] = [0,caml_check_bound(argv[1],_pA_)[1 + _pA_],_pz_]; - consume_arg(0); - continue} - return caml_call1(f$6,rev(acc[1]))} - default: - var f$7=param[1]; - if(1 - allow_expand) - throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo]; - var arg$6=get_arg(0),newarg=caml_call1(f$7,arg$6); - consume_arg(0); - var - before=sub$1(argv[1],0,current[1] + 1 | 0), - after= - sub$1 - (argv[1], - current[1] + 1 | 0, - (argv[1].length - 1 - current[1] | 0) - 1 | 0); - argv[1] - = - caml_array_concat([0,before,[0,newarg,[0,after,0]]]); - return 0}} - return treat_action}, - treat_action=treat_action$0(s,no_arg,get_arg,consume_arg); - treat_action(action); - switch$0 = 1} - if(! switch$0)caml_call1(anonfun,s)} - catch(exn$0) - {exn$0 = caml_wrap_exception(exn$0); - if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])} - if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)} - throw exn$0; - var exn=exn$0} - current[1]++; - continue} - return 0}} - function parse_and_expand_argv_dynamic - (current,argv,speclist,anonfun,errmsg) - {return parse_and_expand_argv_dynamic_ - (1,current,argv,speclist,anonfun,errmsg)} - function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg) - {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; - return parse_and_expand_argv_dynamic_ - (0,current$0,[0,argv],speclist,anonfun,errmsg)} - function parse_argv(opt,argv,speclist,anonfun,errmsg) - {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; - return parse_argv_dynamic - ([0,current$0],argv,[0,speclist],anonfun,errmsg)} - function parse(l,f,msg) - {try - {var _ps_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _ps_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_a$_),msg$0);return exit(2)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_ba_),msg$1);return exit(0)} - throw exn}} - function parse_dynamic(l,f,msg) - {try - {var _pr_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _pr_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_bb_),msg$0);return exit(2)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bc_),msg$1);return exit(0)} - throw exn}} - function parse_expand(l,f,msg) - {try - {var - argv=[0,caml_sys_argv(0)], - spec=[0,l], - current$0=[0,current[1]], - _pq_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); - return _pq_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_bd_),msg$0);return exit(2)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_be_),msg$1);return exit(0)} - throw exn}} - function second_word(s) - {var len=caml_ml_string_length(s); - function loop(n) - {var n$0=n; - for(;;) - {if(len <= n$0)return len; - if(32 === caml_string_get(s,n$0)) - {var n$1=n$0 + 1 | 0,n$0=n$1;continue} - return n$0}} - try - {var n$0=index$0(s,9)} - catch(_po_) - {_po_ = caml_wrap_exception(_po_); - if(_po_ === Not_found) - {try - {var n=index$0(s,32)} - catch(_pp_) - {_pp_ = caml_wrap_exception(_pp_); - if(_pp_ === Not_found)return len; - throw _pp_} - return loop(n + 1 | 0)} - throw _po_} - return loop(n$0 + 1 | 0)} - function max_arg_len(cur,param) - {var doc=param[3],spec=param[2],kwd=param[1]; - return 11 === spec[0] - ?max$1(cur,caml_ml_string_length(kwd)) - :max$1(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)} - function replace_leading_tab(s) - {var seen=[0,0]; - return map$5 - (function(c) - {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c}, - s)} - function align(opt,speclist) - {if(opt)var sth=opt[1],limit=sth;else var limit=max_int; - var - completed=add_help(speclist), - len=fold_left$0(max_arg_len,0,completed), - len$0=min$1(len,limit); - return map$3 - (function(ksd) - {var _pm_=ksd[1],_pn_=ksd[2]; - if(caml_string_notequal(ksd[3],cst$58)) - {if(11 === _pn_[0]) - {var - msg$0=ksd[3], - cutcol$0=second_word(msg$0), - spaces$0=make$1(max$1(0,len$0 - cutcol$0 | 0) + 3 | 0,32); - return [0, - _pm_, - _pn_, - cat(cst$59,cat(spaces$0,replace_leading_tab(msg$0)))]} - var - msg=ksd[3], - spec=ksd[2], - cutcol=second_word(msg), - kwd_len=caml_ml_string_length(_pm_), - diff=(len$0 - kwd_len | 0) - cutcol | 0; - if(0 < diff) - {var - spaces=make$1(diff,32), - prefix=sub$0(replace_leading_tab(msg),0,cutcol), - suffix= - sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0); - return [0,_pm_,spec,cat(prefix,cat(spaces,suffix))]} - return [0,_pm_,spec,replace_leading_tab(msg)]} - return ksd}, - completed)} - function read_aux(trim,sep,file) - {var ic=open_in_bin(file),buf=create$2(200),words=[0,0]; - function stash(param) - {var s=contents(buf); - if(trim) - {var len=caml_ml_string_length(s),switch$0=0; - if(0 < len && 13 === caml_string_get(s,len - 1 | 0)) - {var _pl_=sub$0(s,0,len - 1 | 0);switch$0 = 1} - if(! switch$0)var _pl_=s; - var word=_pl_} - else - var word=s; - words[1] = [0,word,words[1]]; - return clear$1(buf)} - try - {for(;;) - {var c=caml_ml_input_char(ic); - if(c === sep)stash(0);else add_char(buf,c); - continue}} - catch(_pk_) - {_pk_ = caml_wrap_exception(_pk_); - if(_pk_ === End_of_file) - {if(0 < buf[2])stash(0); - caml_ml_close_channel(ic); - return of_list(rev(words[1]))} - throw _pk_}} - var _bf_=10,_bg_=1; - function read_arg(_pj_){return read_aux(_bg_,_bf_,_pj_)} - var _bh_=0,_bi_=0; - function read_arg0(_pi_){return read_aux(_bi_,_bh_,_pi_)} - function write_aux(sep,file,args) - {var oc=open_out_bin(file); - iter$5(function(s){return caml_call2(fprintf(oc,_bj_),s,sep)},args); - return close_out(oc)} - var _bk_=10; - function write_arg(_pg_,_ph_){return write_aux(_bk_,_pg_,_ph_)} - var _bl_=0; - function write_arg0(_pe_,_pf_){return write_aux(_bl_,_pe_,_pf_)} - var - Stdlib_Arg= - [0, - parse, - parse_dynamic, - parse_argv, - parse_argv_dynamic, - parse_and_expand_argv_dynamic, - parse_expand, - Help, - Bad, - usage, - usage_string, - align, - current, - read_arg, - read_arg0, - write_arg, - write_arg0]; - caml_register_global(793,Stdlib_Arg,"Stdlib__Arg"); - var - Stdlib_Atomic= - [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; - caml_register_global(794,Stdlib_Atomic,"Stdlib__Atomic"); - var printers=[0,0]; - function field(x,i) - {var f=x[1 + i]; - return is_block(f) - ?caml_obj_tag(f) === 252 - ?caml_call1(sprintf(_bm_),f) - :caml_obj_tag(f) === 253?to_string(f):cst$60 - :caml_call1(sprintf(_bn_),f)} - function other_fields(x,i) - {if(x.length - 1 <= i)return cst$61; - var _pc_=other_fields(x,i + 1 | 0),_pd_=field(x,i); - return caml_call2(sprintf(_bo_),_pd_,_pc_)} - function use_printers(x) - {function conv(param) - {var param$0=param; - for(;;) - {if(param$0) - {var tl=param$0[2],hd=param$0[1]; - try - {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} - catch(_pb_){} - if(switch$0 && val){var s=val[1];return [0,s]} - var param$0=tl; - continue} - return 0}} - return conv(printers[1])} - function to_string_default(x) - {if(x === Out_of_memory)return cst_Out_of_memory; - if(x === Stack_overflow)return cst_Stack_overflow; - if(x[1] === Match_failure) - {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1]; - return caml_call5 - (sprintf(locfmt), - file, - line, - char$0, - char$0 + 5 | 0, - cst_Pattern_matching_failed)} - if(x[1] === Assert_failure) - {var - match$1=x[2], - char$1=match$1[3], - line$0=match$1[2], - file$0=match$1[1]; - return caml_call5 - (sprintf(locfmt), - file$0, - line$0, - char$1, - char$1 + 6 | 0, - cst_Assertion_failed)} - if(x[1] === Undefined_recursive_module) - {var - match$2=x[2], - char$2=match$2[3], - line$1=match$2[2], - file$1=match$2[1]; - return caml_call5 - (sprintf(locfmt), - file$1, - line$1, - char$2, - char$2 + 6 | 0, - cst_Undefined_recursive_module)} - if(0 === caml_obj_tag(x)) - {var constructor=x[1][1],match=x.length - 1; - if(2 < match >>> 0) - var - _o9_=other_fields(x,2), - _o__=field(x,1), - _pa_=caml_call2(sprintf(_bp_),_o__,_o9_); - else - switch(match) - {case 0:var _pa_=cst$62;break; - case 1:var _pa_=cst$63;break; - default:var _o$_=field(x,1),_pa_=caml_call1(sprintf(_bq_),_o$_)} - return cat(constructor,_pa_)} - return x[1]} - function to_string$6(e) - {var match=use_printers(e); - if(match){var s=match[1];return s} - return to_string_default(e)} - function print(fct,arg) - {try - {var _o8_=caml_call1(fct,arg);return _o8_} - catch(x) - {x = caml_wrap_exception(x); - var _o7_=to_string$6(x); - caml_call1(eprintf(_br_),_o7_); - caml_ml_flush(stderr); - throw x}} - function catch$0(fct,arg) - {try - {var _o6_=caml_call1(fct,arg);return _o6_} - catch(x) - {x = caml_wrap_exception(x); - caml_ml_flush(stdout); - var _o5_=to_string$6(x); - caml_call1(eprintf(_bs_),_o5_); - return exit(2)}} - function raw_backtrace_entries(bt){return bt} - function convert_raw_backtrace(bt) - {return [0,runtime.caml_convert_raw_backtrace(bt)]} - function format_backtrace_slot(pos,slot) - {function info(is_raise) - {return is_raise - ?0 === pos?cst_Raised_at:cst_Re_raised_at - :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from} - if(0 === slot[0]) - {var - _oX_=slot[5], - _oY_=slot[4], - _oZ_=slot[3], - _o0_=slot[6]?cst_inlined:cst$64, - _o1_=slot[2], - _o2_=slot[7], - _o3_=info(slot[1]); - return [0, - caml_call7(sprintf(_bt_),_o3_,_o2_,_o1_,_o0_,_oZ_,_oY_,_oX_)]} - if(slot[1])return 0; - var _o4_=info(0); - return [0,caml_call1(sprintf(_bu_),_o4_)]} - function print_raw_backtrace(outchan,raw_backtrace) - {var backtrace=convert_raw_backtrace(raw_backtrace); - if(backtrace) - {var a=backtrace[1],_oV_=a.length - 1 - 1 | 0,_oU_=0; - if(! (_oV_ < 0)) - {var i=_oU_; - for(;;) - {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); - if(match){var str=match[1];caml_call1(fprintf(outchan,_bv_),str)} - var _oW_=i + 1 | 0; - if(_oV_ !== i){var i=_oW_;continue} - break}} - return 0} - return fprintf(outchan,_bw_)} - function print_backtrace(outchan) - {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))} - function raw_backtrace_to_string(raw_backtrace) - {var backtrace=convert_raw_backtrace(raw_backtrace); - if(backtrace) - {var a=backtrace[1],b=create$2(1024),_oS_=a.length - 1 - 1 | 0,_oR_=0; - if(! (_oS_ < 0)) - {var i=_oR_; - for(;;) - {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); - if(match){var str=match[1];caml_call1(bprintf(b,_bx_),str)} - var _oT_=i + 1 | 0; - if(_oS_ !== i){var i=_oT_;continue} - break}} - return contents(b)} - return cst_Program_not_linked_with_g_} - function backtrace_slot_is_raise(param) - {return 0 === param[0]?param[1]:param[1]} - function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0} - function backtrace_slot_location(param) - {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0} - function backtrace_slot_defname(param) - {if(0 === param[0] && caml_string_notequal(param[7],cst$65)) - return [0,param[7]]; - return 0} - function backtrace_slots(raw_backtrace) - {var match=convert_raw_backtrace(raw_backtrace); - if(match) - {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; - for(;;) - {if(-1 === i) - var _oQ_=0; - else - {var - param=caml_check_bound(backtrace,i)[1 + i], - _oP_=0 === param[0]?1:0; - if(! _oP_){var i$0=i - 1 | 0,i=i$0;continue} - var _oQ_=_oP_} - return _oQ_?[0,backtrace]:0}} - return 0} - function backtrace_slots_of_raw_entry(entry) - {return backtrace_slots([0,entry])} - function raw_backtrace_length(bt){return bt.length - 1} - function get_backtrace(param) - {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))} - function register_printer(fn) - {for(;;) - {var - old_printers=printers[1], - new_printers=[0,fn,old_printers], - success=compare_and_set(printers,old_printers,new_printers), - _oO_=1 - success; - if(_oO_)continue; - return _oO_}} - function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x} - function exn_slot_id(x){var slot=exn_slot(x);return slot[2]} - function exn_slot_name(x){var slot=exn_slot(x);return slot[1]} - var errors=_by_.slice(); - function default_uncaught_exception_han(exn,raw_backtrace) - {var _oM_=to_string$6(exn); - caml_call1(eprintf(_bz_),_oM_); - print_raw_backtrace(stderr,raw_backtrace); - var status=runtime.caml_ml_debug_info_status(0); - if(status < 0) - {var _oN_=abs(status); - prerr_endline(caml_check_bound(errors,_oN_)[1 + _oN_])} - return caml_ml_flush(stderr)} - var uncaught_exception_handler=[0,default_uncaught_exception_han]; - function set_uncaught_exception_handler(fn) - {uncaught_exception_handler[1] = fn;return 0} - var empty_backtrace=[0]; - function handle_uncaught_exception(exn,debugger_in_use) - {try - {try - {var - raw_backtrace= - debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); - try {do_at_exit(0)}catch(_oL_){} - try - {var - _oH_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), - _oG_=_oH_} - catch(exn$0) - {exn$0 = caml_wrap_exception(exn$0); - var - raw_backtrace$0=caml_get_exception_raw_backtra(0), - _oE_=to_string$6(exn); - caml_call1(eprintf(_bA_),_oE_); - print_raw_backtrace(stderr,raw_backtrace); - var _oF_=to_string$6(exn$0); - caml_call1(eprintf(_bB_),_oF_); - print_raw_backtrace(stderr,raw_backtrace$0); - var _oG_=caml_ml_flush(stderr)} - var _oI_=_oG_} - catch(_oK_) - {_oK_ = caml_wrap_exception(_oK_); - if(_oK_ !== Out_of_memory)throw _oK_; - var _oI_=prerr_endline(cst_Fatal_error_out_of_memory_)} - return _oI_} - catch(_oJ_){return 0}} - caml_register_named_value - (caml_string_of_jsbytes("Printexc.handle_uncaught_exception"), - handle_uncaught_exception); - function _bC_(_oD_){return runtime.caml_raw_backtrace_next_slot(_oD_)} - function _bD_(_oC_){return runtime.caml_convert_raw_backtrace_slot(_oC_)} - function _bE_(_oB_,_oA_) - {return runtime.caml_raw_backtrace_slot(_oB_,_oA_)} - var - _bF_= - [0, - backtrace_slot_is_raise, - backtrace_slot_is_inline, - backtrace_slot_location, - backtrace_slot_defname, - format_backtrace_slot]; - function _bG_(_oz_){return caml_get_exception_raw_backtra(_oz_)} - function _bH_(_oy_){return runtime.caml_backtrace_status(_oy_)} - var - Stdlib_Printexc= - [0, - to_string$6, - to_string_default, - print, - catch$0, - print_backtrace, - get_backtrace, - function(_ox_){return runtime.caml_record_backtrace(_ox_)}, - _bH_, - register_printer, - use_printers, - raw_backtrace_entries, - _bG_, - print_raw_backtrace, - raw_backtrace_to_string, - default_uncaught_exception_han, - set_uncaught_exception_handler, - backtrace_slots, - backtrace_slots_of_raw_entry, - _bF_, - raw_backtrace_length, - _bE_, - _bD_, - _bC_, - exn_slot_id, - exn_slot_name]; - caml_register_global(795,Stdlib_Printexc,"Stdlib__Printexc"); - function const$0(c,param){return c} - function flip(f,x,y){return caml_call2(f,y,x)} - function negate(p,v){return 1 - caml_call1(p,v)} - var - Finally_raised= - [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)]; - register_printer - (function(param) - {if(param[1] === Finally_raised) - {var exn=param[2]; - return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]} - return 0}); - function protect(finally$0,work) - {function finally_no_exn(param) - {try - {var _ow_=caml_call1(finally$0,0);return _ow_} - catch(e) - {e = caml_wrap_exception(e); - var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; - caml_restore_raw_backtrace(exn,bt); - throw exn}} - try - {var result=caml_call1(work,0)} - catch(work_exn) - {work_exn = caml_wrap_exception(work_exn); - var work_bt=caml_get_exception_raw_backtra(0); - finally_no_exn(0); - caml_restore_raw_backtrace(work_exn,work_bt); - throw work_exn} - finally_no_exn(0); - return result} - var Stdlib_Fun=[0,const$0,flip,negate,protect,Finally_raised]; - caml_register_global(796,Stdlib_Fun,"Stdlib__Fun"); - function print_stat(c) - {var st=runtime.caml_gc_stat(0),_oe_=st[4]; - caml_call1(fprintf(c,_bI_),_oe_); - var _of_=st[5]; - caml_call1(fprintf(c,_bJ_),_of_); - var _og_=st[14]; - caml_call1(fprintf(c,_bK_),_og_); - var _oh_=st[17]; - caml_call1(fprintf(c,_bL_),_oh_); - fprintf(c,_bM_); - var - _oi_=st[1], - l1=caml_ml_string_length(caml_call1(sprintf(_bN_),_oi_)), - _oj_=st[1]; - caml_call2(fprintf(c,_bO_),l1,_oj_); - var _ok_=st[2]; - caml_call2(fprintf(c,_bP_),l1,_ok_); - var _ol_=st[3]; - caml_call2(fprintf(c,_bQ_),l1,_ol_); - fprintf(c,_bR_); - var - _om_=st[15], - l2=caml_ml_string_length(caml_call1(sprintf(_bS_),_om_)), - _on_=st[15]; - caml_call2(fprintf(c,_bT_),l2,_on_); - var _oo_=st[6]; - caml_call2(fprintf(c,_bU_),l2,_oo_); - var _op_=st[8]; - caml_call2(fprintf(c,_bV_),l2,_op_); - var _oq_=st[10]; - caml_call2(fprintf(c,_bW_),l2,_oq_); - var _or_=st[12]; - caml_call2(fprintf(c,_bX_),l2,_or_); - var _os_=st[13]; - caml_call2(fprintf(c,_bY_),l2,_os_); - fprintf(c,_bZ_); - var _ot_=st[9]; - caml_call1(fprintf(c,_b0_),_ot_); - var _ou_=st[11]; - caml_call1(fprintf(c,_b1_),_ou_); - var _ov_=st[7]; - return caml_call1(fprintf(c,_b2_),_ov_)} - function allocated_bytes(param) - {var - match=runtime.caml_gc_counters(0), - ma=match[3], - pro=match[2], - mi=match[1]; - return (mi + ma - pro) * 4} - function create_alarm(f){return [0,1]} - function delete_alarm(a){a[1] = 0;return 0} - function _b3_(param){return 0} - function _b4_(param){return 0} - function _b5_(param){return 0} - function _b6_(param){return 0} - var null_tracker=[0,function(param){return 0},_b6_,_b5_,_b4_,_b3_]; - function start(sampling_rate,opt,tracker) - {if(opt) - var sth=opt[1],callstack_size=sth; - else - var callstack_size=max_int; - return runtime.caml_memprof_start(sampling_rate,callstack_size,tracker)} - var _b7_=[0,null_tracker,start,runtime.caml_memprof_stop]; - function _b8_(_od_){return runtime.caml_final_release(_od_)} - function _b9_(_oc_,_ob_) - {return runtime.caml_final_register_called_without_value(_oc_,_ob_)} - var - Stdlib_Gc= - [0, - print_stat, - allocated_bytes, - function(_oa_,_n$_){return runtime.caml_final_register(_oa_,_n$_)}, - _b9_, - _b8_, - create_alarm, - delete_alarm, - _b7_]; - caml_register_global(797,Stdlib_Gc,"Stdlib__Gc"); - function string(str) - {return caml_md5_string(str,0,caml_ml_string_length(str))} - function bytes(b){return string(caml_string_of_bytes(b))} - function substring(str,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_string_length(str) - len | 0) < ofs)) - return caml_md5_string(str,ofs,len); - return invalid_arg(cst_Digest_substring)} - function subbytes(b,ofs,len) - {return substring(caml_string_of_bytes(b),ofs,len)} - function file(filename) - {var ic=open_in_bin(filename); - try - {var d=runtime.caml_md5_chan(ic,-1)} - catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e} - caml_ml_close_channel(ic); - return d} - function output$0(chan,digest){return output_string(chan,digest)} - function input$0(chan){return really_input_string(chan,16)} - function char_hex(n){var _n__=10 <= n?87:48;return n + _n__ | 0} - function to_hex(d) - {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); - var result=caml_create_bytes(32),i=0; - for(;;) - {var x=caml_string_get(d,i); - caml_bytes_unsafe_set(result,i * 2 | 0,char_hex(x >>> 4 | 0)); - caml_bytes_unsafe_set(result,(i * 2 | 0) + 1 | 0,char_hex(x & 15)); - var _n9_=i + 1 | 0; - if(15 !== i){var i=_n9_;continue} - return caml_string_of_bytes(result)}} - function from_hex(s) - {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); - function digit(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Invalid_argument,cst_Digest_from_hex$0]} - var result=caml_create_bytes(16),i=0; - for(;;) - {var i$0=2 * i | 0,_n7_=digit(caml_string_get(s,i$0 + 1 | 0)); - caml_bytes_set - (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _n7_ | 0)); - var _n8_=i + 1 | 0; - if(15 !== i){var i=_n8_;continue} - return caml_string_of_bytes(result)}} - var - Stdlib_Digest= - [0, - compare$8, - equal$8, - string, - bytes, - substring, - subbytes, - file, - output$0, - input$0, - to_hex, - from_hex]; - caml_register_global(798,Stdlib_Digest,"Stdlib__Digest"); - function new_state(param){return [0,caml_make_vect(55,0),0]} - function assign(st1,st2) - {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0} - function full_init(s,seed) - {var seed$0=0 === seed.length - 1?[0,0]:seed,l=seed$0.length - 1,i$0=0; - for(;;) - {caml_check_bound(s[1],i$0)[1 + i$0] = i$0; - var _n6_=i$0 + 1 | 0; - if(54 !== i$0){var i$0=_n6_;continue} - var accu=[0,cst_x$1],_n2_=54 + max$1(55,l) | 0,_n1_=0; - if(! (_n2_ < 0)) - {var i=_n1_; - for(;;) - {var - j=i % 55 | 0, - k=caml_mod(i,l), - x=caml_check_bound(seed$0,k)[1 + k]; - accu[1] = string(cat(accu[1],caml_string_of_jsbytes("" + x))); - var - _n3_=accu[1], - _nX_=caml_string_get(_n3_,3) << 24, - _nY_=caml_string_get(_n3_,2) << 16, - _nZ_=caml_string_get(_n3_,1) << 8, - _n0_=((caml_string_get(_n3_,0) + _nZ_ | 0) + _nY_ | 0) + _nX_ | 0, - _n4_=(caml_check_bound(s[1],j)[1 + j] ^ _n0_) & 1073741823; - caml_check_bound(s[1],j)[1 + j] = _n4_; - var _n5_=i + 1 | 0; - if(_n2_ !== i){var i=_n5_;continue} - break}} - s[2] = 0; - return 0}} - function make$3(seed) - {var result=new_state(0);full_init(result,seed);return result} - function make_self_init(param){return make$3(caml_sys_random_seed(0))} - function copy$5(s){var result=new_state(0);assign(result,s);return result} - function bits(s) - {s[2] = (s[2] + 1 | 0) % 55 | 0; - var - _nU_=s[2], - curval=caml_check_bound(s[1],_nU_)[1 + _nU_], - _nV_=(s[2] + 24 | 0) % 55 | 0, - newval= - caml_check_bound(s[1],_nV_)[1 + _nV_] - + - (curval ^ (curval >>> 25 | 0) & 31) - | - 0, - newval30=newval & 1073741823, - _nW_=s[2]; - caml_check_bound(s[1],_nW_)[1 + _nW_] = newval30; - return newval30} - function intaux(s,n) - {for(;;) - {var r=bits(s),v=caml_mod(r,n); - if(((1073741823 - n | 0) + 1 | 0) < (r - v | 0))continue; - return v}} - function int$0(s,bound) - {if(! (1073741823 < bound) && 0 < bound)return intaux(s,bound); - return invalid_arg(cst_Random_int)} - function full_int(s,bound) - {if(0 < bound) - {if(1073741823 < bound) - for(;;) - {var b1=bits(s),b2=bits(s); - if(bound <= 2147483647) - var bpos=(b2 & 1073725440) << 1 | b1 >>> 15 | 0,r=bpos; - else - var - b3=bits(s), - bpos$0= - ((b3 & 1073741312) << 12 | b2 >>> 9 | 0) - << - 20 - | - b1 - >>> - 10 - | - 0, - r=bpos$0; - var v=caml_mod(r,bound); - if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue; - return v} - return intaux(s,bound)} - return invalid_arg(cst_Random_full_int)} - function int32(s,bound) - {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32); - for(;;) - {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound); - if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0)) - continue; - return v}} - function int64(s,bound) - {if(caml_lessequal(bound,_b$_))return invalid_arg(cst_Random_int64); - for(;;) - {var - b1=caml_int64_of_int32(bits(s)), - b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30), - b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60), - r=caml_int64_or(b1,caml_int64_or(b2,b3)), - v=runtime.caml_int64_mod(r,bound); - if - (caml_greaterthan - (caml_int64_sub(r,v), - caml_int64_add(caml_int64_sub(max_int$2,bound),_b__))) - continue; - return v}} - function nativeint(s,bound){return int32(s,bound)} - function float$0(s,bound) - {var r1=bits(s),r2=bits(s); - return (r1 / 1073741824. + r2) / 1073741824. * bound} - function bool(s){return 0 === (bits(s) & 1)?1:0} - var default$0=[0,_ca_.slice(),0]; - function bits$0(param){return bits(default$0)} - function int$1(bound){return int$0(default$0,bound)} - function full_int$0(bound){return full_int(default$0,bound)} - function int32$0(bound){return int32(default$0,bound)} - function nativeint$0(bound){return nativeint(default$0,bound)} - function int64$0(bound){return int64(default$0,bound)} - function float$1(scale){return float$0(default$0,scale)} - function bool$0(param){return bool(default$0)} - function full_init$0(seed){return full_init(default$0,seed)} - function init$4(seed){return full_init(default$0,[0,seed])} - function self_init(param){return full_init$0(caml_sys_random_seed(0))} - function get_state(param){return copy$5(default$0)} - function set_state(s){return assign(default$0,s)} - var - _cb_= - [0, - make$3, - make_self_init, - copy$5, - bits, - int$0, - full_int, - int32, - nativeint, - int64, - float$0, - bool], - Stdlib_Random= - [0, - init$4, - full_init$0, - self_init, - bits$0, - int$1, - full_int$0, - int32$0, - nativeint$0, - int64$0, - float$1, - bool$0, - _cb_, - get_state, - set_state]; - caml_register_global(799,Stdlib_Random,"Stdlib__Random"); - function ongoing_traversal(h) - {var _nS_=h.length - 1 < 4?1:0,_nT_=_nS_ || (h[4] < 0?1:0);return _nT_} - function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0} - try - {var _cX_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_cX_} - catch(_nQ_) - {_nQ_ = caml_wrap_exception(_nQ_); - if(_nQ_ !== Not_found)throw _nQ_; - try - {var _cW_=caml_sys_getenv(cst_CAMLRUNPARAM),_cc_=_cW_} - catch(_nR_) - {_nR_ = caml_wrap_exception(_nR_); - if(_nR_ !== Not_found)throw _nR_; - var _cc_=cst$66} - var params=_cc_} - var - randomized_default=contains$0(params,82), - randomized=[0,randomized_default]; - function randomize(param){randomized[1] = 1;return 0} - function is_randomized(param){return randomized[1]} - var prng=[246,function(_nP_){return caml_call1(_cb_[2],0)}]; - function power_2_above(x,n) - {var x$0=x; - for(;;) - {if(n <= x$0)return x$0; - if(max_array_length < (x$0 * 2 | 0))return x$0; - var x$1=x$0 * 2 | 0,x$0=x$1; - continue}} - function create$3(opt,initial_size) - {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; - var s=power_2_above(16,initial_size); - if(random) - var - _nN_=caml_obj_tag(prng), - _nO_=250 === _nN_?prng[1]:246 === _nN_?force_lazy_block(prng):prng, - seed=caml_call1(_cb_[4],_nO_); - else - var seed=0; - return [0,0,caml_make_vect(s,0),seed,s]} - function clear$2(h) - {var _nM_=0 < h[1]?1:0; - return _nM_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_nM_} - function reset$0(h) - {var len=h[2].length - 1; - if(4 <= h.length - 1 && len !== abs(h[4])) - {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0} - return clear$2(h)} - function copy_bucketlist(param) - {if(param) - {var - key=param[1], - data=param[2], - next=param[3], - prec$0=[0,key,data,next], - prec=prec$0, - param$0=next; - for(;;) - {if(param$0) - {var - key$0=param$0[1], - data$0=param$0[2], - next$0=param$0[3], - r=[0,key$0,data$0,next$0]; - prec[3] = r; - var prec=r,param$0=next$0; - continue} - return prec$0}} - return 0} - function copy$6(init) - {var _nJ_=init[4],_nK_=init[3],_nL_=map$6(copy_bucketlist,init[2]); - return [0,init[1],_nL_,_nK_,_nJ_]} - function length$4(h){return h[1]} - function insert_all_buckets(indexfun,inplace,odata,ndata) - {var - nsize=ndata.length - 1, - ndata_tail=caml_make_vect(nsize,0), - _nD_=odata.length - 1 - 1 | 0, - _nC_=0; - if(! (_nD_ < 0)) - {var i$0=_nC_; - a: - for(;;) - {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; - for(;;) - {if(cell) - {var - key=cell[1], - data=cell[2], - next=cell[3], - cell$0=inplace?cell:[0,key,data,0], - nidx=caml_call1(indexfun,key), - match=caml_check_bound(ndata_tail,nidx)[1 + nidx]; - if(match) - match[3] = cell$0; - else - caml_check_bound(ndata,nidx)[1 + nidx] = cell$0; - caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0; - var cell=next; - continue} - var _nI_=i$0 + 1 | 0; - if(_nD_ !== i$0){var i$0=_nI_;continue a} - break} - break}} - if(inplace) - {var _nF_=nsize - 1 | 0,_nE_=0; - if(! (_nF_ < 0)) - {var i=_nE_; - for(;;) - {var match$0=caml_check_bound(ndata_tail,i)[1 + i]; - if(match$0)match$0[3] = 0; - var _nH_=i + 1 | 0; - if(_nF_ !== i){var i=_nH_;continue} - break}} - var _nG_=0} - else - var _nG_=inplace; - return _nG_} - function resize$0(indexfun,h) - {var - odata=h[2], - osize=odata.length - 1, - nsize=osize * 2 | 0, - _nB_=nsize < max_array_length?1:0; - if(_nB_) - {var ndata=caml_make_vect(nsize,0),inplace=1 - ongoing_traversal(h); - h[2] = ndata; - return insert_all_buckets(caml_call1(indexfun,h),inplace,odata,ndata)} - return _nB_} - function iter$10(f,h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var key=param$0[1],data=param$0[2],next=param$0[3]; - caml_call2(f,key,data); - var param$0=next; - continue} - return 0}} - var old_trav=ongoing_traversal(h); - if(1 - old_trav)flip_ongoing_traversal(h); - try - {var d=h[2],_nx_=d.length - 1 - 1 | 0,_nw_=0; - if(! (_nx_ < 0)) - {var i=_nw_; - for(;;) - {do_bucket(caml_check_bound(d,i)[1 + i]); - var _nA_=i + 1 | 0; - if(_nx_ !== i){var i=_nA_;continue} - break}} - var _ny_=1 - old_trav,_nz_=_ny_?flip_ongoing_traversal(h):_ny_; - return _nz_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function filter_map_inplace_bucket(f,h,i,prec,slot) - {var prec$0=prec,slot$0=slot; - for(;;) - {if(slot$0) - {var - key=slot$0[1], - data=slot$0[2], - next=slot$0[3], - match=caml_call2(f,key,data); - if(match) - {var data$0=match[1]; - if(prec$0) - prec$0[3] = slot$0; - else - caml_check_bound(h[2],i)[1 + i] = slot$0; - slot$0[2] = data$0; - var prec$0=slot$0,slot$0=next; - continue} - h[1] = h[1] - 1 | 0; - var slot$0=next; - continue} - return prec$0 - ?(prec$0[3] = 0,0) - :(caml_check_bound(h[2],i)[1 + i] = 0,0)}} - function filter_map_inplace(f,h) - {var d=h[2],old_trav=ongoing_traversal(h); - if(1 - old_trav)flip_ongoing_traversal(h); - try - {var _ns_=d.length - 1 - 1 | 0,_nr_=0; - if(! (_ns_ < 0)) - {var i=_nr_; - for(;;) - {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]); - var _nv_=i + 1 | 0; - if(_ns_ !== i){var i=_nv_;continue} - break}} - var _nt_=1 - old_trav,_nu_=_nt_?flip_ongoing_traversal(h):_nt_; - return _nu_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function fold$4(f,h,init) - {function do_bucket(b,accu) - {var b$0=b,accu$0=accu; - for(;;) - {if(b$0) - {var - key=b$0[1], - data=b$0[2], - next=b$0[3], - accu$1=caml_call3(f,key,data,accu$0), - b$0=next, - accu$0=accu$1; - continue} - return accu$0}} - var old_trav=ongoing_traversal(h); - if(1 - old_trav)flip_ongoing_traversal(h); - try - {var d=h[2],accu=[0,init],_nn_=d.length - 1 - 1 | 0,_nm_=0; - if(! (_nn_ < 0)) - {var i=_nm_; - for(;;) - {var _np_=accu[1]; - accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_np_); - var _nq_=i + 1 | 0; - if(_nn_ !== i){var i=_nq_;continue} - break}} - if(1 - old_trav)flip_ongoing_traversal(h); - var _no_=accu[1]; - return _no_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function bucket_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[3], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function stats(h) - {var - _ni_=h[2], - _nj_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_nj_,_ni_), - histo=caml_make_vect(mbl + 1 | 0,0), - _nk_=h[2]; - iter$5 - (function(b) - {var - l=bucket_length(0,b), - _nl_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _nl_; - return 0}, - _nk_); - return [0,h[1],h[2].length - 1,mbl,histo]} - function to_seq$9(tbl) - {var tbl_data=tbl[2]; - function aux(i,buck,param) - {var i$0=i,buck$0=buck; - for(;;) - {if(buck$0) - {var key=buck$0[1],data=buck$0[2],next=buck$0[3]; - return [0,[0,key,data],function(_nh_){return aux(i$0,next,_nh_)}]} - if(i$0 === tbl_data.length - 1)return 0; - var - buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], - i$1=i$0 + 1 | 0, - i$0=i$1, - buck$0=buck$1; - continue}} - var _ne_=0,_nf_=0; - return function(_ng_){return aux(_nf_,_ne_,_ng_)}} - function to_seq_keys(m) - {var _na_=to_seq$9(m); - function _nb_(_nd_){return _nd_[1]} - return function(_nc_){return map(_nb_,_na_,_nc_)}} - function to_seq_values(m) - {var _m8_=to_seq$9(m); - function _m9_(_m$_){return _m$_[2]} - return function(_m__){return map(_m9_,_m8_,_m__)}} - function MakeSeeded(H) - {function key_index(h,key) - {var _m7_=h[2].length - 1 - 1 | 0; - return caml_call2(H[2],h[3],key) & _m7_} - function add(h,key,data) - {var - i=key_index(h,key), - bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; - caml_check_bound(h[2],i)[1 + i] = bucket; - h[1] = h[1] + 1 | 0; - var _m6_=h[2].length - 1 << 1 < h[1]?1:0; - return _m6_?resize$0(key_index,h):_m6_} - function remove(h,key) - {var - i=key_index(h,key), - c$0=caml_check_bound(h[2],i)[1 + i], - prec=0, - c=c$0; - for(;;) - {if(c) - {var k=c[1],next=c[3]; - if(caml_call2(H[1],k,key)) - {h[1] = h[1] - 1 | 0; - return prec - ?(prec[3] = next,0) - :(caml_check_bound(h[2],i)[1 + i] = next,0)} - var prec=c,c=next; - continue} - return 0}} - function find(h,key) - {var _m5_=key_index(h,key),match=caml_check_bound(h[2],_m5_)[1 + _m5_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(caml_call2(H[1],key,k1))return d1; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(caml_call2(H[1],key,k2))return d2; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(caml_call2(H[1],key,k3))return d3; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(caml_call2(H[1],key,k))return data; - var param=next; - continue} - throw Not_found}} - throw Not_found} - throw Not_found} - throw Not_found} - function find_opt(h,key) - {var _m4_=key_index(h,key),match=caml_check_bound(h[2],_m4_)[1 + _m4_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(caml_call2(H[1],key,k1))return [0,d1]; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(caml_call2(H[1],key,k2))return [0,d2]; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(caml_call2(H[1],key,k3))return [0,d3]; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(caml_call2(H[1],key,k))return [0,data]; - var param=next; - continue} - return 0}} - return 0} - return 0} - return 0} - function find_all(h,key) - {function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var k=param$0[1],d=param$0[2],next=param$0[3]; - if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)]; - var param$0=next; - continue} - return 0}} - var _m3_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_m3_)[1 + _m3_])} - function replace(h,key,data) - {var - i=key_index(h,key), - param$0=caml_check_bound(h[2],i)[1 + i], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3]; - if(! caml_call2(H[1],k,key)){var param=next;continue} - param[1] = key; - param[2] = data; - var _m0_=0} - else - var _m0_=1; - if(_m0_) - {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; - h[1] = h[1] + 1 | 0; - var _m1_=h[2].length - 1 << 1 < h[1]?1:0; - if(_m1_)return resize$0(key_index,h); - var _m2_=_m1_} - else - var _m2_=_m0_; - return _m2_}} - function mem(h,key) - {var - _mZ_=key_index(h,key), - param$0=caml_check_bound(h[2],_mZ_)[1 + _mZ_], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3],_mY_=caml_call2(H[1],k,key); - if(_mY_)return _mY_; - var param=next; - continue} - return 0}} - function add_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} - return [0, - create$3, - clear$2, - reset$0, - copy$6, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter$10, - filter_map_inplace, - fold$4, - length$4, - stats, - to_seq$9, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq]} - function Make$0(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - _mX_=include[1]; - function create(sz){return caml_call2(_mX_,_cd_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq]} - function hash$1(x){return caml_hash(10,100,0,x)} - function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)} - function seeded_hash(seed,x){return caml_hash(10,100,seed,x)} - function key_index(h,key) - {return 4 <= h.length - 1 - ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0) - :invalid_arg(cst_Hashtbl_unsupported_hash_t)} - function add$0(h,key,data) - {var - i=key_index(h,key), - bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; - caml_check_bound(h[2],i)[1 + i] = bucket; - h[1] = h[1] + 1 | 0; - var _mW_=h[2].length - 1 << 1 < h[1]?1:0; - return _mW_?resize$0(key_index,h):_mW_} - function remove(h,key) - {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0; - for(;;) - {if(c) - {var k=c[1],next=c[3]; - if(0 === caml_compare(k,key)) - {h[1] = h[1] - 1 | 0; - return prec - ?(prec[3] = next,0) - :(caml_check_bound(h[2],i)[1 + i] = next,0)} - var prec=c,c=next; - continue} - return 0}} - function find$0(h,key) - {var _mV_=key_index(h,key),match=caml_check_bound(h[2],_mV_)[1 + _mV_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(0 === caml_compare(key,k1))return d1; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(0 === caml_compare(key,k2))return d2; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(0 === caml_compare(key,k3))return d3; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(0 === caml_compare(key,k))return data; - var param=next; - continue} - throw Not_found}} - throw Not_found} - throw Not_found} - throw Not_found} - function find_opt$1(h,key) - {var _mU_=key_index(h,key),match=caml_check_bound(h[2],_mU_)[1 + _mU_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(0 === caml_compare(key,k1))return [0,d1]; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(0 === caml_compare(key,k2))return [0,d2]; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(0 === caml_compare(key,k3))return [0,d3]; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(0 === caml_compare(key,k))return [0,data]; - var param=next; - continue} - return 0}} - return 0} - return 0} - return 0} - function find_all$0(h,key) - {function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var k=param$0[1],data=param$0[2],next=param$0[3]; - if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)]; - var param$0=next; - continue} - return 0}} - var _mT_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_mT_)[1 + _mT_])} - function replace(h,key,data) - {var - i=key_index(h,key), - param$0=caml_check_bound(h[2],i)[1 + i], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3]; - if(0 !== caml_compare(k,key)){var param=next;continue} - param[1] = key; - param[2] = data; - var _mQ_=0} - else - var _mQ_=1; - if(_mQ_) - {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; - h[1] = h[1] + 1 | 0; - var _mR_=h[2].length - 1 << 1 < h[1]?1:0; - if(_mR_)return resize$0(key_index,h); - var _mS_=_mR_} - else - var _mS_=_mQ_; - return _mS_}} - function mem$2(h,key) - {var - _mP_=key_index(h,key), - param$0=caml_check_bound(h[2],_mP_)[1 + _mP_], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3],_mO_=0 === caml_compare(k,key)?1:0; - if(_mO_)return _mO_; - var param=next; - continue} - return 0}} - function add_seq$2(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add$0(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} - function rebuild(opt,h) - {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; - var s=power_2_above(16,h[2].length - 1); - if(random) - var - _mH_=caml_obj_tag(prng), - _mI_=250 === _mH_?prng[1]:246 === _mH_?force_lazy_block(prng):prng, - seed=caml_call1(_cb_[4],_mI_); - else - var seed=4 <= h.length - 1?h[3]:0; - var - _mJ_=4 <= h.length - 1?h[4]:s, - h$0=[0,h[1],caml_make_vect(s,0),seed,_mJ_], - _mK_=h$0[2], - _mL_=h[2], - _mM_=0; - insert_all_buckets - (function(_mN_){return key_index(h$0,_mN_)},_mM_,_mL_,_mK_); - return h$0} - var - Stdlib_Hashtbl= - [0, - create$3, - clear$2, - reset$0, - copy$6, - add$0, - find$0, - find_opt$1, - find_all$0, - mem$2, - remove, - replace, - iter$10, - filter_map_inplace, - fold$4, - length$4, - randomize, - is_randomized, - rebuild, - stats, - to_seq$9, - to_seq_keys, - to_seq_values, - add_seq$2, - replace_seq, - of_seq$7, - Make$0, - MakeSeeded, - hash$1, - seeded_hash, - hash_param, - caml_hash]; - caml_register_global(800,Stdlib_Hashtbl,"Stdlib__Hashtbl"); - function weak_create(l) - {var _mF_=0 <= l?1:0,_mG_=_mF_?l <= _t_[15]?1:0:_mF_; - if(1 - _mG_)invalid_arg(cst_Weak_create); - return runtime.caml_weak_create(l)} - function length$5(x){return x.length - 1 - 2 | 0} - function raise_if_invalid_offset$0(e,o,msg) - {var _mC_=0 <= o?1:0,_mD_=_mC_?o < length$5(e)?1:0:_mC_,_mE_=1 - _mD_; - return _mE_?invalid_arg(msg):_mE_} - function set$0(e,o,x) - {raise_if_invalid_offset$0(e,o,cst_Weak_set); - if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)} - return caml_ephe_unset_key(e,o)} - function get$1(e,o) - {raise_if_invalid_offset$0(e,o,cst_Weak_get); - return runtime.caml_weak_get(e,o)} - function get_copy(e,o) - {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); - return runtime.caml_weak_get_copy(e,o)} - function check$0(e,o) - {raise_if_invalid_offset$0(e,o,cst_Weak_check); - return runtime.caml_weak_check(e,o)} - function blit$4(e1,o1,e2,o2,l) - {if - (0 - <= - l - && - 0 - <= - o1 - && - ! - ((length$5(e1) - l | 0) < o1) - && - 0 - <= - o2 - && - ! - ((length$5(e2) - l | 0) < o2)) - {var - _mA_=0 !== l?1:0, - _mB_=_mA_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_mA_; - return _mB_} - return invalid_arg(cst_Weak_blit)} - function fill$2(ar,ofs,len,x) - {if(0 <= ofs && 0 <= len && ! ((length$5(ar) - len | 0) < ofs)) - {var _my_=(ofs + len | 0) - 1 | 0; - if(! (_my_ < ofs)) - {var i=ofs; - for(;;) - {set$0(ar,i,x); - var _mz_=i + 1 | 0; - if(_my_ !== i){var i=_mz_;continue} - break}} - return 0} - throw [0,Invalid_argument,cst_Weak_fill]} - function Make$1(H) - {var emptybucket=weak_create(0); - function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)} - var limit=7; - function create(sz) - {var - sz$0=7 <= sz?sz:7, - sz$1=max_array_length < sz$0?max_array_length:sz$0; - return [0, - caml_make_vect(sz$1,emptybucket), - caml_make_vect(sz$1,[0]), - limit, - 0, - 0]} - function clear(t) - {var _mw_=t[1].length - 1 - 1 | 0,_mv_=0; - if(! (_mw_ < 0)) - {var i=_mv_; - for(;;) - {caml_check_bound(t[1],i)[1 + i] = emptybucket; - caml_check_bound(t[2],i)[1 + i] = [0]; - var _mx_=i + 1 | 0; - if(_mw_ !== i){var i=_mx_;continue} - break}} - t[3] = limit; - t[4] = 0; - return 0} - function fold(f,t,init) - {var _mu_=t[1],i=0; - return fold_right$2 - (function(b,accu$1) - {var i$0=i,accu=accu$1; - for(;;) - {if(length$5(b) <= i$0)return accu; - var match=get$1(b,i$0); - if(match) - {var - v=match[1], - accu$0=caml_call2(f,v,accu), - i$1=i$0 + 1 | 0, - i$0=i$1, - accu=accu$0; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _mu_, - init)} - function iter(f,t) - {var _mt_=t[1],i=0; - return iter$5 - (function(b) - {var i$0=i; - for(;;) - {if(length$5(b) <= i$0)return 0; - var match=get$1(b,i$0); - if(match) - {var v=match[1]; - caml_call1(f,v); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _mt_)} - function count_bucket(i,b,accu) - {var i$0=i,accu$0=accu; - for(;;) - {if(length$5(b) <= i$0)return accu$0; - var - _ms_=check$0(b,i$0)?1:0, - accu$1=accu$0 + _ms_ | 0, - i$1=i$0 + 1 | 0, - i$0=i$1, - accu$0=accu$1; - continue}} - function count(t) - {var _mn_=0,_mo_=t[1],_mp_=0; - return fold_right$2 - (function(_mq_,_mr_){return count_bucket(_mp_,_mq_,_mr_)}, - _mo_, - _mn_)} - function add_aux(t,setter,d,h,index) - {var - bucket$0=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$5(bucket$0), - i$3=0; - for(;;) - {if(sz <= i$3) - {var - newsz= - min$1(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0); - if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann); - var - newbucket$0=weak_create(newsz), - newhashes=caml_make_vect(newsz,0); - blit$4(bucket$0,0,newbucket$0,0,sz); - blit$1(hashes,0,newhashes,0,sz); - caml_call3(setter,newbucket$0,sz,d); - caml_check_bound(newhashes,sz)[1 + sz] = h; - caml_check_bound(t[1],index)[1 + index] = newbucket$0; - caml_check_bound(t[2],index)[1 + index] = newhashes; - var _mj_=sz <= t[3]?1:0,_mk_=_mj_?t[3] < newsz?1:0:_mj_; - if(_mk_) - {t[4] = t[4] + 1 | 0; - var i$4=0; - for(;;) - {var - _l$_=t[5], - bucket=caml_check_bound(t[1],_l$_)[1 + _l$_], - _ma_=t[5], - hbucket=caml_check_bound(t[2],_ma_)[1 + _ma_], - n=length$5(bucket), - prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0, - live=count_bucket(0,bucket,0); - if(live <= prev_len) - {var j$2=length$5(bucket) - 1 | 0,i$0=0,j=j$2; - for(;;) - {if(prev_len <= j) - {if(check$0(bucket,i$0)) - {var i$1=i$0 + 1 | 0,i$0=i$1;continue} - if(check$0(bucket,j)) - {blit$4(bucket,j,bucket,i$0,1); - var _mb_=caml_check_bound(hbucket,j)[1 + j]; - caml_check_bound(hbucket,i$0)[1 + i$0] = _mb_; - var j$0=j - 1 | 0,i$2=i$0 + 1 | 0,i$0=i$2,j=j$0; - continue} - var j$1=j - 1 | 0,j=j$1; - continue} - if(0 === prev_len) - {var _mc_=t[5]; - caml_check_bound(t[1],_mc_)[1 + _mc_] = emptybucket; - var _md_=t[5]; - caml_check_bound(t[2],_md_)[1 + _md_] = [0]} - else - {var newbucket=weak_create(prev_len); - blit$4(bucket,0,newbucket,0,prev_len); - var _mg_=t[5]; - caml_check_bound(t[1],_mg_)[1 + _mg_] = newbucket; - var _mh_=sub$1(hbucket,0,prev_len),_mi_=t[5]; - caml_check_bound(t[2],_mi_)[1 + _mi_] = _mh_} - var _me_=t[3] < n?1:0,_mf_=_me_?prev_len <= t[3]?1:0:_me_; - if(_mf_)t[4] = t[4] - 1 | 0; - break}} - t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1); - var _mm_=i$4 + 1 | 0; - if(2 !== i$4){var i$4=_mm_;continue} - break}} - var _ml_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; - if(_ml_) - {var - n$0=t[1].length - 1, - newlen=min$1(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length); - if(n$0 < newlen) - {var newt=create(newlen),_l__=t[1],i=0; - iteri$2 - (function(j,ob) - {var i$0=i; - for(;;) - {if(length$5(ob) <= i$0)return 0; - var match=check$0(ob,i$0); - if(match) - {var - oh=caml_check_bound(t[2],j)[1 + j], - setter$0= - function(i) - {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)} - return setter}, - setter=setter$0(i$0), - h=caml_check_bound(oh,i$0)[1 + i$0]; - add_aux(newt,setter,0,h,get_index(newt,h)); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _l__); - t[1] = newt[1]; - t[2] = newt[2]; - t[3] = newt[3]; - t[4] = newt[4]; - t[5] = caml_mod(t[5],newt[1].length - 1); - return 0} - t[3] = max_int; - t[4] = 0; - return 0} - return _ml_} - if(check$0(bucket$0,i$3)){var i$5=i$3 + 1 | 0,i$3=i$5;continue} - caml_call3(setter,bucket$0,i$3,d); - caml_check_bound(hashes,i$3)[1 + i$3] = h; - return 0}} - function add(t,d) - {var h=caml_call1(H[2],d); - return add_aux(t,set$0,[0,d],h,get_index(t,h))} - function find_or(t,d,ifnotfound) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$5(bucket), - i=0; - for(;;) - {if(sz <= i)return caml_call2(ifnotfound,h,index); - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var match$0=get$1(bucket,i); - if(match$0){var v$0=match$0[1];return v$0} - var i$0=i + 1 | 0,i=i$0; - continue}} - var i$1=i + 1 | 0,i=i$1; - continue} - var i$2=i + 1 | 0,i=i$2; - continue}} - function merge(t,d) - {return find_or - (t, - d, - function(h,index){add_aux(t,set$0,[0,d],h,index);return d})} - function find(t,d) - {return find_or(t,d,function(h,index){throw Not_found})} - function find_opt(t,d) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$5(bucket), - i=0; - for(;;) - {if(sz <= i)return 0; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var v$0=get$1(bucket,i); - if(v$0)return v$0; - var i$0=i + 1 | 0,i=i$0; - continue}} - var i$1=i + 1 | 0,i=i$1; - continue} - var i$2=i + 1 | 0,i=i$2; - continue}} - function find_shadow(t,d,iffound,ifnotfound) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$5(bucket), - i=0; - for(;;) - {if(sz <= i)return ifnotfound; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)} - var i$0=i + 1 | 0,i=i$0; - continue} - var i$1=i + 1 | 0,i=i$1; - continue}} - function remove(t,d) - {var _l9_=0; - return find_shadow(t,d,function(w,i){return set$0(w,i,0)},_l9_)} - function mem(t,d) - {var _l8_=0;return find_shadow(t,d,function(w,i){return 1},_l8_)} - function find_all(t,d) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$5(bucket), - i=0, - accu=0; - for(;;) - {if(sz <= i)return accu; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var match$0=get$1(bucket,i); - if(match$0) - {var - v$0=match$0[1], - accu$0=[0,v$0,accu], - i$0=i + 1 | 0, - i=i$0, - accu=accu$0; - continue} - var i$1=i + 1 | 0,i=i$1; - continue}} - var i$2=i + 1 | 0,i=i$2; - continue} - var i$3=i + 1 | 0,i=i$3; - continue}} - function stats(t) - {var len=t[1].length - 1,lens=map$6(length$5,t[1]); - sort(caml_int_compare,lens); - var - _l0_=0, - totlen= - fold_left$3(function(_l7_,_l6_){return _l7_ + _l6_ | 0},_l0_,lens), - _l1_=len - 1 | 0, - _l3_=len / 2 | 0, - _l2_=caml_check_bound(lens,_l1_)[1 + _l1_], - _l4_=caml_check_bound(lens,_l3_)[1 + _l3_], - _l5_=caml_check_bound(lens,0)[1]; - return [0,len,count(t),totlen,_l5_,_l4_,_l2_]} - return [0, - create, - clear, - merge, - add, - remove, - find, - find_opt, - find_all, - mem, - iter, - fold, - count, - stats]} - var - Stdlib_Weak= - [0, - weak_create, - length$5, - set$0, - get$1, - get_copy, - check$0, - fill$2, - blit$4, - Make$1]; - caml_register_global(801,Stdlib_Weak,"Stdlib__Weak"); - function id$0(x){return x} - var - String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)], - size=0, - unknown=-1; - function pp_enqueue(state,token) - {state[13] = state[13] + token[3] | 0;return add(token,state[28])} - var pp_infinity=1000000010; - function pp_output_string(state,s) - {return caml_call3(state[17],s,0,caml_ml_string_length(s))} - function pp_output_newline(state){return caml_call1(state[19],0)} - function format_pp_text(state,size,text) - {state[9] = state[9] - size | 0; - pp_output_string(state,text); - state[11] = 0; - return 0} - function format_string(state,s) - {var _lZ_=caml_string_notequal(s,cst$67); - return _lZ_?format_pp_text(state,caml_ml_string_length(s),s):_lZ_} - function break_new_line(state,param,width) - {var after=param[3],offset=param[2],before=param[1]; - format_string(state,before); - pp_output_newline(state); - state[11] = 1; - var - indent=(state[6] - width | 0) + offset | 0, - real_indent=min$1(state[8],indent); - state[10] = real_indent; - state[9] = state[6] - state[10] | 0; - caml_call1(state[21],state[10]); - return format_string(state,after)} - function break_line(state,width){return break_new_line(state,_ce_,width)} - function break_same_line(state,param) - {var after=param[3],width=param[2],before=param[1]; - format_string(state,before); - state[9] = state[9] - width | 0; - caml_call1(state[20],width); - return format_string(state,after)} - function format_pp_token(state,size$0,param) - {if(typeof param === "number") - switch(param) - {case 0: - var match$3=top_opt(state[3]); - if(match$3) - {var - match$4=match$3[1], - tabs=match$4[1], - add_tab= - function(n,ls) - {if(ls) - {var l=ls[2],x=ls[1]; - return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]} - return [0,n,0]}; - tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]); - return 0} - return 0; - case 1:pop_opt(state[2]);return 0; - case 2:pop_opt(state[3]);return 0; - case 3: - var match$5=top_opt(state[2]); - if(match$5) - {var match$6=match$5[1],width$0=match$6[2]; - return break_line(state,width$0)} - return pp_output_newline(state); - case 4: - var _lW_=state[10] !== (state[6] - state[9] | 0)?1:0; - if(_lW_) - {var match$1=take_opt(state[28]); - if(match$1) - {var match$2=match$1[1],size=match$2[1],length=match$2[3]; - state[12] = state[12] - length | 0; - state[9] = state[9] + size | 0; - return 0} - return 0} - return _lW_; - default: - var match$7=pop_opt(state[5]); - if(match$7) - {var tag_name=match$7[1],marker=caml_call1(state[25],tag_name); - return pp_output_string(state,marker)} - return 0} - else - switch(param[0]) - {case 0:var s=param[1];return format_pp_text(state,size$0,s); - case 1: - var - breaks=param[2], - fits=param[1], - off=breaks[2], - before=breaks[1], - match$8=top_opt(state[2]); - if(match$8) - {var match$9=match$8[1],width$1=match$9[2],box_type$0=match$9[1]; - switch(box_type$0) - {case 0:return break_same_line(state,fits); - case 1:return break_new_line(state,breaks,width$1); - case 2:return break_new_line(state,breaks,width$1); - case 3: - return state[9] < (size$0 + caml_ml_string_length(before) | 0) - ?break_new_line(state,breaks,width$1) - :break_same_line(state,fits); - case 4: - return state[11] - ?break_same_line(state,fits) - :state[9] < (size$0 + caml_ml_string_length(before) | 0) - ?break_new_line(state,breaks,width$1) - :((state[6] - width$1 | 0) + off | 0) < state[10] - ?break_new_line(state,breaks,width$1) - :break_same_line(state,fits); - default:return break_same_line(state,fits)}} - return 0; - case 2: - var - off$0=param[2], - n=param[1], - insertion_point=state[6] - state[9] | 0, - match$10=top_opt(state[3]); - if(match$10) - {var match$11=match$10[1],tabs$0=match$11[1],_lX_=tabs$0[1]; - if(_lX_) - {var first=_lX_[1],param$0=tabs$0[1]; - for(;;) - {if(param$0) - {var tail=param$0[2],head=param$0[1]; - if(! (insertion_point <= head)){var param$0=tail;continue} - var _lY_=head} - else - var _lY_=first; - var tab=_lY_; - break}} - else - var tab=insertion_point; - var offset=tab - insertion_point | 0; - return 0 <= offset - ?break_same_line(state,[0,cst$69,offset + n | 0,cst$68]) - :break_new_line - (state,[0,cst$71,tab + off$0 | 0,cst$70],state[6])} - return 0; - case 3: - var - ty=param[2], - off$1=param[1], - insertion_point$0=state[6] - state[9] | 0; - if(state[8] < insertion_point$0) - {var match=top_opt(state[2]); - if(match) - {var match$0=match[1],width=match$0[2],box_type=match$0[1]; - if(state[9] < width && ! (3 < box_type - 1 >>> 0)) - break_line(state,width)} - else - pp_output_newline(state)} - var - width$2=state[9] - off$1 | 0, - box_type$1=1 === ty?1:state[9] < size$0?ty:5; - return push([0,box_type$1,width$2],state[2]); - case 4:var tbox=param[1];return push(tbox,state[3]); - default: - var tag_name$0=param[1],marker$0=caml_call1(state[24],tag_name$0); - pp_output_string(state,marker$0); - return push(tag_name$0,state[5])}} - function advance_left(state) - {for(;;) - {var match=peek_opt(state[28]); - if(match) - {var - match$0=match[1], - size=match$0[1], - length=match$0[3], - token=match$0[2], - pending_count=state[13] - state[12] | 0, - _lU_=0 <= size?1:0, - _lV_=_lU_ || (state[9] <= pending_count?1:0); - if(_lV_) - {take(state[28]); - var size$0=0 <= size?size:pp_infinity; - format_pp_token(state,size$0,token); - state[12] = length + state[12] | 0; - continue} - return _lV_} - return 0}} - function enqueue_advance(state,tok) - {pp_enqueue(state,tok);return advance_left(state)} - function enqueue_string_as(state,size,s) - {return enqueue_advance(state,[0,size,[0,s],size])} - function initialize_scan_stack(stack) - {clear(stack); - var queue_elem=[0,unknown,_cf_,0]; - return push([0,-1,queue_elem],stack)} - function set_size(state,ty) - {var match=top_opt(state[1]); - if(match) - {var - match$0=match[1], - queue_elem=match$0[2], - left_total=match$0[1], - _lP_=queue_elem[1]; - if(left_total < state[12])return initialize_scan_stack(state[1]); - var _lQ_=queue_elem[2]; - if(typeof _lQ_ !== "number") - switch(_lQ_[0]) - {case 3: - var - _lS_=1 - ty, - _lT_= - _lS_ - ?(queue_elem[1] = state[13] + _lP_ | 0,pop_opt(state[1]),0) - :_lS_; - return _lT_; - case 1: - case 2: - var - _lR_= - ty?(queue_elem[1] = state[13] + _lP_ | 0,pop_opt(state[1]),0):ty; - return _lR_ - } - return 0} - return 0} - function scan_push(state,b,token) - {pp_enqueue(state,token); - if(b)set_size(state,1); - var elem=[0,state[13],token]; - return push(elem,state[1])} - function pp_open_box_gen(state,indent,br_ty) - {state[14] = state[14] + 1 | 0; - if(state[14] < state[15]) - {var size=- state[13] | 0,elem=[0,size,[3,indent,br_ty],0]; - return scan_push(state,0,elem)} - var _lN_=state[14] === state[15]?1:0; - if(_lN_) - {var _lO_=state[16]; - return enqueue_string_as(state,caml_ml_string_length(_lO_),_lO_)} - return _lN_} - function pp_close_box(state,param) - {var _lL_=1 < state[14]?1:0; - if(_lL_) - {if(state[14] < state[15]) - {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)} - state[14] = state[14] - 1 | 0; - var _lM_=0} - else - var _lM_=_lL_; - return _lM_} - function pp_open_stag(state,tag_name) - {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)} - var _lK_=state[23]; - if(_lK_) - {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} - return _lK_} - function pp_close_stag(state,param) - {if(state[23])pp_enqueue(state,[0,size,5,0]); - var _lI_=state[22]; - if(_lI_) - {var match=pop_opt(state[4]); - if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} - var _lJ_=0} - else - var _lJ_=_lI_; - return _lJ_} - function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])} - function pp_close_tag(state,param){return pp_close_stag(state,0)} - function pp_set_print_tags(state,b){state[22] = b;return 0} - function pp_set_mark_tags(state,b){state[23] = b;return 0} - function pp_get_print_tags(state,param){return state[22]} - function pp_get_mark_tags(state,param){return state[23]} - function pp_set_tags(state,b) - {pp_set_print_tags(state,b);return pp_set_mark_tags(state,b)} - function pp_get_formatter_stag_function(state,param) - {return [0,state[24],state[25],state[26],state[27]]} - function pp_set_formatter_stag_function(state,param) - {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; - state[24] = mot; - state[25] = mct; - state[26] = pot; - state[27] = pct; - return 0} - function pp_rinit(state) - {state[12] = 1; - state[13] = 1; - clear$0(state[28]); - initialize_scan_stack(state[1]); - clear(state[2]); - clear(state[3]); - clear(state[4]); - clear(state[5]); - state[10] = 0; - state[14] = 0; - state[9] = state[6]; - return pp_open_box_gen(state,0,3)} - function pp_flush_queue(state,b) - {var _lH_=state[4]; - iter$7(function(param){return pp_close_tag(state,0)},_lH_); - for(;;) - {if(1 < state[14]){pp_close_box(state,0);continue} - state[13] = pp_infinity; - advance_left(state); - if(b)pp_output_newline(state); - return pp_rinit(state)}} - function pp_print_as_size(state,size,s) - {var _lG_=state[14] < state[15]?1:0; - return _lG_?enqueue_string_as(state,size,s):_lG_} - function pp_print_as(state,isize,s) - {return pp_print_as_size(state,isize,s)} - function pp_print_string(state,s) - {return pp_print_as(state,caml_ml_string_length(s),s)} - function pp_print_bytes(state,s) - {return pp_print_as(state,caml_ml_bytes_length(s),of_bytes(s))} - function pp_print_int(state,i) - {return pp_print_string(state,caml_string_of_jsbytes("" + i))} - function pp_print_float(state,f) - {return pp_print_string(state,to_string(f))} - function pp_print_bool(state,b) - {return pp_print_string(state,string_of_bool(b))} - function pp_print_char(state,c){return pp_print_as(state,1,make$1(1,c))} - function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)} - function pp_open_vbox(state,indent) - {return pp_open_box_gen(state,indent,1)} - function pp_open_hvbox(state,indent) - {return pp_open_box_gen(state,indent,2)} - function pp_open_hovbox(state,indent) - {return pp_open_box_gen(state,indent,3)} - function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)} - function pp_print_newline(state,param) - {pp_flush_queue(state,1);return caml_call1(state[18],0)} - function pp_print_flush(state,param) - {pp_flush_queue(state,0);return caml_call1(state[18],0)} - function pp_force_newline(state,param) - {var _lF_=state[14] < state[15]?1:0; - return _lF_?enqueue_advance(state,[0,size,3,0]):_lF_} - function pp_print_if_newline(state,param) - {var _lE_=state[14] < state[15]?1:0; - return _lE_?enqueue_advance(state,[0,size,4,0]):_lE_} - function pp_print_custom_break(state,fits,breaks) - {var - after=fits[3], - width=fits[2], - before=fits[1], - _lD_=state[14] < state[15]?1:0; - if(_lD_) - {var - size=- state[13] | 0, - token=[1,fits,breaks], - length= - (caml_ml_string_length(before) + width | 0) - + - caml_ml_string_length(after) - | - 0, - elem=[0,size,token,length]; - return scan_push(state,1,elem)} - return _lD_} - function pp_print_break(state,width,offset) - {return pp_print_custom_break - (state,[0,cst$75,width,cst$74],[0,cst$73,offset,cst$72])} - function pp_print_space(state,param){return pp_print_break(state,1,0)} - function pp_print_cut(state,param){return pp_print_break(state,0,0)} - function pp_open_tbox(state,param) - {state[14] = state[14] + 1 | 0; - var _lC_=state[14] < state[15]?1:0; - if(_lC_) - {var elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)} - return _lC_} - function pp_close_tbox(state,param) - {var _lz_=1 < state[14]?1:0; - if(_lz_) - {var _lA_=state[14] < state[15]?1:0; - if(_lA_) - {var elem=[0,size,2,0]; - enqueue_advance(state,elem); - state[14] = state[14] - 1 | 0; - var _lB_=0} - else - var _lB_=_lA_} - else - var _lB_=_lz_; - return _lB_} - function pp_print_tbreak(state,width,offset) - {var _ly_=state[14] < state[15]?1:0; - if(_ly_) - {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; - return scan_push(state,1,elem)} - return _ly_} - function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)} - function pp_set_tab(state,param) - {var _lx_=state[14] < state[15]?1:0; - if(_lx_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} - return _lx_} - function pp_set_max_boxes(state,n) - {var _lv_=1 < n?1:0,_lw_=_lv_?(state[15] = n,0):_lv_;return _lw_} - function pp_get_max_boxes(state,param){return state[15]} - function pp_over_max_boxes(state,param) - {return state[14] === state[15]?1:0} - function pp_set_ellipsis_text(state,s){state[16] = s;return 0} - function pp_get_ellipsis_text(state,param){return state[16]} - function pp_limit(n){return n < 1000000010?n:1000000009} - function pp_set_max_indent(state,n$0) - {var _lu_=1 < n$0?1:0; - if(_lu_) - {var n$1=state[6] - n$0 | 0,_lt_=1 <= n$1?1:0; - if(_lt_) - {var n=pp_limit(n$1); - state[7] = n; - state[8] = state[6] - state[7] | 0; - return pp_rinit(state)} - return _lt_} - return _lu_} - function pp_get_max_indent(state,param){return state[8]} - function pp_set_margin(state,n) - {var _ls_=1 <= n?1:0; - if(_ls_) - {var n$0=pp_limit(n); - state[6] = n$0; - var - new_max_indent= - state[8] <= state[6] - ?state[8] - :max$1(max$1(state[6] - state[7] | 0,state[6] / 2 | 0),1); - return pp_set_max_indent(state,new_max_indent)} - return _ls_} - function validate_geometry(param) - {var margin=param[2],max_indent=param[1]; - return 2 <= max_indent?margin <= max_indent?_cg_:_ch_:_ci_} - function check_geometry(geometry) - {var match=validate_geometry(geometry);return 0 === match[0]?1:0} - function pp_get_margin(state,param){return state[6]} - function pp_set_full_geometry(state,param) - {var margin=param[2],max_indent=param[1]; - pp_set_margin(state,margin); - pp_set_max_indent(state,max_indent); - return 0} - function pp_set_geometry(state,max_indent,margin) - {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); - if(0 === match[0])return pp_set_full_geometry(state,geometry); - var msg=match[1]; - throw [0,Invalid_argument,cat(cst_Format_pp_set_geometry,msg)]} - function pp_safe_set_geometry(state,max_indent,margin) - {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); - return 0 === match[0]?pp_set_full_geometry(state,geometry):0} - function pp_get_geometry(state,param){return [0,state[8],state[6]]} - function pp_update_geometry(state,update) - {var geometry=pp_get_geometry(state,0); - return pp_set_full_geometry(state,caml_call1(update,geometry))} - function pp_set_formatter_out_functions(state,param) - {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1]; - state[17] = f; - state[18] = g; - state[19] = h; - state[20] = i; - state[21] = j; - return 0} - function pp_get_formatter_out_functions(state,param) - {return [0,state[17],state[18],state[19],state[20],state[21]]} - function pp_set_formatter_output_functi(state,f,g) - {state[17] = f;state[18] = g;return 0} - function pp_get_formatter_output_functi(state,param) - {return [0,state[17],state[18]]} - function display_newline(state,param) - {return caml_call3(state[17],cst$76,0,1)} - var blank_line=make$1(80,32); - function display_indent(state,n) - {var n$0=n; - for(;;) - {var _lr_=0 < n$0?1:0; - if(_lr_) - {if(80 < n$0) - {caml_call3(state[17],blank_line,0,80); - var n$1=n$0 - 80 | 0,n$0=n$1; - continue} - return caml_call3(state[17],blank_line,0,n$0)} - return _lr_}} - function pp_set_formatter_out_channel(state,oc) - {state[17] - = - function(_lo_,_lp_,_lq_){return output_substring(oc,_lo_,_lp_,_lq_)}; - state[18] = function(param){return caml_ml_flush(oc)}; - state[19] = function(_ln_){return display_newline(state,_ln_)}; - state[20] = function(_lm_){return display_indent(state,_lm_)}; - state[21] = function(_ll_){return display_indent(state,_ll_)}; - return 0} - function default_pp_mark_open_tag(param) - {if(param[1] === String_tag) - {var s=param[2];return cat(cst$78,cat(s,cst$77))} - return cst$79} - function default_pp_mark_close_tag(param) - {if(param[1] === String_tag) - {var s=param[2];return cat(cst$81,cat(s,cst$80))} - return cst$82} - function default_pp_print_open_tag(_lk_){return 0} - function default_pp_print_close_tag(_lj_){return 0} - function pp_make_formatter(f,g,h,i,j) - {var pp_queue=create$1(0),sys_tok=[0,unknown,_cj_,0]; - add(sys_tok,pp_queue); - var scan_stack=create$0(0); - initialize_scan_stack(scan_stack); - push([0,1,sys_tok],scan_stack); - var _lg_=create$0(0),_lh_=create$0(0),_li_=create$0(0); - return [0, - scan_stack, - create$0(0), - _li_, - _lh_, - _lg_, - 78, - 10, - 68, - 78, - 0, - 1, - 1, - 1, - 1, - max_int, - cst$83, - f, - g, - h, - i, - j, - 0, - 0, - default_pp_mark_open_tag, - default_pp_mark_close_tag, - default_pp_print_open_tag, - default_pp_print_close_tag, - pp_queue]} - function formatter_of_out_functions(out_funs) - {return pp_make_formatter - (out_funs[1],out_funs[2],out_funs[3],out_funs[4],out_funs[5])} - function make_formatter(output,flush) - {function _k__(_lf_){return 0} - function _k$_(_le_){return 0} - var - ppf= - pp_make_formatter(output,flush,function(_ld_){return 0},_k$_,_k__); - ppf[19] = function(_lc_){return display_newline(ppf,_lc_)}; - ppf[20] = function(_lb_){return display_indent(ppf,_lb_)}; - ppf[21] = function(_la_){return display_indent(ppf,_la_)}; - return ppf} - function formatter_of_out_channel(oc) - {function _k6_(param){return caml_ml_flush(oc)} - return make_formatter - (function(_k7_,_k8_,_k9_) - {return output_substring(oc,_k7_,_k8_,_k9_)}, - _k6_)} - function formatter_of_buffer(b) - {function _k1_(_k5_){return 0} - return make_formatter - (function(_k2_,_k3_,_k4_) - {return add_substring(b,_k2_,_k3_,_k4_)}, - _k1_)} - var pp_buffer_size=512; - function pp_make_buffer(param){return create$2(pp_buffer_size)} - var - stdbuf=pp_make_buffer(0), - std_formatter=formatter_of_out_channel(stdout), - err_formatter=formatter_of_out_channel(stderr), - str_formatter=formatter_of_buffer(stdbuf); - function flush_buffer_formatter(buf,ppf) - {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s} - function flush_str_formatter(param) - {return flush_buffer_formatter(stdbuf,str_formatter)} - function make_symbolic_output_buffer(param){return [0,0]} - function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0} - function get_symbolic_output_buffer(sob){return rev(sob[1])} - function flush_symbolic_output_buffer(sob) - {var items=get_symbolic_output_buffer(sob); - clear_symbolic_output_buffer(sob); - return items} - function add_symbolic_output_item(sob,item) - {sob[1] = [0,item,sob[1]];return 0} - function formatter_of_symbolic_output_b(sob) - {function f(s,i,n){return add_symbolic_output_item(sob,[0,sub$0(s,i,n)])} - function g(_k0_){return add_symbolic_output_item(sob,0)} - function h(_kZ_){return add_symbolic_output_item(sob,1)} - function i(n){return add_symbolic_output_item(sob,[1,n])} - function j(n){return add_symbolic_output_item(sob,[2,n])} - return pp_make_formatter(f,g,h,i,j)} - function open_hbox(_kY_){return pp_open_hbox(std_formatter,_kY_)} - function open_vbox(_kX_){return pp_open_vbox(std_formatter,_kX_)} - function open_hvbox(_kW_){return pp_open_hvbox(std_formatter,_kW_)} - function open_hovbox(_kV_){return pp_open_hovbox(std_formatter,_kV_)} - function open_box(_kU_){return pp_open_box(std_formatter,_kU_)} - function close_box(_kT_){return pp_close_box(std_formatter,_kT_)} - function open_tag(_kS_){return pp_open_tag(std_formatter,_kS_)} - function close_tag(_kR_){return pp_close_tag(std_formatter,_kR_)} - function open_stag(_kQ_){return pp_open_stag(std_formatter,_kQ_)} - function close_stag(_kP_){return pp_close_stag(std_formatter,_kP_)} - function print_as(_kN_,_kO_){return pp_print_as(std_formatter,_kN_,_kO_)} - function print_string$0(_kM_){return pp_print_string(std_formatter,_kM_)} - function print_bytes$0(_kL_){return pp_print_bytes(std_formatter,_kL_)} - function print_int$0(_kK_){return pp_print_int(std_formatter,_kK_)} - function print_float$0(_kJ_){return pp_print_float(std_formatter,_kJ_)} - function print_char$0(_kI_){return pp_print_char(std_formatter,_kI_)} - function print_bool(_kH_){return pp_print_bool(std_formatter,_kH_)} - function print_break(_kF_,_kG_) - {return pp_print_break(std_formatter,_kF_,_kG_)} - function print_cut(_kE_){return pp_print_cut(std_formatter,_kE_)} - function print_space(_kD_){return pp_print_space(std_formatter,_kD_)} - function force_newline(_kC_){return pp_force_newline(std_formatter,_kC_)} - function print_flush(_kB_){return pp_print_flush(std_formatter,_kB_)} - function print_newline$0(_kA_) - {return pp_print_newline(std_formatter,_kA_)} - function print_if_newline(_kz_) - {return pp_print_if_newline(std_formatter,_kz_)} - function open_tbox(_ky_){return pp_open_tbox(std_formatter,_ky_)} - function close_tbox(_kx_){return pp_close_tbox(std_formatter,_kx_)} - function print_tbreak(_kv_,_kw_) - {return pp_print_tbreak(std_formatter,_kv_,_kw_)} - function set_tab(_ku_){return pp_set_tab(std_formatter,_ku_)} - function print_tab(_kt_){return pp_print_tab(std_formatter,_kt_)} - function set_margin(_ks_){return pp_set_margin(std_formatter,_ks_)} - function get_margin(_kr_){return std_formatter[6]} - function set_max_indent(_kq_) - {return pp_set_max_indent(std_formatter,_kq_)} - function get_max_indent(_kp_){return std_formatter[8]} - function set_geometry(_kn_,_ko_) - {return pp_set_geometry(std_formatter,_kn_,_ko_)} - function safe_set_geometry(_kl_,_km_) - {return pp_safe_set_geometry(std_formatter,_kl_,_km_)} - function get_geometry(_kk_){return pp_get_geometry(std_formatter,_kk_)} - function update_geometry(_kj_) - {return pp_update_geometry(std_formatter,_kj_)} - function set_max_boxes(_ki_){return pp_set_max_boxes(std_formatter,_ki_)} - function get_max_boxes(_kh_){return std_formatter[15]} - function over_max_boxes(_kg_) - {return pp_over_max_boxes(std_formatter,_kg_)} - function set_ellipsis_text(_kf_) - {return pp_set_ellipsis_text(std_formatter,_kf_)} - function get_ellipsis_text(_ke_){return std_formatter[16]} - function set_formatter_out_channel(_kd_) - {return pp_set_formatter_out_channel(std_formatter,_kd_)} - function set_formatter_out_functions(_kc_) - {return pp_set_formatter_out_functions(std_formatter,_kc_)} - function get_formatter_out_functions(_kb_) - {return pp_get_formatter_out_functions(std_formatter,_kb_)} - function set_formatter_output_functions(_j$_,_ka_) - {return pp_set_formatter_output_functi(std_formatter,_j$_,_ka_)} - function get_formatter_output_functions(_j__) - {return pp_get_formatter_output_functi(std_formatter,_j__)} - function set_formatter_stag_functions(_j9_) - {return pp_set_formatter_stag_function(std_formatter,_j9_)} - function get_formatter_stag_functions(_j8_) - {return pp_get_formatter_stag_function(std_formatter,_j8_)} - function set_print_tags(_j7_) - {return pp_set_print_tags(std_formatter,_j7_)} - function get_print_tags(_j6_){return std_formatter[22]} - function set_mark_tags(_j5_){return pp_set_mark_tags(std_formatter,_j5_)} - function get_mark_tags(_j4_){return std_formatter[23]} - function set_tags(_j3_){return pp_set_tags(std_formatter,_j3_)} - function pp_print_list(opt,pp_v,ppf,param) - {var opt$0=opt,param$0=param; - for(;;) - {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut; - if(param$0) - {var _j2_=param$0[1]; - if(param$0[2]) - {var vs=param$0[2]; - caml_call2(pp_v,ppf,_j2_); - caml_call2(pp_sep,ppf,0); - var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs; - continue} - return caml_call2(pp_v,ppf,_j2_)} - return 0}} - function pp_print_seq(opt,pp_v,ppf,seq$1) - {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=pp_print_cut; - var match$0=caml_call1(seq$1,0); - if(match$0) - {var seq$2=match$0[2],v$0=match$0[1]; - caml_call2(pp_v,ppf,v$0); - var seq=seq$2; - for(;;) - {var match=caml_call1(seq,0); - if(match) - {var seq$0=match[2],v=match[1]; - caml_call2(pp_sep,ppf,0); - caml_call2(pp_v,ppf,v); - var seq=seq$0; - continue} - return 0}} - return 0} - function pp_print_text(ppf,s) - {var len=caml_ml_string_length(s),left=[0,0],right=[0,0]; - function flush(param) - {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0)); - right[1]++; - left[1] = right[1]; - return 0} - for(;;) - {if(right[1] !== len) - {var match=caml_string_get(s,right[1]); - if(10 === match) - {flush(0);pp_force_newline(ppf,0)} - else - if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++; - continue} - var _j1_=left[1] !== len?1:0; - return _j1_?flush(0):_j1_}} - function pp_print_option(opt,pp_v,ppf,param) - {if(opt) - var sth=opt[1],none=sth; - else - var none=function(param,_j0_){return 0}; - if(param){var v=param[1];return caml_call2(pp_v,ppf,v)} - return caml_call2(none,ppf,0)} - function pp_print_result(ok,error,ppf,param) - {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)} - var e=param[1]; - return caml_call2(error,ppf,e)} - function pp_print_either(left,right,ppf,param) - {if(0 === param[0]){var l=param[1];return caml_call2(left,ppf,l)} - var r=param[1]; - return caml_call2(right,ppf,r)} - function compute_tag(output,tag_acc) - {var buf=create$2(16),ppf=formatter_of_buffer(buf); - caml_call2(output,ppf,tag_acc); - pp_print_flush(ppf,0); - var len=buf[2]; - return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)} - function output_formatting_lit(ppf,fmting_lit) - {if(typeof fmting_lit === "number") - switch(fmting_lit) - {case 0:return pp_close_box(ppf,0); - case 1:return pp_close_tag(ppf,0); - case 2:return pp_print_flush(ppf,0); - case 3:return pp_force_newline(ppf,0); - case 4:return pp_print_newline(ppf,0); - case 5:return pp_print_char(ppf,64); - default:return pp_print_char(ppf,37)} - else - switch(fmting_lit[0]) - {case 0: - var offset=fmting_lit[3],width=fmting_lit[2]; - return pp_print_break(ppf,width,offset); - case 1:return 0; - default: - var c=fmting_lit[1]; - pp_print_char(ppf,64); - return pp_print_char(ppf,c)}} - function output_acc$0(ppf,acc) - {var switch$0=0; - if(typeof acc === "number") - return 0; - else - switch(acc[0]) - {case 0: - var f=acc[2],p=acc[1]; - output_acc$0(ppf,p); - return output_formatting_lit(ppf,f); - case 1: - var _jQ_=acc[2],_jR_=acc[1]; - if(0 === _jQ_[0]) - {var acc$0=_jQ_[1]; - output_acc$0(ppf,_jR_); - return pp_open_stag - (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])} - var acc$1=_jQ_[1]; - output_acc$0(ppf,_jR_); - var - match=open_box_of_string(compute_tag(output_acc$0,acc$1)), - bty=match[2], - indent=match[1]; - return pp_open_box_gen(ppf,indent,bty); - case 2: - var _jS_=acc[1],switch$1=0; - if(typeof _jS_ !== "number" && 0 === _jS_[0]) - {var _jT_=_jS_[2],switch$2=0; - if(typeof _jT_ !== "number" && 1 === _jT_[0]) - {var s$0=acc[2],size=_jT_[2],p$1=_jS_[1]; - switch$1 = 1; - switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_jS_;switch$0 = 2} - break; - case 3: - var _jU_=acc[1],switch$3=0; - if(typeof _jU_ !== "number" && 0 === _jU_[0]) - {var _jV_=_jU_[2],switch$4=0; - if(typeof _jV_ !== "number" && 1 === _jV_[0]) - {var c$0=acc[2],size$0=_jV_[2],p$3=_jU_[1]; - switch$0 = 1; - switch$3 = 1; - switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_jU_;switch$0 = 3} - break; - case 4: - var _jW_=acc[1],switch$5=0; - if(typeof _jW_ !== "number" && 0 === _jW_[0]) - {var _jX_=_jW_[2],switch$6=0; - if(typeof _jX_ !== "number" && 1 === _jX_[0]) - {var s$0=acc[2],size=_jX_[2],p$1=_jW_[1]; - switch$5 = 1; - switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_jW_;switch$0 = 2} - break; - case 5: - var _jY_=acc[1],switch$7=0; - if(typeof _jY_ === "number" || ! (0 === _jY_[0])) - switch$7 = 1; - else - {var _jZ_=_jY_[2],switch$8=0; - if(typeof _jZ_ !== "number" && 1 === _jZ_[0]) - {var c$0=acc[2],size$0=_jZ_[2],p$3=_jY_[1]; - switch$0 = 1; - switch$8 = 1} - if(! switch$8)switch$7 = 1} - if(switch$7){var c=acc[2],p$2=_jY_;switch$0 = 3} - break; - case 6: - var f$0=acc[2],p$4=acc[1]; - output_acc$0(ppf,p$4); - return caml_call1(f$0,ppf); - case 7: - var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0); - default: - var msg=acc[2],p$6=acc[1]; - output_acc$0(ppf,p$6); - return invalid_arg(msg)} - switch(switch$0) - {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); - case 1: - output_acc$0(ppf,p$3); - return pp_print_as_size(ppf,size$0,make$1(1,c$0)); - case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s); - default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} - function strput_acc$0(ppf,acc) - {var switch$0=0; - if(typeof acc === "number") - return 0; - else - switch(acc[0]) - {case 0: - var f=acc[2],p=acc[1]; - strput_acc$0(ppf,p); - return output_formatting_lit(ppf,f); - case 1: - var _jE_=acc[2],_jF_=acc[1]; - if(0 === _jE_[0]) - {var acc$0=_jE_[1]; - strput_acc$0(ppf,_jF_); - return pp_open_stag - (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])} - var acc$1=_jE_[1]; - strput_acc$0(ppf,_jF_); - var - match=open_box_of_string(compute_tag(strput_acc$0,acc$1)), - bty=match[2], - indent=match[1]; - return pp_open_box_gen(ppf,indent,bty); - case 2: - var _jG_=acc[1],switch$1=0; - if(typeof _jG_ !== "number" && 0 === _jG_[0]) - {var _jH_=_jG_[2],switch$2=0; - if(typeof _jH_ !== "number" && 1 === _jH_[0]) - {var s$0=acc[2],size=_jH_[2],p$1=_jG_[1]; - switch$1 = 1; - switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_jG_;switch$0 = 2} - break; - case 3: - var _jI_=acc[1],switch$3=0; - if(typeof _jI_ !== "number" && 0 === _jI_[0]) - {var _jJ_=_jI_[2],switch$4=0; - if(typeof _jJ_ !== "number" && 1 === _jJ_[0]) - {var c$0=acc[2],size$0=_jJ_[2],p$3=_jI_[1]; - switch$0 = 1; - switch$3 = 1; - switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_jI_;switch$0 = 3} - break; - case 4: - var _jK_=acc[1],switch$5=0; - if(typeof _jK_ !== "number" && 0 === _jK_[0]) - {var _jL_=_jK_[2],switch$6=0; - if(typeof _jL_ !== "number" && 1 === _jL_[0]) - {var s$0=acc[2],size=_jL_[2],p$1=_jK_[1]; - switch$5 = 1; - switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_jK_;switch$0 = 2} - break; - case 5: - var _jM_=acc[1],switch$7=0; - if(typeof _jM_ === "number" || ! (0 === _jM_[0])) - switch$7 = 1; - else - {var _jN_=_jM_[2],switch$8=0; - if(typeof _jN_ !== "number" && 1 === _jN_[0]) - {var c$0=acc[2],size$0=_jN_[2],p$3=_jM_[1]; - switch$0 = 1; - switch$8 = 1} - if(! switch$8)switch$7 = 1} - if(switch$7){var c=acc[2],p$2=_jM_;switch$0 = 3} - break; - case 6: - var _jO_=acc[1]; - if(typeof _jO_ !== "number" && 0 === _jO_[0]) - {var _jP_=_jO_[2]; - if(typeof _jP_ !== "number" && 1 === _jP_[0]) - {var f$1=acc[2],size$1=_jP_[2],p$4=_jO_[1]; - strput_acc$0(ppf,p$4); - return pp_print_as_size(ppf,size$1,caml_call1(f$1,0))}} - var f$0=acc[2]; - strput_acc$0(ppf,_jO_); - return pp_print_string(ppf,caml_call1(f$0,0)); - case 7: - var p$5=acc[1];strput_acc$0(ppf,p$5);return pp_print_flush(ppf,0); - default: - var msg=acc[2],p$6=acc[1]; - strput_acc$0(ppf,p$6); - return invalid_arg(msg)} - switch(switch$0) - {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); - case 1: - strput_acc$0(ppf,p$3); - return pp_print_as_size(ppf,size$0,make$1(1,c$0)); - case 2:strput_acc$0(ppf,p$0);return pp_print_string(ppf,s); - default:strput_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} - function kfprintf$0(k,ppf,param) - {var fmt=param[1],_jD_=0; - return make_printf - (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, - _jD_, - fmt)} - function ikfprintf$0(k,ppf,param) - {var fmt=param[1];return make_iprintf(k,ppf,fmt)} - function ifprintf$0(ppf,param) - {var fmt=param[1],_jB_=0; - return make_iprintf(function(_jC_){return 0},_jB_,fmt)} - function fprintf$0(ppf) - {function _jy_(_jA_){return 0} - return function(_jz_){return kfprintf$0(_jy_,ppf,_jz_)}} - function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)} - function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)} - function kdprintf(k,param) - {var fmt=param[1],_jx_=0; - return make_printf - (function(acc) - {return caml_call1 - (k,function(ppf){return output_acc$0(ppf,acc)})}, - _jx_, - fmt)} - function dprintf(fmt){return kdprintf(function(i){return i},fmt)} - function kprintf(k,param) - {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); - function k$0(acc) - {strput_acc$0(ppf,acc); - return caml_call1(k,flush_buffer_formatter(b,ppf))} - return make_printf(k$0,0,fmt)} - function sprintf$0(fmt){return kprintf(id$0,fmt)} - function kasprintf(k,param) - {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); - function k$0(acc) - {output_acc$0(ppf,acc); - return caml_call1(k,flush_buffer_formatter(b,ppf))} - return make_printf(k$0,0,fmt)} - function asprintf(fmt){return kasprintf(id$0,fmt)} - function flush_standard_formatters(param) - {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)} - at_exit(flush_standard_formatters); - function pp_set_all_formatter_output_fu(state,f,g,h,i) - {pp_set_formatter_output_functi(state,f,g); - state[19] = h; - state[20] = i; - return 0} - function pp_get_all_formatter_output_fu(state,param) - {return [0,state[17],state[18],state[19],state[20]]} - function set_all_formatter_output_funct(_jt_,_ju_,_jv_,_jw_) - {return pp_set_all_formatter_output_fu(std_formatter,_jt_,_ju_,_jv_,_jw_)} - function get_all_formatter_output_funct(_js_) - {return pp_get_all_formatter_output_fu(std_formatter,_js_)} - function bprintf$0(b,param) - {var fmt=param[1],ppf=formatter_of_buffer(b); - function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)} - return make_printf(k,0,fmt)} - function pp_set_formatter_tag_functions(state,param) - {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; - function stringify(f,e,param) - {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)} - return e} - state[24] = function(_jr_){return stringify(mot,cst$84,_jr_)}; - state[25] = function(_jq_){return stringify(mct,cst$85,_jq_)}; - var _jm_=0; - state[26] = function(_jp_){return stringify(pot,_jm_,_jp_)}; - var _jn_=0; - state[27] = function(_jo_){return stringify(pct,_jn_,_jo_)}; - return 0} - function pp_get_formatter_tag_functions(fmt,param) - {var funs=pp_get_formatter_stag_function(fmt,0); - function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])} - function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])} - function print_open_tag(s){return caml_call1(funs[3],[0,String_tag,s])} - function print_close_tag(s){return caml_call1(funs[4],[0,String_tag,s])} - return [0,mark_open_tag,mark_close_tag,print_open_tag,print_close_tag]} - function set_formatter_tag_functions(_jl_) - {return pp_set_formatter_tag_functions(std_formatter,_jl_)} - function get_formatter_tag_functions(_jk_) - {return pp_get_formatter_tag_functions(std_formatter,_jk_)} - var - Stdlib_Format= - [0, - pp_open_box, - open_box, - pp_close_box, - close_box, - pp_open_hbox, - open_hbox, - pp_open_vbox, - open_vbox, - pp_open_hvbox, - open_hvbox, - pp_open_hovbox, - open_hovbox, - pp_print_string, - print_string$0, - pp_print_bytes, - print_bytes$0, - pp_print_as, - print_as, - pp_print_int, - print_int$0, - pp_print_float, - print_float$0, - pp_print_char, - print_char$0, - pp_print_bool, - print_bool, - pp_print_space, - print_space, - pp_print_cut, - print_cut, - pp_print_break, - print_break, - pp_print_custom_break, - pp_force_newline, - force_newline, - pp_print_if_newline, - print_if_newline, - pp_print_flush, - print_flush, - pp_print_newline, - print_newline$0, - pp_set_margin, - set_margin, - pp_get_margin, - get_margin, - pp_set_max_indent, - set_max_indent, - pp_get_max_indent, - get_max_indent, - check_geometry, - pp_set_geometry, - set_geometry, - pp_safe_set_geometry, - safe_set_geometry, - pp_update_geometry, - update_geometry, - pp_get_geometry, - get_geometry, - pp_set_max_boxes, - set_max_boxes, - pp_get_max_boxes, - get_max_boxes, - pp_over_max_boxes, - over_max_boxes, - pp_open_tbox, - open_tbox, - pp_close_tbox, - close_tbox, - pp_set_tab, - set_tab, - pp_print_tab, - print_tab, - pp_print_tbreak, - print_tbreak, - pp_set_ellipsis_text, - set_ellipsis_text, - pp_get_ellipsis_text, - get_ellipsis_text, - String_tag, - pp_open_stag, - open_stag, - pp_close_stag, - close_stag, - pp_set_tags, - set_tags, - pp_set_print_tags, - set_print_tags, - pp_set_mark_tags, - set_mark_tags, - pp_get_print_tags, - get_print_tags, - pp_get_mark_tags, - get_mark_tags, - pp_set_formatter_out_channel, - set_formatter_out_channel, - pp_set_formatter_output_functi, - set_formatter_output_functions, - pp_get_formatter_output_functi, - get_formatter_output_functions, - pp_set_formatter_out_functions, - set_formatter_out_functions, - pp_get_formatter_out_functions, - get_formatter_out_functions, - pp_set_formatter_stag_function, - set_formatter_stag_functions, - pp_get_formatter_stag_function, - get_formatter_stag_functions, - formatter_of_out_channel, - std_formatter, - err_formatter, - formatter_of_buffer, - stdbuf, - str_formatter, - flush_str_formatter, - make_formatter, - formatter_of_out_functions, - make_symbolic_output_buffer, - clear_symbolic_output_buffer, - get_symbolic_output_buffer, - flush_symbolic_output_buffer, - add_symbolic_output_item, - formatter_of_symbolic_output_b, - pp_print_list, - pp_print_seq, - pp_print_text, - pp_print_option, - pp_print_result, - pp_print_either, - fprintf$0, - printf$0, - eprintf$0, - sprintf$0, - asprintf, - dprintf, - ifprintf$0, - kfprintf$0, - kdprintf, - ikfprintf$0, - kprintf, - kasprintf, - bprintf$0, - kprintf, - set_all_formatter_output_funct, - get_all_formatter_output_funct, - pp_set_all_formatter_output_fu, - pp_get_all_formatter_output_fu, - pp_open_tag, - open_tag, - pp_close_tag, - close_tag, - pp_set_formatter_tag_functions, - set_formatter_tag_functions, - pp_get_formatter_tag_functions, - get_formatter_tag_functions]; - caml_register_global(802,Stdlib_Format,"Stdlib__Format"); - var null_char=0; - function next_char(ib) - {try - {var c=caml_call1(ib[7],0); - ib[2] = c; - ib[3] = 1; - ib[4] = ib[4] + 1 | 0; - if(10 === c)ib[5] = ib[5] + 1 | 0; - return c} - catch(_jj_) - {_jj_ = caml_wrap_exception(_jj_); - if(_jj_ === End_of_file) - {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char} - throw _jj_}} - function peek_char(ib){return ib[3]?ib[2]:next_char(ib)} - function checked_peek_char(ib) - {var c=peek_char(ib);if(ib[1])throw End_of_file;return c} - function end_of_input(ib){peek_char(ib);return ib[1]} - function beginning_of_input(ib){return 0 === ib[4]?1:0} - function name_of_input(ib) - {var _ji_=ib[9]; - if(typeof _ji_ === "number") - return 0 === _ji_?cst_unnamed_function:cst_unnamed_character_string; - else - {if(0 === _ji_[0])return cst_unnamed_Stdlib_input_chann; - var fname=_ji_[1]; - return fname}} - function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} - function reset_token(ib){return reset(ib[8])} - function invalidate_current_char(ib){ib[3] = 0;return 0} - function token_string(ib) - {var token_buffer=ib[8],tok=contents(token_buffer); - clear$1(token_buffer); - ib[6] = ib[6] + 1 | 0; - return tok} - function skip_char(width,ib){invalidate_current_char(ib);return width} - function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)} - function store_char(width,ib,c) - {add_char(ib[8],c);return ignore_char(width,ib)} - var default_token_buffer_size=1024; - function create$4(iname,next) - {return [0, - 0, - null_char, - 0, - 0, - 0, - 0, - next, - create$2(default_token_buffer_size), - iname]} - function from_string$1(s) - {var i=[0,0],len=caml_ml_string_length(s); - function next(param) - {if(len <= i[1])throw End_of_file; - var c=caml_string_get(s,i[1]); - i[1]++; - return c} - return create$4(1,next)} - var _ck_=0; - function from_function$0(_jh_){return create$4(_ck_,_jh_)} - var len=1024; - function scan_close_at_end(ic) - {caml_ml_close_channel(ic);throw End_of_file} - function scan_raise_at_end(ic){throw End_of_file} - function from_ic(scan_close_ic,iname,ic) - {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0]; - function next(param) - {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c} - if(eof[1])throw End_of_file; - lim[1] = input(ic,buf,0,len); - return 0 === lim[1] - ?(eof[1] = 1,caml_call1(scan_close_ic,ic)) - :(i[1] = 1,caml_bytes_get(buf,0))} - return create$4(iname,next)} - var stdib=from_ic(scan_raise_at_end,[1,cst$86,stdin],stdin); - function open_in_file(open_in,fname) - {if(caml_string_notequal(fname,cst$87)) - {var ic=caml_call1(open_in,fname); - return from_ic(scan_close_at_end,[1,fname,ic],ic)} - return stdib} - function from_file(_jg_){return open_in_file(open_in,_jg_)} - function from_file_bin(_jf_){return open_in_file(open_in_bin,_jf_)} - function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)} - function close_in$0(ib) - {var _je_=ib[9]; - if(typeof _je_ === "number") - return 0; - else - {if(0 === _je_[0]){var ic=_je_[1];return caml_ml_close_channel(ic)} - var ic$0=_je_[2]; - return caml_ml_close_channel(ic$0)}} - var memo=[0,0]; - function memo_from_ic(scan_close_ic,ic) - {try - {var _jc_=assq(ic,memo[1]);return _jc_} - catch(_jd_) - {_jd_ = caml_wrap_exception(_jd_); - if(_jd_ === Not_found) - {var ib=from_ic(scan_close_ic,[0,ic],ic); - memo[1] = [0,[0,ic,ib],memo[1]]; - return ib} - throw _jd_}} - function memo_from_channel(_jb_) - {return memo_from_ic(scan_raise_at_end,_jb_)} - var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)]; - function bad_input(s){throw [0,Scan_failure,s]} - function bad_input_escape(c) - {return bad_input(caml_call1(sprintf(_cl_),c))} - function bad_token_length(message) - {return bad_input(caml_call1(sprintf(_cm_),message))} - function bad_float(param) - {return bad_input(cst_no_dot_or_exponent_part_fo)} - function bad_hex_float(param) - {return bad_input(cst_not_a_valid_float_in_hexad)} - function character_mismatch(c,ci) - {return bad_input(caml_call2(sprintf(_co_),c,ci))} - function check_this_char(ib,c) - {var ci=checked_peek_char(ib); - return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} - function check_char(ib,c$0) - {if(10 === c$0) - {var ci=checked_peek_char(ib); - return 10 === ci - ?invalidate_current_char(ib) - :13 === ci - ?(invalidate_current_char(ib),check_this_char(ib,10)) - :character_mismatch(10,ci)} - if(32 === c$0) - for(;;) - {var c=peek_char(ib),_i$_=1 - ib[1]; - if(_i$_) - {var _ja_=c - 9 | 0,switch$0=0; - if(4 < _ja_ >>> 0) - {if(23 === _ja_)switch$0 = 1} - else - if(1 < _ja_ - 2 >>> 0)switch$0 = 1; - if(switch$0){invalidate_current_char(ib);continue} - return 0} - return _i$_} - return check_this_char(ib,c$0)} - function token_char(ib){return caml_string_get(token_string(ib),0)} - function token_bool(ib) - {var s=token_string(ib); - return caml_string_notequal(s,cst_false$3) - ?caml_string_notequal(s,cst_true$3) - ?bad_input(caml_call1(sprintf(_cp_),s)) - :1 - :0} - function integer_conversion_of_char(param) - {var switcher=param - 88 | 0; - if(! (32 < switcher >>> 0)) - switch(switcher) - {case 10:return 0; - case 12:return 1; - case 17:return 2; - case 23:return 3; - case 29:return 4; - case 0: - case 32:return 5 - } - throw [0,Assert_failure,_cq_]} - function token_int_literal(conv,ib) - {switch(conv) - {case 0:var tok=cat(cst_0b,token_string(ib));break; - case 3:var tok=cat(cst_0o,token_string(ib));break; - case 4:var tok=cat(cst_0u,token_string(ib));break; - case 5:var tok=cat(cst_0x,token_string(ib));break; - default:var tok=token_string(ib)} - var l=caml_ml_string_length(tok); - if(0 !== l && 43 === caml_string_get(tok,0)) - return sub$0(tok,1,l - 1 | 0); - return tok} - function token_float(ib){return caml_float_of_string(token_string(ib))} - function scan_decimal_digit_star(width,ib) - {var width$0=width; - for(;;) - {if(0 === width$0)return width$0; - var c=peek_char(ib); - if(ib[1])return width$0; - if(58 <= c) - {if(95 === c) - {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}} - else - if(48 <= c) - {var width$2=store_char(width$0,ib,c),width$0=width$2;continue} - return width$0}} - function scan_unsigned_decimal_int(width,ib) - {if(0 === width)return bad_token_length(cst_decimal_digits); - var c=checked_peek_char(ib); - if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cr_),c)); - var width$0=store_char(width,ib,c); - return scan_decimal_digit_star(width$0,ib)} - function scan_digit_plus(basis,digitp,width$2,ib) - {if(0 === width$2)return bad_token_length(cst_digits); - var c$0=checked_peek_char(ib); - if(caml_call1(digitp,c$0)) - {var width$3=store_char(width$2,ib,c$0),width=width$3; - for(;;) - {if(0 === width)return width; - var c=peek_char(ib); - if(ib[1])return width; - if(caml_call1(digitp,c)) - {var width$0=store_char(width,ib,c),width=width$0;continue} - if(95 === c) - {var width$1=ignore_char(width,ib),width=width$1;continue} - return width}} - return bad_input(caml_call2(sprintf(_cs_),c$0,basis))} - function is_binary_digit(param){return 1 < param - 48 >>> 0?0:1} - function scan_binary_int(_i9_,_i__) - {return scan_digit_plus(cst_binary,is_binary_digit,_i9_,_i__)} - function is_octal_digit(param){return 7 < param - 48 >>> 0?0:1} - function scan_octal_int(_i7_,_i8_) - {return scan_digit_plus(cst_octal,is_octal_digit,_i7_,_i8_)} - function is_hexa_digit(param) - {var _i6_=param - 48 | 0,switch$0=0; - if(22 < _i6_ >>> 0) - {if(! (5 < _i6_ - 49 >>> 0))switch$0 = 1} - else - if(6 < _i6_ - 10 >>> 0)switch$0 = 1; - return switch$0?1:0} - function scan_hexadecimal_int(_i4_,_i5_) - {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_i4_,_i5_)} - function scan_sign(width,ib) - {var c=checked_peek_char(ib),switcher=c - 43 | 0; - if(! (2 < switcher >>> 0)) - switch(switcher) - {case 0:return store_char(width,ib,c); - case 1:break; - default:return store_char(width,ib,c)} - return width} - function scan_optionally_signed_decimal(width,ib) - {var width$0=scan_sign(width,ib); - return scan_unsigned_decimal_int(width$0,ib)} - function scan_int_conversion(conv,width$1,ib) - {switch(conv) - {case 0:return scan_binary_int(width$1,ib); - case 1:return scan_optionally_signed_decimal(width$1,ib); - case 2: - var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib); - if(48 === c) - {var width=store_char(width$0,ib,c); - if(0 === width)return width; - var c$0=peek_char(ib); - if(ib[1])return width; - var switch$0=0; - if(99 <= c$0) - {if(111 === c$0) - return scan_octal_int(store_char(width,ib,c$0),ib); - if(120 === c$0)switch$0 = 1} - else - if(88 === c$0) - switch$0 = 1; - else - if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib); - return switch$0 - ?scan_hexadecimal_int(store_char(width,ib,c$0),ib) - :scan_decimal_digit_star(width,ib)} - return scan_unsigned_decimal_int(width$0,ib); - case 3:return scan_octal_int(width$1,ib); - case 4:return scan_unsigned_decimal_int(width$1,ib); - default:return scan_hexadecimal_int(width$1,ib)}} - function scan_fractional_part(width,ib) - {if(0 === width)return width; - var c=peek_char(ib); - return ib[1] - ?width - :9 < c - 48 >>> 0 - ?width - :scan_decimal_digit_star(store_char(width,ib,c),ib)} - function scan_exponent_part(width,ib) - {if(0 === width)return width; - var c=peek_char(ib); - if(ib[1])return width; - if(69 !== c && 101 !== c)return width; - return scan_optionally_signed_decimal(store_char(width,ib,c),ib)} - function scan_float(width$1,precision,ib) - {var - width=scan_sign(width$1,ib), - width$0=scan_decimal_digit_star(width,ib); - if(0 === width$0)return [0,width$0,precision]; - var c=peek_char(ib); - if(ib[1])return [0,width$0,precision]; - if(46 === c) - {var - width$2=store_char(width$0,ib,c), - precision$0=min$1(width$2,precision), - width$3= - width$2 - - - (precision$0 - scan_fractional_part(precision$0,ib) | 0) - | - 0; - return [0,scan_exponent_part(width$3,ib),precision$0]} - return [0,scan_exponent_part(width$0,ib),precision]} - function check_case_insensitive_string(width,ib,error,str) - {function lowercase(c) - {return 25 < c - 65 >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)} - var - len=caml_ml_string_length(str), - width$0=[0,width], - _i1_=len - 1 | 0, - _i0_=0; - if(! (_i1_ < 0)) - {var i=_i0_; - for(;;) - {var c=peek_char(ib),_i2_=lowercase(caml_string_get(str,i)); - if(lowercase(c) !== _i2_)caml_call1(error,0); - if(0 === width$0[1])caml_call1(error,0); - width$0[1] = store_char(width$0[1],ib,c); - var _i3_=i + 1 | 0; - if(_i1_ !== i){var i=_i3_;continue} - break}} - return width$0[1]} - function scan_hex_float(width,precision,ib) - {var _iN_=0 === width?1:0,_iO_=_iN_ || end_of_input(ib); - if(_iO_)bad_hex_float(0); - var - width$0=scan_sign(width,ib), - _iP_=0 === width$0?1:0, - _iQ_=_iP_ || end_of_input(ib); - if(_iQ_)bad_hex_float(0); - var c=peek_char(ib),switch$0=0; - if(78 <= c) - {var switcher=c - 79 | 0; - if(30 < switcher >>> 0) - {if(! (32 <= switcher)) - {var - width$1=store_char(width$0,ib,c), - _iR_=0 === width$1?1:0, - _iS_=_iR_ || end_of_input(ib); - if(_iS_)bad_hex_float(0); - return check_case_insensitive_string - (width$1,ib,bad_hex_float,cst_an)}} - else - if(26 === switcher)switch$0 = 1} - else - {if(48 === c) - {var - width$3=store_char(width$0,ib,c), - _iV_=0 === width$3?1:0, - _iW_=_iV_ || end_of_input(ib); - if(_iW_)bad_hex_float(0); - var - width$4= - check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2); - if(0 !== width$4 && ! end_of_input(ib)) - {var match=peek_char(ib),_iX_=match - 46 | 0,switch$1=0; - if(34 < _iX_ >>> 0) - {if(66 === _iX_)switch$1 = 1} - else - if(32 < _iX_ - 1 >>> 0)switch$1 = 1; - var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib); - if(0 !== width$5 && ! end_of_input(ib)) - {var c$0=peek_char(ib); - if(46 === c$0) - {var width$6=store_char(width$5,ib,c$0),switch$2=0; - if(0 !== width$6 && ! end_of_input(ib)) - {var match$0=peek_char(ib),switch$3=0; - if(80 !== match$0 && 112 !== match$0) - {var - precision$0=min$1(width$6,precision), - width$10= - width$6 - - - (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) - | - 0; - switch$3 = 1} - if(! switch$3)var width$10=width$6; - var width$7=width$10; - switch$2 = 1} - if(! switch$2)var width$7=width$6; - var width$8=width$7} - else - var width$8=width$5; - if(0 !== width$8 && ! end_of_input(ib)) - {var c$1=peek_char(ib); - if(80 !== c$1 && 112 !== c$1)return width$8; - var - width$9=store_char(width$8,ib,c$1), - _iY_=0 === width$9?1:0, - _iZ_=_iY_ || end_of_input(ib); - if(_iZ_)bad_hex_float(0); - return scan_optionally_signed_decimal(width$9,ib)} - return width$8} - return width$5} - return width$4} - if(73 === c)switch$0 = 1} - if(switch$0) - {var - width$2=store_char(width$0,ib,c), - _iT_=0 === width$2?1:0, - _iU_=_iT_ || end_of_input(ib); - if(_iU_)bad_hex_float(0); - return check_case_insensitive_string - (width$2,ib,bad_hex_float,cst_nfinity)} - return bad_hex_float(0)} - function scan_caml_float_rest(width,precision,ib) - {var _iJ_=0 === width?1:0,_iK_=_iJ_ || end_of_input(ib); - if(_iK_)bad_float(0); - var - width$0=scan_decimal_digit_star(width,ib), - _iL_=0 === width$0?1:0, - _iM_=_iL_ || end_of_input(ib); - if(_iM_)bad_float(0); - var c=peek_char(ib),switcher=c - 69 | 0; - if(32 < switcher >>> 0) - {if(-23 === switcher) - {var - width$1=store_char(width$0,ib,c), - precision$0=min$1(width$1,precision), - width_precision=scan_fractional_part(precision$0,ib), - frac_width=precision$0 - width_precision | 0, - width$2=width$1 - frac_width | 0; - return scan_exponent_part(width$2,ib)}} - else - if(30 < switcher - 1 >>> 0)return scan_exponent_part(width$0,ib); - return bad_float(0)} - function scan_caml_float(width,precision,ib) - {var _iv_=0 === width?1:0,_iw_=_iv_ || end_of_input(ib); - if(_iw_)bad_float(0); - var - width$0=scan_sign(width,ib), - _ix_=0 === width$0?1:0, - _iy_=_ix_ || end_of_input(ib); - if(_iy_)bad_float(0); - var c=peek_char(ib); - if(49 <= c) - {if(! (58 <= c)) - {var - width$1=store_char(width$0,ib,c), - _iz_=0 === width$1?1:0, - _iA_=_iz_ || end_of_input(ib); - if(_iA_)bad_float(0); - return scan_caml_float_rest(width$1,precision,ib)}} - else - if(48 <= c) - {var - width$2=store_char(width$0,ib,c), - _iB_=0 === width$2?1:0, - _iC_=_iB_ || end_of_input(ib); - if(_iC_)bad_float(0); - var c$0=peek_char(ib); - if(88 !== c$0 && 120 !== c$0) - return scan_caml_float_rest(width$2,precision,ib); - var - width$3=store_char(width$2,ib,c$0), - _iD_=0 === width$3?1:0, - _iE_=_iD_ || end_of_input(ib); - if(_iE_)bad_float(0); - var - width$4=scan_hexadecimal_int(width$3,ib), - _iF_=0 === width$4?1:0, - _iG_=_iF_ || end_of_input(ib); - if(_iG_)bad_float(0); - var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; - if(32 < switcher >>> 0) - if(-34 === switcher) - {var width$5=store_char(width$4,ib,c$1),switch$1=0; - if(0 !== width$5 && ! end_of_input(ib)) - {var match=peek_char(ib),switch$2=0; - if(80 !== match && 112 !== match) - {var - precision$0=min$1(width$5,precision), - width$10= - width$5 - - - (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) - | - 0; - switch$2 = 1} - if(! switch$2)var width$10=width$5; - var width$6=width$10; - switch$1 = 1} - if(! switch$1)var width$6=width$5; - var width$7=width$6} - else - switch$0 = 1; - else - if(30 < switcher - 1 >>> 0)var width$7=width$4;else switch$0 = 1; - var width$8=switch$0?bad_float(0):width$7; - if(0 !== width$8 && ! end_of_input(ib)) - {var c$2=peek_char(ib); - if(80 !== c$2 && 112 !== c$2)return width$8; - var - width$9=store_char(width$8,ib,c$2), - _iH_=0 === width$9?1:0, - _iI_=_iH_ || end_of_input(ib); - if(_iI_)bad_hex_float(0); - return scan_optionally_signed_decimal(width$9,ib)} - return width$8} - return bad_float(0)} - function scan_string(stp,width,ib) - {var width$0=width; - for(;;) - {if(0 === width$0)return width$0; - var c=peek_char(ib); - if(ib[1])return width$0; - if(stp) - {var c$0=stp[1]; - if(c === c$0)return skip_char(width$0,ib); - var width$1=store_char(width$0,ib,c),width$0=width$1; - continue} - var _iu_=c - 9 | 0,switch$0=0; - if(4 < _iu_ >>> 0) - {if(23 === _iu_)switch$0 = 1} - else - if(1 < _iu_ - 2 >>> 0)switch$0 = 1; - if(switch$0)return width$0; - var width$2=store_char(width$0,ib,c),width$0=width$2; - continue}} - function scan_char(width,ib) - {return store_char(width,ib,checked_peek_char(ib))} - function hexadecimal_value_of_char(d) - {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0} - function check_next_char(message,width,ib) - {if(0 === width)return bad_token_length(message); - var c=peek_char(ib); - return ib[1]?bad_input(caml_call1(sprintf(_cn_),message)):c} - function check_next_char_for_char(_is_,_it_) - {return check_next_char(cst_a_Char,_is_,_it_)} - function check_next_char_for_string(_iq_,_ir_) - {return check_next_char(cst_a_String,_iq_,_ir_)} - function scan_backslash_char(width,ib) - {var c0=check_next_char_for_char(width,ib),switch$0=0; - if(40 <= c0) - {if(58 <= c0) - {var switcher=c0 - 92 | 0; - if(! (28 < switcher >>> 0)) - switch(switcher) - {case 28: - var - get_digit= - function(param) - {var c=next_char(ib),_ip_=c - 48 | 0,switch$0=0; - if(22 < _ip_ >>> 0) - {if(! (5 < _ip_ - 49 >>> 0))switch$0 = 1} - else - if(6 < _ip_ - 10 >>> 0)switch$0 = 1; - return switch$0?c:bad_input_escape(c)}, - c1=get_digit(0), - c2=get_digit(0), - _il_=hexadecimal_value_of_char(c2), - c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _il_ | 0, - switch$1=0; - if(0 <= c$0 && ! (255 < c$0)) - {var _in_=char_of_int(c$0);switch$1 = 1} - if(! switch$1) - var _in_=bad_input(caml_call2(sprintf(_cu_),c1,c2)); - return store_char(width - 2 | 0,ib,_in_); - case 0: - case 6: - case 18: - case 22: - case 24:switch$0 = 1;break - }} - else - if(48 <= c0) - {var - get_digit$0= - function(param) - {var c=next_char(ib); - return 9 < c - 48 >>> 0?bad_input_escape(c):c}, - c1$0=get_digit$0(0), - c2$0=get_digit$0(0), - c= - ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0) - + - (c2$0 - 48 | 0) - | - 0, - switch$2=0; - if(0 <= c && ! (255 < c)){var _io_=char_of_int(c);switch$2 = 1} - if(! switch$2) - var _io_=bad_input(caml_call3(sprintf(_ct_),c0,c1$0,c2$0)); - return store_char(width - 2 | 0,ib,_io_)}} - else - if(34 === c0 || 39 <= c0)switch$0 = 1; - if(switch$0) - {var switch$3=0; - if(110 <= c0) - if(117 <= c0) - switch$3 = 1; - else - switch(c0 - 110 | 0) - {case 0:var _im_=10;break; - case 4:var _im_=13;break; - case 6:var _im_=9;break; - default:switch$3 = 1} - else - if(98 === c0)var _im_=8;else switch$3 = 1; - if(switch$3)var _im_=c0; - return store_char(width,ib,_im_)} - return bad_input_escape(c0)} - function scan_caml_char(width,ib) - {function find_stop(width) - {var c=check_next_char_for_char(width,ib); - return 39 === c?ignore_char(width,ib):character_mismatch(39,c)} - var c=checked_peek_char(ib); - if(39 === c) - {var - width$0=ignore_char(width,ib), - c$0=check_next_char_for_char(width$0,ib); - return 92 === c$0 - ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib)) - :find_stop(store_char(width$0,ib,c$0))} - return character_mismatch(39,c)} - function scan_caml_string(width,ib) - {function find_stop$0(counter,width) - {var width$0=width; - for(;;) - {var c=check_next_char_for_string(width$0,ib); - if(34 === c)return ignore_char(width$0,ib); - if(92 === c) - {var - width$1=ignore_char(width$0,ib), - match=check_next_char_for_string(width$1,ib); - if(10 === match) - {var _ij_=ignore_char(width$1,ib); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_spaces(counter$0,_ij_)} - return caml_trampoline_return(skip_spaces,[0,_ij_])} - if(13 === match) - {var - width$3=ignore_char(width$1,ib), - match$0=check_next_char_for_string(width$3,ib); - if(10 === match$0) - {var _ik_=ignore_char(width$3,ib); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_spaces(counter$1,_ik_)} - return caml_trampoline_return(skip_spaces,[0,_ik_])} - var width$5=store_char(width$3,ib,13),width$0=width$5; - continue} - var width$4=scan_backslash_char(width$1,ib),width$0=width$4; - continue} - var width$2=store_char(width$0,ib,c),width$0=width$2; - continue}} - function skip_spaces(counter,width) - {var width$0=width; - for(;;) - {var match=check_next_char_for_string(width$0,ib); - if(32 === match) - {var width$1=ignore_char(width$0,ib),width$0=width$1;continue} - if(counter < 50) - {var counter$0=counter + 1 | 0; - return find_stop$0(counter$0,width$0)} - return caml_trampoline_return(find_stop$0,[0,width$0])}} - function find_stop(width){return caml_trampoline(find_stop$0(0,width))} - var c=checked_peek_char(ib); - return 34 === c - ?find_stop(ignore_char(width,ib)) - :character_mismatch(34,c)} - function scan_chars_in_char_set(char_set,scan_indic,width,ib) - {function scan_chars(i,stp) - {var i$0=i; - for(;;) - {var c=peek_char(ib),_if_=0 < i$0?1:0; - if(_if_) - {var _ig_=1 - ib[1]; - if(_ig_) - var _ih_=is_in_char_set(char_set,c),_ii_=_ih_?c !== stp?1:0:_ih_; - else - var _ii_=_ig_} - else - var _ii_=_if_; - if(_ii_) - {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} - return _ii_}} - if(scan_indic) - {var c=scan_indic[1]; - scan_chars(width,c); - var _ie_=1 - ib[1]; - if(_ie_) - {var ci=peek_char(ib); - return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} - return _ie_} - return scan_chars(width,-1)} - function scanf_bad_input(ib,x) - {if(x[1] === Scan_failure) - var s=x[2]; - else - {if(x[1] !== Failure)throw x;var s=x[2]} - var i=char_count(ib); - return bad_input(caml_call2(sprintf(_cw_),i,s))} - function get_counter(ib,counter) - {switch(counter) - {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}} - function width_of_pad_opt(pad_opt) - {if(pad_opt){var width=pad_opt[1];return width}return max_int} - function stopper_of_formatting_lit(fmting) - {if(6 === fmting)return _cx_; - var - str=string_of_formatting_lit(fmting), - stp=caml_string_get(str,1), - sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0); - return [0,stp,sub_str]} - function take_format_readers$0(counter,k,fmt) - {var fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k,0); - else - switch(fmt$0[0]) - {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; - case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue; - case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; - case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; - case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue; - case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue; - case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue; - case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue; - case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue; - case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue; - case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue; - case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue; - case 12:var fmt$13=fmt$0[2],fmt$0=fmt$13;continue; - case 13:var fmt$14=fmt$0[3],fmt$0=fmt$14;continue; - case 14: - var rest=fmt$0[3],fmtty=fmt$0[2],_ic_=erase_rel(symm(fmtty)); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return take_fmtty_format_readers$0(counter$0,k,_ic_,rest)} - return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,_ic_,rest]); - case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue; - case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue; - case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue; - case 18: - var _id_=fmt$0[1]; - if(0 === _id_[0]) - {var - rest$0=fmt$0[2], - match=_id_[1], - fmt$18=match[1], - fmt$19=concat_fmt(fmt$18,rest$0), - fmt$0=fmt$19; - continue} - var - rest$1=fmt$0[2], - match$0=_id_[1], - fmt$20=match$0[1], - fmt$21=concat_fmt(fmt$20,rest$1), - fmt$0=fmt$21; - continue; - case 19: - var fmt_rest=fmt$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_format_readers(new_k,fmt_rest)}; - case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue; - case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue; - case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue; - case 23: - var rest$2=fmt$0[2],ign=fmt$0[1]; - if(typeof ign === "number") - switch(ign) - {case 0:var fmt$0=rest$2;continue; - case 1:var fmt$0=rest$2;continue; - case 2: - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_format_readers(new_k,rest$2)}; - default:var fmt$0=rest$2;continue} - else - switch(ign[0]) - {case 0:var fmt$0=rest$2;continue; - case 1:var fmt$0=rest$2;continue; - case 2:var fmt$0=rest$2;continue; - case 3:var fmt$0=rest$2;continue; - case 4:var fmt$0=rest$2;continue; - case 5:var fmt$0=rest$2;continue; - case 6:var fmt$0=rest$2;continue; - case 7:var fmt$0=rest$2;continue; - case 8:var fmt$0=rest$2;continue; - case 9: - var fmtty$0=ign[2]; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return take_fmtty_format_readers$0 - (counter$1,k,fmtty$0,rest$2)} - return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]); - case 10:var fmt$0=rest$2;continue; - default:var fmt$0=rest$2;continue} - default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}} - function take_fmtty_format_readers$0(counter,k,fmtty,fmt) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - {if(counter < 50) - {var counter$0=counter + 1 | 0; - return take_format_readers$0(counter$0,k,fmt)} - return caml_trampoline_return(take_format_readers$0,[0,k,fmt])} - else - switch(fmtty$0[0]) - {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; - case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue; - case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue; - case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue; - case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue; - case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue; - case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue; - case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue; - case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue; - case 9: - var - rest=fmtty$0[3], - ty2=fmtty$0[2], - ty1=fmtty$0[1], - ty=trans(symm(ty1),ty2), - fmtty$10=concat_fmtty(ty,rest), - fmtty$0=fmtty$10; - continue; - case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue; - case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue; - case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue; - case 13: - var fmt_rest=fmtty$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_fmtty_format_readers(new_k,fmt_rest,fmt)}; - default: - var fmt_rest$0=fmtty$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}} - function take_format_readers(k,fmt) - {return caml_trampoline(take_format_readers$0(0,k,fmt))} - function take_fmtty_format_readers(k,fmtty,fmt) - {return caml_trampoline(take_fmtty_format_readers$0(0,k,fmtty,fmt))} - function make_scanf(ib,fmt,readers) - {var fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return 0; - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - scan_char(0,ib); - var c=token_char(ib); - return [0,c,make_scanf(ib,rest,readers)]; - case 1: - var rest$0=fmt$0[1]; - scan_caml_char(0,ib); - var c$0=token_char(ib); - return [0,c$0,make_scanf(ib,rest$0,readers)]; - case 2: - var _h1_=fmt$0[1],_h2_=fmt$0[2]; - if(typeof _h2_ !== "number") - switch(_h2_[0]) - {case 17: - var - rest$2=_h2_[2], - fmting_lit=_h2_[1], - match=stopper_of_formatting_lit(fmting_lit), - str=match[2], - stp=match[1], - scan$0= - function(width,param,ib) - {return scan_string([0,stp],width,ib)}, - str_rest=[11,str,rest$2]; - return pad_prec_scanf - (ib,str_rest,readers,_h1_,0,scan$0,token_string); - case 18: - var _h3_=_h2_[1]; - if(0 === _h3_[0]) - {var - rest$3=_h2_[2], - match$0=_h3_[1], - fmt$1=match$0[1], - scan$1= - function(width,param,ib){return scan_string(_cy_,width,ib)}; - return pad_prec_scanf - (ib, - concat_fmt(fmt$1,rest$3), - readers, - _h1_, - 0, - scan$1, - token_string)} - var - rest$4=_h2_[2], - match$1=_h3_[1], - fmt$2=match$1[1], - scan$2= - function(width,param,ib){return scan_string(_cz_,width,ib)}; - return pad_prec_scanf - (ib, - concat_fmt(fmt$2,rest$4), - readers, - _h1_, - 0, - scan$2, - token_string) - } - var - rest$1=fmt$0[2], - scan=function(width,param,ib){return scan_string(0,width,ib)}; - return pad_prec_scanf(ib,rest$1,readers,_h1_,0,scan,token_string); - case 3: - var - rest$5=fmt$0[2], - pad=fmt$0[1], - scan$3=function(width,param,ib){return scan_caml_string(width,ib)}; - return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string); - case 4: - var - rest$6=fmt$0[4], - prec=fmt$0[3], - pad$0=fmt$0[2], - iconv=fmt$0[1], - conv=integer_conversion_of_char(char_of_iconv(iconv)), - scan$4= - function(width,param,ib) - {return scan_int_conversion(conv,width,ib)}; - return pad_prec_scanf - (ib, - rest$6, - readers, - pad$0, - prec, - scan$4, - function(ib) - {return caml_int_of_string(token_int_literal(conv,ib))}); - case 5: - var - rest$7=fmt$0[4], - prec$0=fmt$0[3], - pad$1=fmt$0[2], - iconv$0=fmt$0[1], - conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)), - scan$5= - function(width,param,ib) - {return scan_int_conversion(conv$0,width,ib)}; - return pad_prec_scanf - (ib, - rest$7, - readers, - pad$1, - prec$0, - scan$5, - function(ib) - {return caml_int_of_string(token_int_literal(conv$0,ib))}); - case 6: - var - rest$8=fmt$0[4], - prec$1=fmt$0[3], - pad$2=fmt$0[2], - iconv$1=fmt$0[1], - conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)), - scan$6= - function(width,param,ib) - {return scan_int_conversion(conv$1,width,ib)}; - return pad_prec_scanf - (ib, - rest$8, - readers, - pad$2, - prec$1, - scan$6, - function(ib) - {return caml_int_of_string(token_int_literal(conv$1,ib))}); - case 7: - var - rest$9=fmt$0[4], - prec$2=fmt$0[3], - pad$3=fmt$0[2], - iconv$2=fmt$0[1], - conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)), - scan$7= - function(width,param,ib) - {return scan_int_conversion(conv$2,width,ib)}; - return pad_prec_scanf - (ib, - rest$9, - readers, - pad$3, - prec$2, - scan$7, - function(ib) - {return caml_int64_of_string(token_int_literal(conv$2,ib))}); - case 8: - switch(fmt$0[1][2]) - {case 5: - case 8: - var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2]; - return pad_prec_scanf - (ib, - rest$11, - readers, - pad$5, - prec$4, - scan_caml_float, - token_float); - case 6: - case 7: - var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2]; - return pad_prec_scanf - (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float); - default: - var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2]; - return pad_prec_scanf - (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)} - case 9: - var - rest$13=fmt$0[2], - pad$7=fmt$0[1], - scan$8= - function(param,_ib_,ib) - {var - c=checked_peek_char(ib), - m= - 102 === c - ?5 - :116 === c?4:bad_input(caml_call1(sprintf(_cv_),c)); - return scan_string(0,m,ib)}; - return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); - case 10: - var rest$14=fmt$0[1]; - if(end_of_input(ib)){var fmt$0=rest$14;continue} - return bad_input(cst_end_of_input_not_found); - case 11: - var rest$15=fmt$0[2],str$0=fmt$0[1]; - iter$4(function(_ia_){return check_char(ib,_ia_)},str$0); - var fmt$0=rest$15; - continue; - case 12: - var rest$16=fmt$0[2],chr=fmt$0[1]; - check_char(ib,chr); - var fmt$0=rest$16; - continue; - case 13: - var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; - scan_caml_string(width_of_pad_opt(pad_opt),ib); - var s=token_string(ib); - try - {var _h4_=format_of_string_fmtty(s,fmtty),fmt$3=_h4_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Failure)throw exn; - var msg=exn[2],fmt$3=bad_input(msg)} - return [0,fmt$3,make_scanf(ib,rest$17,readers)]; - case 14: - var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; - scan_caml_string(width_of_pad_opt(pad_opt$0),ib); - var s$0=token_string(ib); - try - {var - match$2=fmt_ebb_of_string(0,s$0), - fmt$6=match$2[1], - match$3=fmt_ebb_of_string(0,s$0), - fmt$7=match$3[1], - fmt$8=type_format(fmt$7,erase_rel(symm(fmtty$0))), - _h6_=type_format(fmt$6,erase_rel(fmtty$0)), - fmt$5=fmt$8, - fmt$4=_h6_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Failure)throw exn; - var - msg$0=exn[2], - _h5_=bad_input(msg$0), - fmt$5=_h5_[2], - fmt$4=_h5_[1]} - return [0, - [0,fmt$4,s$0], - make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; - case 15:return invalid_arg(cst_scanf_bad_conversion_a); - case 16:return invalid_arg(cst_scanf_bad_conversion_t); - case 17: - var - rest$19=fmt$0[2], - formatting_lit=fmt$0[1], - _h7_=string_of_formatting_lit(formatting_lit); - iter$4(function(_h$_){return check_char(ib,_h$_)},_h7_); - var fmt$0=rest$19; - continue; - case 18: - var _h8_=fmt$0[1]; - if(0 === _h8_[0]) - {var rest$20=fmt$0[2],match$4=_h8_[1],fmt$9=match$4[1]; - check_char(ib,64); - check_char(ib,123); - var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10; - continue} - var rest$21=fmt$0[2],match$5=_h8_[1],fmt$11=match$5[1]; - check_char(ib,64); - check_char(ib,91); - var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; - continue; - case 19: - var fmt_rest=fmt$0[1]; - if(readers) - {var - readers_rest=readers[2], - reader=readers[1], - x=caml_call1(reader,ib); - return [0,x,make_scanf(ib,fmt_rest,readers_rest)]} - return invalid_arg(cst_scanf_missing_reader); - case 20: - var _h9_=fmt$0[1],_h__=fmt$0[3]; - if(typeof _h__ !== "number" && 17 === _h__[0]) - {var - rest$23=_h__[2], - fmting_lit$0=_h__[1], - char_set$0=fmt$0[2], - match$6=stopper_of_formatting_lit(fmting_lit$0), - str$1=match$6[2], - stp$0=match$6[1], - width$0=width_of_pad_opt(_h9_); - scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib); - var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23]; - return [0,s$2,make_scanf(ib,str_rest$0,readers)]} - var - rest$22=fmt$0[3], - char_set=fmt$0[2], - width=width_of_pad_opt(_h9_); - scan_chars_in_char_set(char_set,0,width,ib); - var s$1=token_string(ib); - return [0,s$1,make_scanf(ib,rest$22,readers)]; - case 21: - var - rest$24=fmt$0[2], - counter=fmt$0[1], - count=get_counter(ib,counter); - return [0,count,make_scanf(ib,rest$24,readers)]; - case 22: - var rest$25=fmt$0[1],c$1=checked_peek_char(ib); - return [0,c$1,make_scanf(ib,rest$25,readers)]; - case 23: - var - rest$26=fmt$0[2], - ign=fmt$0[1], - match$7=param_format_of_ignored_format(ign,rest$26), - fmt$13=match$7[1], - match$8=make_scanf(ib,fmt$13,readers); - if(match$8){var arg_rest=match$8[2];return arg_rest} - throw [0,Assert_failure,_cA_]; - default:return invalid_arg(cst_scanf_bad_conversion_custo)}} - function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) - {if(typeof pad === "number") - {if(typeof prec === "number") - {if(prec)return invalid_arg(cst_scanf_bad_conversion); - caml_call3(scan,max_int,max_int,ib); - var x=caml_call1(token,ib); - return [0,x,make_scanf(ib,fmt,readers)]} - var p=prec[1]; - caml_call3(scan,max_int,p,ib); - var x$0=caml_call1(token,ib); - return [0,x$0,make_scanf(ib,fmt,readers)]} - else - {if(0 === pad[0]) - {if(pad[1]) - {var _h0_=pad[2]; - if(typeof prec === "number") - {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); - caml_call3(scan,_h0_,max_int,ib); - var x$1=caml_call1(token,ib); - return [0,x$1,make_scanf(ib,fmt,readers)]} - var p$0=prec[1]; - caml_call3(scan,_h0_,p$0,ib); - var x$2=caml_call1(token,ib); - return [0,x$2,make_scanf(ib,fmt,readers)]} - return invalid_arg(cst_scanf_bad_conversion$1)} - return invalid_arg(cst_scanf_bad_conversion$2)}} - function kscanf(ib,ef,param) - {var str=param[2],fmt=param[1]; - function apply(f,args) - {var f$0=f,args$0=args; - for(;;) - {if(args$0) - {var - r=args$0[2], - x=args$0[1], - f$1=caml_call1(f$0,x), - f$0=f$1, - args$0=r; - continue} - return f$0}} - function k(readers,f) - {reset_token(ib); - try - {var _hZ_=[0,make_scanf(ib,fmt,readers)],_hY_=_hZ_} - catch(exc) - {exc = caml_wrap_exception(exc); - var switch$0=0; - if - (exc[1] - !== - Scan_failure - && - exc[1] - !== - Failure - && - exc - !== - End_of_file) - {if(exc[1] !== Invalid_argument)throw exc; - var - msg=exc[2], - _hX_= - invalid_arg - (cat(msg,cat(cst_in_format,cat(escaped$1(str),cst$88)))); - switch$0 = 1} - if(! switch$0)var _hX_=[1,exc]; - var _hY_=_hX_} - if(0 === _hY_[0]){var args=_hY_[1];return apply(f,args)} - var exc=_hY_[1]; - return caml_call2(ef,ib,exc)} - return take_format_readers(k,fmt)} - function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} - function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)} - function sscanf(s,fmt) - {return kscanf(from_string$1(s),scanf_bad_input,fmt)} - function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)} - function bscanf_format(ib,format,f) - {scan_caml_string(max_int,ib); - var str=token_string(ib); - try - {var _hW_=format_of_string_format(str,format),fmt=_hW_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Failure)throw exn; - var msg=exn[2],fmt=bad_input(msg)} - return caml_call1(f,fmt)} - function sscanf_format(s,format,f) - {return bscanf_format(from_string$1(s),format,f)} - function format_from_string(s,fmt) - {function _hV_(x){return x} - return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_hV_)} - function unescaped(s) - {function _hU_(x){return x} - return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cB_),_hU_)} - function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)} - function fscanf(ic,fmt) - {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)} - var - Stdlib_Scanf= - [0, - [0, - stdib, - from_file, - from_file_bin, - close_in$0, - from_file, - from_file_bin, - from_string$1, - from_function$0, - from_channel$0, - end_of_input, - beginning_of_input, - name_of_input, - stdib], - Scan_failure, - bscanf, - sscanf, - scanf, - kscanf, - ksscanf, - bscanf_format, - sscanf_format, - format_from_string, - unescaped, - fscanf, - kfscanf]; - caml_register_global(803,Stdlib_Scanf,"Stdlib__Scanf"); - function register(name,v){return caml_register_named_value(name,v)} - function register_exception(name,exn) - {var slot=caml_obj_tag(exn) === 248?exn:exn[1]; - return caml_register_named_value(name,slot)} - var Stdlib_Callback=[0,register,register_exception]; - caml_register_global(804,Stdlib_Callback,"Stdlib__Callback"); - function copy$7(o){var o$0=o.slice();return caml_set_oo_id(o$0)} - var params$0=[0,1,1,1,3,16],initial_object_size=2,dummy_item=0; - function public_method_label(s) - {var accu=[0,0],_hR_=caml_ml_string_length(s) - 1 | 0,_hQ_=0; - if(! (_hR_ < 0)) - {var i=_hQ_; - for(;;) - {var _hS_=caml_string_get(s,i); - accu[1] = (223 * accu[1] | 0) + _hS_ | 0; - var _hT_=i + 1 | 0; - if(_hR_ !== i){var i=_hT_;continue} - break}} - accu[1] = accu[1] & 2147483647; - var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; - return tag} - function compare$13(x,y){return caml_string_compare(x,y)} - var Vars=caml_call1(Stdlib_Map[1],[0,compare$13]); - function compare$14(x,y){return caml_string_compare(x,y)} - var - Meths=caml_call1(Stdlib_Map[1],[0,compare$14]), - compare$15=caml_int_compare, - Labs=caml_call1(Stdlib_Map[1],[0,compare$15]), - dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0], - table_count=[0,0], - dummy_met=caml_obj_block(0,0); - function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n} - function new_table(pub_labels) - {table_count[1]++; - var - len=pub_labels.length - 1, - methods=caml_make_vect((len * 2 | 0) + 2 | 0,dummy_met); - caml_check_bound(methods,0)[1] = len; - var _hK_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; - caml_check_bound(methods,1)[2] = _hK_; - var _hM_=len - 1 | 0,_hL_=0; - if(! (_hM_ < 0)) - {var i=_hL_; - for(;;) - {var - _hO_=(i * 2 | 0) + 3 | 0, - _hN_=caml_check_bound(pub_labels,i)[1 + i]; - caml_check_bound(methods,_hO_)[1 + _hO_] = _hN_; - var _hP_=i + 1 | 0; - if(_hM_ !== i){var i=_hP_;continue} - break}} - return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]} - function resize$1(array,new_size) - {var old_size=array[2].length - 1,_hI_=old_size < new_size?1:0; - if(_hI_) - {var new_buck=caml_make_vect(new_size,dummy_met); - blit$1(array[2],0,new_buck,0,old_size); - array[2] = new_buck; - var _hJ_=0} - else - var _hJ_=_hI_; - return _hJ_} - var method_count=[0,0],inst_var_count=[0,0]; - function new_method(table) - {var index=table[2].length - 1; - resize$1(table,index + 1 | 0); - return index} - function get_method_label(table,name) - {try - {var _hG_=caml_call2(Meths[28],name,table[3]);return _hG_} - catch(_hH_) - {_hH_ = caml_wrap_exception(_hH_); - if(_hH_ === Not_found) - {var label=new_method(table); - table[3] = caml_call3(Meths[4],name,label,table[3]); - table[4] = caml_call3(Labs[4],label,1,table[4]); - return label} - throw _hH_}} - function get_method_labels(table,names) - {return map$6(function(_hF_){return get_method_label(table,_hF_)},names)} - function set_method(table,label,element) - {method_count[1]++; - return caml_call2(Labs[28],label,table[4]) - ?(resize$1(table,label + 1 | 0), - caml_check_bound(table[2],label)[1 + label] - = - element, - 0) - :(table[6] = [0,[0,label,element],table[6]],0)} - function get_method(table,label) - {try - {var _hD_=assoc(label,table[6]);return _hD_} - catch(_hE_) - {_hE_ = caml_wrap_exception(_hE_); - if(_hE_ === Not_found) - return caml_check_bound(table[2],label)[1 + label]; - throw _hE_}} - function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} - function narrow(table,vars,virt_meths,concr_meths) - {var - vars$0=to_list$3(vars), - virt_meths$0=to_list$3(virt_meths), - concr_meths$0=to_list$3(concr_meths), - virt_meth_labs= - map$3 - (function(_hC_){return get_method_label(table,_hC_)},virt_meths$0), - concr_meth_labs= - map$3 - (function(_hB_){return get_method_label(table,_hB_)},concr_meths$0); - table[5] - = - [0, - [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0], - table[5]]; - var _hs_=Vars[1],_ht_=table[7]; - function _hu_(lab,info,tvars) - {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} - table[7] = caml_call3(Vars[13],_hu_,_ht_,_hs_); - var by_name=[0,Meths[1]],by_label=[0,Labs[1]]; - iter2 - (function(met,label) - {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); - var _hx_=by_label[1]; - try - {var _hz_=caml_call2(Labs[28],label,table[4]),_hy_=_hz_} - catch(_hA_) - {_hA_ = caml_wrap_exception(_hA_); - if(_hA_ !== Not_found)throw _hA_; - var _hy_=1} - by_label[1] = caml_call3(Labs[4],label,_hy_,_hx_); - return 0}, - concr_meths$0, - concr_meth_labs); - iter2 - (function(met,label) - {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); - by_label[1] = caml_call3(Labs[4],label,0,by_label[1]); - return 0}, - virt_meths$0, - virt_meth_labs); - table[3] = by_name[1]; - table[4] = by_label[1]; - var _hv_=0,_hw_=table[6]; - table[6] - = - fold_right - (function(met,hm) - {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]}, - _hw_, - _hv_); - return 0} - function widen(table) - {var - match=hd(table[5]), - vars=match[6], - virt_meths=match[5], - saved_vars=match[4], - saved_hidden_meths=match[3], - by_label=match[2], - by_name=match[1]; - table[5] = tl(table[5]); - table[7] - = - fold_left$0 - (function(s,v) - {var _hr_=caml_call2(Vars[28],v,table[7]); - return caml_call3(Vars[4],v,_hr_,s)}, - saved_vars, - vars); - table[3] = by_name; - table[4] = by_label; - var _hq_=table[6]; - table[6] - = - fold_right - (function(met,hm) - {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, - _hq_, - saved_hidden_meths); - return 0} - function new_slot(table) - {var index=table[1];table[1] = index + 1 | 0;return index} - function new_variable(table,name) - {try - {var _ho_=caml_call2(Vars[28],name,table[7]);return _ho_} - catch(_hp_) - {_hp_ = caml_wrap_exception(_hp_); - if(_hp_ === Not_found) - {var index=new_slot(table); - if(caml_string_notequal(name,cst$93)) - table[7] = caml_call3(Vars[4],name,index,table[7]); - return index} - throw _hp_}} - function to_array(arr){return caml_equal(arr,0)?[0]:arr} - function new_methods_variables(table,meths,vals) - {var - meths$0=to_array(meths), - nmeths=meths$0.length - 1, - nvals=vals.length - 1, - res=caml_make_vect(nmeths + nvals | 0,0), - _hg_=nmeths - 1 | 0, - _hf_=0; - if(! (_hg_ < 0)) - {var i$0=_hf_; - for(;;) - {var - _hm_= - get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]); - caml_check_bound(res,i$0)[1 + i$0] = _hm_; - var _hn_=i$0 + 1 | 0; - if(_hg_ !== i$0){var i$0=_hn_;continue} - break}} - var _hi_=nvals - 1 | 0,_hh_=0; - if(! (_hi_ < 0)) - {var i=_hh_; - for(;;) - {var - _hk_=i + nmeths | 0, - _hj_=new_variable(table,caml_check_bound(vals,i)[1 + i]); - caml_check_bound(res,_hk_)[1 + _hk_] = _hj_; - var _hl_=i + 1 | 0; - if(_hi_ !== i){var i=_hl_;continue} - break}} - return res} - function get_variable(table,name) - {try - {var _hd_=caml_call2(Vars[28],name,table[7]);return _hd_} - catch(_he_) - {_he_ = caml_wrap_exception(_he_); - if(_he_ === Not_found)throw [0,Assert_failure,_cC_]; - throw _he_}} - function get_variables(table,names) - {return map$6(function(_hc_){return get_variable(table,_hc_)},names)} - function add_initializer(table,f){table[8] = [0,f,table[8]];return 0} - function create_table(public_methods) - {if(0 === public_methods)return new_table([0]); - var - tags=map$6(public_method_label,public_methods), - table=new_table(tags); - iteri$2 - (function(i,met) - {var lab=(i * 2 | 0) + 2 | 0; - table[3] = caml_call3(Meths[4],met,lab,table[3]); - table[4] = caml_call3(Labs[4],lab,1,table[4]); - return 0}, - public_methods); - return table} - function init_class(table) - {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0; - table[8] = rev(table[8]); - return resize$1 - (table, - 3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)} - function inherits(cla,vals,virt_meths,concr_meths,param,top) - {var env=param[4],super$0=param[2]; - narrow(cla,vals,virt_meths,concr_meths); - var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla); - widen(cla); - var - _g9_=0, - _g__=to_array(concr_meths), - _g$_= - [0, - map$6 - (function(nm){return get_method(cla,get_method_label(cla,nm))},_g__), - _g9_], - _ha_=to_array(vals); - return caml_array_concat - ([0, - [0,init], - [0, - map$6(function(_hb_){return get_variable(cla,_hb_)},_ha_), - _g$_]])} - function make_class(pub_meths,class_init) - {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); - init_class(table); - return [0,caml_call1(env_init,0),class_init,env_init,0]} - function make_class_store(pub_meths,class_init,init_table) - {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); - init_class(table); - init_table[2] = class_init; - init_table[1] = env_init; - return 0} - function dummy_class(loc) - {function undef(param){throw [0,Undefined_recursive_module,loc]} - return [0,undef,undef,undef,0]} - function create_object(table) - {var obj=caml_obj_block(248,table[1]); - obj[1] = table[2]; - return caml_set_oo_id(obj)} - function create_object_opt(obj_0,table) - {if(obj_0)return obj_0; - var obj=caml_obj_block(248,table[1]); - obj[1] = table[2]; - return caml_set_oo_id(obj)} - function iter_f(obj,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],f=param$0[1]; - caml_call1(f,obj); - var param$0=l; - continue} - return 0}} - function run_initializers(obj,table) - {var inits=table[8],_g8_=0 !== inits?1:0; - return _g8_?iter_f(obj,inits):_g8_} - function run_initializers_opt(obj_0,obj,table) - {if(obj_0)return obj; - var inits=table[8]; - if(0 !== inits)iter_f(obj,inits); - return obj} - function create_object_and_run_initiali(obj_0,table) - {if(obj_0)return obj_0; - var obj=create_object(table); - run_initializers(obj,table); - return obj} - function get_data$0(param) - {if(param)return param[2];throw [0,Assert_failure,_cG_]} - function build_path(n,keys,tables) - {var res=[0,0,0,0],r=[0,res],_g4_=0; - if(! (n < 0)) - {var i=_g4_; - for(;;) - {var _g6_=r[1]; - r[1] = [0,caml_check_bound(keys,i)[1 + i],_g6_,0]; - var _g7_=i + 1 | 0; - if(n !== i){var i=_g7_;continue} - break}} - var _g5_=r[1]; - if(tables){tables[2] = _g5_;return res} - throw [0,Assert_failure,_cD_]} - function lookup_tables(root,keys) - {var tables$2=get_data$0(root); - if(tables$2) - {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2; - a: - for(;;) - {if(0 <= i) - {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables; - for(;;) - {if(tables$0) - {if(tables$0[1] === key) - {var tables$1=get_data$0(tables$0); - if(tables$1) - {var i$0=i - 1 | 0,i=i$0,tables=tables$1;continue a} - throw [0,Assert_failure,_cI_]} - if(tables$0) - {var _g3_=tables$0[3]; - if(_g3_){var tables$0=_g3_;continue} - var v=[0,key,0,0]; - if(tables$0) - {tables$0[3] = v;return build_path(i - 1 | 0,keys,v)} - throw [0,Assert_failure,_cE_]} - throw [0,Assert_failure,_cH_]} - throw [0,Assert_failure,_cF_]}} - return tables}} - return build_path(keys.length - 1 - 1 | 0,keys,root)} - function new_cache(table) - {var n=new_method(table),switch$0=0; - if - (0 - !== - (n % 2 | 0) - && - ! - ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n)) - {var n$0=new_method(table);switch$0 = 1} - if(! switch$0)var n$0=n; - caml_check_bound(table[2],n$0)[1 + n$0] = 0; - return n$0} - function set_methods(table,methods) - {var len=methods.length - 1,i=[0,0]; - for(;;) - {if(i[1] < len) - {var - _gX_=i[1], - label=caml_check_bound(methods,_gX_)[1 + _gX_], - next= - function(param) - {i[1]++; - var _g2_=i[1]; - return caml_check_bound(methods,_g2_)[1 + _g2_]}, - clo=next(0); - if(typeof clo === "number") - switch(clo) - {case 0: - var - x=next(0), - clo$0=function(x){return function(obj){return x}}(x); - break; - case 1: - var - n=next(0), - clo$0=function(n){return function(obj){return obj[1 + n]}}(n); - break; - case 2: - var - e=next(0), - n$0=next(0), - clo$0= - function(e,n){return function(obj){return obj[1 + e][1 + n]}} - (e,n$0); - break; - case 3: - var - n$1=next(0), - clo$0= - function(n) - {return function(obj){return caml_call1(obj[1][1 + n],obj)}} - (n$1); - break; - case 4: - var - n$2=next(0), - clo$0= - function(n){return function(obj,x){obj[1 + n] = x;return 0}} - (n$2); - break; - case 5: - var - f=next(0), - x$0=next(0), - clo$0= - function(f,x){return function(obj){return caml_call1(f,x)}} - (f,x$0); - break; - case 6: - var - f$0=next(0), - n$3=next(0), - clo$0= - function(f,n) - {return function(obj){return caml_call1(f,obj[1 + n])}} - (f$0,n$3); - break; - case 7: - var - f$1=next(0), - e$0=next(0), - n$4=next(0), - clo$0= - function(f,e,n) - {return function(obj) - {return caml_call1(f,obj[1 + e][1 + n])}} - (f$1,e$0,n$4); - break; - case 8: - var - f$2=next(0), - n$5=next(0), - clo$0= - function(f,n) - {return function(obj) - {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}} - (f$2,n$5); - break; - case 9: - var - f$3=next(0), - x$1=next(0), - y=next(0), - clo$0= - function(f,x,y) - {return function(obj){return caml_call2(f,x,y)}} - (f$3,x$1,y); - break; - case 10: - var - f$4=next(0), - x$2=next(0), - n$6=next(0), - clo$0= - function(f,x,n) - {return function(obj){return caml_call2(f,x,obj[1 + n])}} - (f$4,x$2,n$6); - break; - case 11: - var - f$5=next(0), - x$3=next(0), - e$1=next(0), - n$7=next(0), - clo$0= - function(f,x,e,n) - {return function(obj) - {return caml_call2(f,x,obj[1 + e][1 + n])}} - (f$5,x$3,e$1,n$7); - break; - case 12: - var - f$6=next(0), - x$4=next(0), - n$8=next(0), - clo$0= - function(f,x,n) - {return function(obj) - {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}} - (f$6,x$4,n$8); - break; - case 13: - var - f$7=next(0), - n$9=next(0), - x$5=next(0), - clo$0= - function(f,n,x) - {return function(obj){return caml_call2(f,obj[1 + n],x)}} - (f$7,n$9,x$5); - break; - case 14: - var - f$8=next(0), - e$2=next(0), - n$10=next(0), - x$6=next(0), - clo$0= - function(f,e,n,x) - {return function(obj) - {return caml_call2(f,obj[1 + e][1 + n],x)}} - (f$8,e$2,n$10,x$6); - break; - case 15: - var - f$9=next(0), - n$11=next(0), - x$7=next(0), - clo$0= - function(f,n,x) - {return function(obj) - {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}} - (f$9,n$11,x$7); - break; - case 16: - var - n$12=next(0), - x$8=next(0), - clo$0= - function(n,x) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,x)}} - (n$12,x$8); - break; - case 17: - var - n$13=next(0), - m=next(0), - clo$0= - function(n,m) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}} - (n$13,m); - break; - case 18: - var - n$14=next(0), - e$3=next(0), - m$0=next(0), - clo$0= - function(n,e,m) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}} - (n$14,e$3,m$0); - break; - case 19: - var - n$15=next(0), - m$1=next(0), - clo$0= - function(n,m) - {return function(obj) - {var _g0_=caml_call1(obj[1][1 + m],obj); - return caml_call2(obj[1][1 + n],obj,_g0_)}} - (n$15,m$1); - break; - case 20: - var m$2=next(0),x$9=next(0); - new_cache(table); - var - clo$0= - function(m,x) - {return function(obj) - {return caml_call1(caml_get_public_method(x,m,0),x)}} - (m$2,x$9); - break; - case 21: - var m$3=next(0),n$16=next(0); - new_cache(table); - var - clo$0= - function(m,n) - {return function(obj) - {var _gZ_=obj[1 + n]; - return caml_call1(caml_get_public_method(_gZ_,m,0),_gZ_)}} - (m$3,n$16); - break; - case 22: - var m$4=next(0),e$4=next(0),n$17=next(0); - new_cache(table); - var - clo$0= - function(m,e,n) - {return function(obj) - {var _gY_=obj[1 + e][1 + n]; - return caml_call1(caml_get_public_method(_gY_,m,0),_gY_)}} - (m$4,e$4,n$17); - break; - default: - var m$5=next(0),n$18=next(0); - new_cache(table); - var - clo$0= - function(m,n) - {return function(obj) - {var _g1_=caml_call1(obj[1][1 + n],obj); - return caml_call1(caml_get_public_method(_g1_,m,0),_g1_)}} - (m$5,n$18)} - else - var clo$0=clo; - set_method(table,label,clo$0); - i[1]++; - continue} - return 0}} - function stats$0(param) - {return [0,table_count[1],method_count[1],inst_var_count[1]]} - var - CamlinternalOO= - [0, - public_method_label, - new_method, - new_variable, - new_methods_variables, - get_variable, - get_variables, - get_method_label, - get_method_labels, - get_method, - set_method, - set_methods, - narrow, - widen, - add_initializer, - dummy_table, - create_table, - init_class, - inherits, - make_class, - make_class_store, - dummy_class, - copy$7, - create_object, - create_object_opt, - run_initializers, - run_initializers_opt, - create_object_and_run_initiali, - lookup_tables, - params$0, - stats$0]; - caml_register_global(805,CamlinternalOO,"CamlinternalOO"); - var Stdlib_Oo=[0,copy$7,public_method_label,public_method_label]; - caml_register_global(806,Stdlib_Oo,"Stdlib__Oo"); - function init_mod_block(loc,comps$0) - {var - length=comps$0.length - 1, - modu=caml_obj_block(0,length), - _gT_=length - 1 | 0, - _gS_=0; - if(! (_gT_ < 0)) - {var i=_gS_; - for(;;) - {var shape=caml_check_bound(comps$0,i)[1 + i]; - if(typeof shape === "number") - switch(shape) - {case 0: - var - fn$0= - function(i) - {function fn(x) - {var fn$0=modu[1 + i]; - if(fn === fn$0)throw [0,Undefined_recursive_module,loc]; - return caml_call1(fn$0,x)} - return fn}, - fn=fn$0(i), - init=fn; - break; - case 1: - var l=[]; - runtime.caml_update_dummy - (l, - [246, - function(l,i) - {return function(_gV_) - {var l$0=modu[1 + i]; - if(l === l$0)throw [0,Undefined_recursive_module,loc]; - var _gW_=caml_obj_tag(l$0); - return 250 === _gW_ - ?l$0[1] - :246 === _gW_?force_lazy_block(l$0):l$0}} - (l,i)]); - var init=l; - break; - default:var init=dummy_class(loc)} - else - if(0 === shape[0]) - var comps=shape[1],init=init_mod_block(loc,comps); - else - var v=shape[1],init=v; - modu[1 + i] = init; - var _gU_=i + 1 | 0; - if(_gT_ !== i){var i=_gU_;continue} - break}} - return modu} - function init_mod(loc,shape) - {if(typeof shape !== "number" && 0 === shape[0]) - {var comps=shape[1];return init_mod_block(loc,comps)} - return failwith(cst_CamlinternalMod_init_mod_n)} - function update_mod_block(comps$0,o,n) - {if(0 === caml_obj_tag(n) && comps$0.length - 1 <= n.length - 1) - {var _gQ_=comps$0.length - 1 - 1 | 0,_gP_=0; - if(! (_gQ_ < 0)) - {var i=_gP_; - for(;;) - {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; - if(typeof shape === "number") - if(2 === shape) - {var switch$0=0; - if(0 === caml_obj_tag(n$0) && 4 === n$0.length - 1) - {var cl=o[1 + i],j=0; - for(;;) - {cl[1 + j] = n$0[1 + j]; - var _gO_=j + 1 | 0; - if(3 !== j){var j=_gO_;continue} - break}} - else - switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_cJ_]} - else - o[1 + i] = n$0; - else - if(0 === shape[0]) - {var comps=shape[1];update_mod_block(comps,o[1 + i],n$0)} - var _gR_=i + 1 | 0; - if(_gQ_ !== i){var i=_gR_;continue} - break}} - return 0} - throw [0,Assert_failure,_cK_]} - function update_mod(shape,o,n) - {if(typeof shape !== "number" && 0 === shape[0]) - {var comps=shape[1];return update_mod_block(comps,o,n)} - return failwith(cst_CamlinternalMod_update_mod)} - var CamlinternalMod=[0,init_mod,update_mod]; - caml_register_global(807,CamlinternalMod,"CamlinternalMod"); - var - initial_buffer=caml_create_bytes(32), - buffer=[0,initial_buffer], - bufpos=[0,0]; - function reset_buffer(param) - {buffer[1] = initial_buffer;bufpos[1] = 0;return 0} - function store(c) - {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1]) - {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0); - blit(buffer[1],0,newbuffer,0,bufpos[1]); - buffer[1] = newbuffer} - caml_bytes_set(buffer[1],bufpos[1],c); - bufpos[1]++; - return 0} - function get_string(param) - {var s=sub_string(buffer[1],0,bufpos[1]); - buffer[1] = initial_buffer; - return s} - function make_lexer(keywords) - {var kwd_table=caml_call2(Stdlib_Hashtbl[1],0,17); - iter$2 - (function(s){return caml_call3(Stdlib_Hashtbl[5],kwd_table,s,[0,s])}, - keywords); - function ident_or_keyword(id) - {try - {var _gM_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _gM_} - catch(_gN_) - {_gN_ = caml_wrap_exception(_gN_); - if(_gN_ === Not_found)return [1,id]; - throw _gN_}} - function keyword_or_error(c) - {var s=make$1(1,c); - try - {var _gK_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _gK_} - catch(_gL_) - {_gL_ = caml_wrap_exception(_gL_); - if(_gL_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; - throw _gL_}} - function comment(strm) - {a: - for(;;) - {var match=peek$0(strm); - if(match) - {var switcher=match[1] - 40 | 0; - if(! (2 < switcher >>> 0)) - switch(switcher) - {case 0: - junk(strm); - var match$0=peek$0(strm); - if(match$0) - {if(42 === match$0[1]){junk(strm);comment(strm);continue} - junk(strm); - continue} - throw Failure$0; - case 1:break; - default: - junk(strm); - for(;;) - {var match$1=peek$0(strm); - if(match$1) - {var _gJ_=match$1[1]; - if(41 === _gJ_){junk(strm);return 0} - if(42 === _gJ_){junk(strm);continue} - junk(strm); - continue a} - throw Failure$0}} - junk(strm); - continue} - throw Failure$0}} - function escape(strm) - {var match=peek$0(strm); - if(match) - {var _gG_=match[1]; - if(58 <= _gG_) - {var switcher=_gG_ - 110 | 0; - if(! (6 < switcher >>> 0)) - switch(switcher) - {case 0:junk(strm);return 10; - case 4:junk(strm);return 13; - case 6:junk(strm);return 9 - }} - else - if(48 <= _gG_) - {junk(strm); - var match$0=peek$0(strm); - if(match$0) - {var _gH_=match$0[1]; - if(! (9 < _gH_ - 48 >>> 0)) - {junk(strm); - var match$1=peek$0(strm); - if(match$1) - {var _gI_=match$1[1]; - if(! (9 < _gI_ - 48 >>> 0)) - {junk(strm); - return chr - ((((_gG_ - 48 | 0) * 100 | 0) - + - ((_gH_ - 48 | 0) * 10 | 0) - | - 0) - + - (_gI_ - 48 | 0) - | - 0)}} - throw [0,Error,cst$99]}} - throw [0,Error,cst$98]} - junk(strm); - return _gG_} - throw Failure$0} - function end_exponent_part(strm) - {for(;;) - {var match=peek$0(strm); - if(match) - {var _gF_=match[1]; - if(! (9 < _gF_ - 48 >>> 0)){junk(strm);store(_gF_);continue}} - return [0,[3,caml_float_of_string(get_string(0))]]}} - function exponent_part(strm) - {var match=peek$0(strm); - if(match) - {var _gE_=match[1],switch$0=0; - if(43 !== _gE_ && 45 !== _gE_)switch$0 = 1; - if(! switch$0) - {junk(strm);store(_gE_);return end_exponent_part(strm)}} - return end_exponent_part(strm)} - function number(s) - {for(;;) - {var match=peek$0(s); - if(match) - {var _gB_=match[1]; - if(58 <= _gB_) - {var switch$0=0; - if(69 === _gB_ || 101 === _gB_)switch$0 = 1; - if(switch$0){junk(s);store(69);return exponent_part(s)}} - else - {if(46 === _gB_) - {junk(s); - store(46); - for(;;) - {var match$0=peek$0(s); - if(match$0) - {var _gC_=match$0[1],_gD_=_gC_ - 69 | 0; - if(32 < _gD_ >>> 0) - {if(! (9 < _gD_ + 21 >>> 0)){junk(s);store(_gC_);continue}} - else - if(30 < _gD_ - 1 >>> 0) - {junk(s);store(69);return exponent_part(s)}} - return [0,[3,caml_float_of_string(get_string(0))]]}} - if(48 <= _gB_){junk(s);store(_gB_);continue}}} - return [0,[2,caml_int_of_string(get_string(0))]]}} - function ident2(strm) - {for(;;) - {var match=peek$0(strm); - if(match) - {var _gz_=match[1],switch$0=0; - if(94 <= _gz_) - {var _gA_=_gz_ - 95 | 0; - if(30 < _gA_ >>> 0) - {if(! (32 <= _gA_))switch$0 = 1} - else - if(29 === _gA_)switch$0 = 1} - else - if(65 <= _gz_) - {if(92 === _gz_)switch$0 = 1} - else - if(33 <= _gz_) - switch(_gz_ - 33 | 0) - {case 0: - case 2: - case 3: - case 4: - case 5: - case 9: - case 10: - case 12: - case 14: - case 25: - case 27: - case 28: - case 29: - case 30: - case 31:switch$0 = 1;break - } - if(switch$0){junk(strm);store(_gz_);continue}} - return [0,ident_or_keyword(get_string(0))]}} - function neg_number(s) - {var match=peek$0(s); - if(match) - {var _gy_=match[1]; - if(! (9 < _gy_ - 48 >>> 0)) - {junk(s);reset_buffer(0);store(45);store(_gy_);return number(s)}} - reset_buffer(0); - store(45); - return ident2(s)} - function ident(strm) - {for(;;) - {var match=peek$0(strm); - if(match) - {var _gw_=match[1],switch$0=0; - if(91 <= _gw_) - {var _gx_=_gw_ - 95 | 0; - if(27 < _gx_ >>> 0) - {if(97 <= _gx_)switch$0 = 1} - else - if(1 !== _gx_)switch$0 = 1} - else - if(48 <= _gw_) - {if(6 < _gw_ - 58 >>> 0)switch$0 = 1} - else - if(39 === _gw_)switch$0 = 1; - if(switch$0){junk(strm);store(_gw_);continue}} - return [0,ident_or_keyword(get_string(0))]}} - function next_token$0(counter,strm) - {for(;;) - {var match=peek$0(strm); - if(match) - {var _gm_=match[1],switch$0=0; - if(124 <= _gm_) - {if(127 <= _gm_) - {if(192 <= _gm_)switch$0 = 1} - else - if(125 !== _gm_)switch$0 = 2} - else - {var _gn_=_gm_ - 65 | 0; - if(57 < _gn_ >>> 0) - {if(! (58 <= _gn_)) - switch(_gn_ + 65 | 0) - {case 34: - junk(strm); - reset_buffer(0); - for(;;) - {var match$1=peek$0(strm); - if(match$1) - {var _gp_=match$1[1]; - if(34 === _gp_){junk(strm);return [0,[4,get_string(0)]]} - if(92 === _gp_) - {junk(strm); - try - {var c$0=escape(strm)} - catch(_gv_) - {_gv_ = caml_wrap_exception(_gv_); - if(_gv_ === Failure$0)throw [0,Error,cst$96]; - throw _gv_; - var _gs_=_gv_} - store(c$0); - continue} - junk(strm); - store(_gp_); - continue} - throw Failure$0} - case 39: - junk(strm); - try - {var match$2=peek$0(strm); - if(! match$2)throw Failure$0; - var _gq_=match$2[1]; - if(92 === _gq_) - {junk(strm); - try - {var _gr_=escape(strm)} - catch(_gu_) - {_gu_ = caml_wrap_exception(_gu_); - if(_gu_ === Failure$0)throw [0,Error,cst$97]; - throw _gu_} - var c=_gr_} - else - {junk(strm);var c=_gq_}} - catch(_gt_) - {_gt_ = caml_wrap_exception(_gt_); - if(_gt_ === Failure$0)throw [0,Error,cst$94]; - throw _gt_} - var match$0=peek$0(strm); - if(match$0 && 39 === match$0[1]) - {junk(strm);return [0,[5,c]]} - throw [0,Error,cst$95]; - case 40: - junk(strm); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return maybe_comment(counter$0,strm)} - return caml_trampoline_return(maybe_comment,[0,strm]); - case 45:junk(strm);return neg_number(strm); - case 9: - case 10: - case 12: - case 13: - case 26: - case 32:junk(strm);continue; - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - junk(strm);reset_buffer(0);store(_gm_);return number(strm); - case 33: - case 35: - case 36: - case 37: - case 38: - case 42: - case 43: - case 47: - case 58: - case 60: - case 61: - case 62: - case 63: - case 64:switch$0 = 2;break - }} - else - {var _go_=_gn_ - 26 | 0; - if(5 < _go_ >>> 0) - switch$0 = 1; - else - switch(_go_) - {case 4:switch$0 = 1;break;case 1:case 3:switch$0 = 2;break}}} - switch(switch$0) - {case 0:junk(strm);return [0,keyword_or_error(_gm_)]; - case 1: - junk(strm);reset_buffer(0);store(_gm_);return ident(strm); - default: - junk(strm);reset_buffer(0);store(_gm_);return ident2(strm)}} - return 0}} - function maybe_comment(counter,strm) - {var match=peek$0(strm); - if(match && 42 === match[1]) - {junk(strm); - comment(strm); - if(counter < 50) - {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)} - return caml_trampoline_return(next_token$0,[0,strm])} - return [0,keyword_or_error(40)]} - function next_token(strm){return caml_trampoline(next_token$0(0,strm))} - return function(input) - {return from(function(count){return next_token(input)})}} - var Stdlib_Genlex=[0,make_lexer]; - caml_register_global(808,Stdlib_Genlex,"Stdlib__Genlex"); - function MakeSeeded$0(H) - {var prng=[246,function(_gl_){return caml_call1(_cb_[2],0)}]; - function create(opt,initial_size) - {if(opt) - var sth=opt[1],random=sth; - else - var random=caml_call1(Stdlib_Hashtbl[17],0); - var x=16; - for(;;) - {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0))) - {var x$0=x * 2 | 0,x=x$0;continue} - if(random) - var - _gj_=caml_obj_tag(prng), - _gk_=250 === _gj_?prng[1]:246 === _gj_?force_lazy_block(prng):prng, - seed=caml_call1(_cb_[4],_gk_); - else - var seed=0; - return [0,0,caml_make_vect(x,0),seed,x]}} - function clear(h) - {h[1] = 0; - var len=h[2].length - 1,_gh_=len - 1 | 0,_gg_=0; - if(! (_gh_ < 0)) - {var i=_gg_; - for(;;) - {caml_check_bound(h[2],i)[1 + i] = 0; - var _gi_=i + 1 | 0; - if(_gh_ !== i){var i=_gi_;continue} - break}} - return 0} - function reset(h) - {var len=h[2].length - 1; - return len === h[4] - ?clear(h) - :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)} - function copy(init) - {var _gd_=init[4],_ge_=init[3],_gf_=copy$1(init[2]); - return [0,init[1],_gf_,_ge_,_gd_]} - function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} - function clean(h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hkey=param$0[1],rest=param$0[3],c=param$0[2]; - if(caml_call1(H[7],c)) - {var rest$0=param$0[3],c$0=param$0[2]; - return [0,hkey,c$0,do_bucket(rest$0)]} - h[1] = h[1] - 1 | 0; - var param$0=rest; - continue} - return 0}} - var d=h[2],_ga_=d.length - 1 - 1 | 0,_f$_=0; - if(! (_ga_ < 0)) - {var i=_f$_; - for(;;) - {var _gb_=do_bucket(caml_check_bound(d,i)[1 + i]); - caml_check_bound(d,i)[1 + i] = _gb_; - var _gc_=i + 1 | 0; - if(_ga_ !== i){var i=_gc_;continue} - break}} - return 0} - function resize(h) - {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0; - clean(h); - var - _f4_=nsize < max_array_length?1:0, - _f5_=_f4_?(osize >>> 1 | 0) <= h[1]?1:0:_f4_; - if(_f5_) - {var ndata=caml_make_vect(nsize,0); - h[2] = ndata; - var - insert_bucket= - function(param) - {if(param) - {var rest=param[3],data=param[2],hkey=param[1]; - insert_bucket(rest); - var - nidx=key_index(h,hkey), - _f__=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; - caml_check_bound(ndata,nidx)[1 + nidx] = _f__; - return 0} - return 0}, - _f7_=osize - 1 | 0, - _f6_=0; - if(! (_f7_ < 0)) - {var i=_f6_; - for(;;) - {insert_bucket(caml_check_bound(odata,i)[1 + i]); - var _f9_=i + 1 | 0; - if(_f7_ !== i){var i=_f9_;continue} - break}} - var _f8_=0} - else - var _f8_=_f5_; - return _f8_} - function add(h,key,info) - {var - hkey=caml_call2(H[2],h[3],key), - i=key_index(h,hkey), - container=caml_call2(H[1],key,info), - bucket=[0,hkey,container,caml_check_bound(h[2],i)[1 + i]]; - caml_check_bound(h[2],i)[1 + i] = bucket; - h[1] = h[1] + 1 | 0; - var _f3_=h[2].length - 1 << 1 < h[1]?1:0; - return _f3_?resize(h):_f3_} - function remove(h,key) - {var hkey=caml_call2(H[2],h[3],key); - function remove_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],next=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0:h[1] = h[1] - 1 | 0;return next; - case 1:return [0,hk,c,remove_bucket(next)]; - default:h[1] = h[1] - 1 | 0;var param$0=next;continue}} - var next$0=param$0[3],c$0=param$0[2]; - return [0,hk,c$0,remove_bucket(next$0)]} - return 0}} - var - i=key_index(h,hkey), - _f2_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); - caml_check_bound(h[2],i)[1 + i] = _f2_; - return 0} - function find(h,key) - {var - hkey=caml_call2(H[2],h[3],key), - _f1_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_f1_)[1 + _f1_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var match$0=caml_call1(H[4],c); - if(match$0){var d=match$0[1];return d} - var param=rest; - continue; - case 1:var param=rest;continue; - default:var param=rest;continue}} - var param$0=param[3],param=param$0; - continue} - throw Not_found}} - function find_opt(h,key) - {var - hkey=caml_call2(H[2],h[3],key), - _f0_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_f0_)[1 + _f0_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var d=caml_call1(H[4],c); - if(d)return d; - var param=rest; - continue; - case 1:var param=rest;continue; - default:var param=rest;continue}} - var param$0=param[3],param=param$0; - continue} - return 0}} - function find_all(h,key) - {var hkey=caml_call2(H[2],h[3],key); - function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],rest=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var match$0=caml_call1(H[4],c); - if(match$0) - {var d=match$0[1];return [0,d,find_in_bucket(rest)]} - var param$0=rest; - continue; - case 1:var param$0=rest;continue; - default:var param$0=rest;continue}} - var param$1=param$0[3],param$0=param$1; - continue} - return 0}} - var _fZ_=key_index(h,hkey); - return find_in_bucket(caml_check_bound(h[2],_fZ_)[1 + _fZ_])} - function replace(h,key,info) - {var hkey=caml_call2(H[2],h[3],key); - function replace_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],next=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - if(match){var param$0=next;continue} - return caml_call3(H[6],c,key,info)} - var param$1=param$0[3],param$0=param$1; - continue} - throw Not_found}} - var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i]; - try - {var _fX_=replace_bucket(l);return _fX_} - catch(_fY_) - {_fY_ = caml_wrap_exception(_fY_); - if(_fY_ === Not_found) - {var container=caml_call2(H[1],key,info); - caml_check_bound(h[2],i)[1 + i] = [0,hkey,container,l]; - h[1] = h[1] + 1 | 0; - var _fW_=h[2].length - 1 << 1 < h[1]?1:0; - return _fW_?resize(h):_fW_} - throw _fY_}} - function mem(h,key) - {var - hkey=caml_call2(H[2],h[3],key), - _fV_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_fV_)[1 + _fV_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hk === hkey) - {var match=caml_call2(H[3],c,key); - if(match){var param=rest;continue} - return 1} - var param$0=param[3],param=param$0; - continue} - return 0}} - function iter$0(f,h) - {var d$0=h[2],_fT_=d$0.length - 1 - 1 | 0,_fS_=0; - if(! (_fT_ < 0)) - {var i=_fS_; - a: - for(;;) - {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; - for(;;) - {if(param) - {var - rest=param[3], - c=param[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c), - switch$0=0; - if(match && match$0) - {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1} - var param=rest; - continue} - var _fU_=i + 1 | 0; - if(_fT_ !== i){var i=_fU_;continue a} - break} - break}} - return 0} - function fold(f,h,init) - {var d$0=h[2],accu$1=[0,init],_fP_=d$0.length - 1 - 1 | 0,_fO_=0; - if(! (_fP_ < 0)) - {var i=_fO_; - a: - for(;;) - {var - _fQ_=accu$1[1], - b$0=caml_check_bound(d$0,i)[1 + i], - b=b$0, - accu=_fQ_; - for(;;) - {if(b) - {var - rest=b[3], - c=b[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c), - switch$0=0; - if(match && match$0) - {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu); - switch$0 = 1} - if(! switch$0)var accu$0=accu; - var b=rest,accu=accu$0; - continue} - accu$1[1] = accu; - var _fR_=i + 1 | 0; - if(_fP_ !== i){var i=_fR_;continue a} - break} - break}} - return accu$1[1]} - function filter_map_inplace(f,h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var - rest=param$0[3], - c=param$0[2], - hk=param$0[1], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c); - if(match && match$0) - {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d); - if(match$1) - {var new_d=match$1[1]; - caml_call3(H[6],c,k,new_d); - return [0,hk,c,do_bucket(rest)]} - var param$0=rest; - continue} - var param$0=rest; - continue} - return 0}} - var d=h[2],_fL_=d.length - 1 - 1 | 0,_fK_=0; - if(! (_fL_ < 0)) - {var i=_fK_; - for(;;) - {var _fM_=do_bucket(caml_check_bound(d,i)[1 + i]); - caml_check_bound(d,i)[1 + i] = _fM_; - var _fN_=i + 1 | 0; - if(_fL_ !== i){var i=_fN_;continue} - break}} - return 0} - function length(h){return h[1]} - function bucket_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[3], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function stats(h) - {var - _fG_=h[2], - _fH_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_fH_,_fG_), - histo=caml_make_vect(mbl + 1 | 0,0), - _fI_=h[2]; - iter$5 - (function(b) - {var - l=bucket_length(0,b), - _fJ_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _fJ_; - return 0}, - _fI_); - return [0,h[1],h[2].length - 1,mbl,histo]} - function bucket_length_alive(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var rest=param$0[3],c=param$0[2]; - if(caml_call1(H[7],c)) - {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue} - var param$1=param$0[3],param$0=param$1; - continue} - return accu$0}} - function stats_alive(h) - {var - size=[0,0], - _fC_=h[2], - _fD_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length_alive(0,b))},_fD_,_fC_), - histo=caml_make_vect(mbl + 1 | 0,0), - _fE_=h[2]; - iter$5 - (function(b) - {var l=bucket_length_alive(0,b); - size[1] = size[1] + l | 0; - var _fF_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _fF_; - return 0}, - _fE_); - return [0,size[1],h[2].length - 1,mbl,histo]} - function to_seq(tbl) - {var tbl_data=tbl[2]; - function aux(i,buck,param) - {var i$0=i,buck$0=buck; - for(;;) - {if(buck$0) - {var - next=buck$0[3], - c=buck$0[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c); - if(match && match$0) - {var data=match$0[1],key=match[1]; - return [0, - [0,key,data], - function(_fB_){return aux(i$0,next,_fB_)}]} - var buck$0=next; - continue} - if(i$0 === tbl_data.length - 1)return 0; - var - buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], - i$1=i$0 + 1 | 0, - i$0=i$1, - buck$0=buck$1; - continue}} - var _fy_=0,_fz_=0; - return function(_fA_){return aux(_fz_,_fy_,_fA_)}} - function to_seq_keys(m) - {var _fu_=to_seq(m); - function _fv_(_fx_){return _fx_[1]} - return function(_fw_){return map(_fv_,_fu_,_fw_)}} - function to_seq_values(m) - {var _fq_=to_seq(m); - function _fr_(_ft_){return _ft_[2]} - return function(_fs_){return map(_fr_,_fq_,_fs_)}} - function add_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter$0, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - clean, - stats_alive]} - function create$5(param){return caml_call1(_t_[1],1)} - function get_key$0(t){return caml_call2(_t_[3],t,0)} - function get_key_copy$0(t){return caml_call2(_t_[4],t,0)} - function set_key$0(t,k){return caml_call3(_t_[5],t,0,k)} - function unset_key$0(t){return caml_call2(_t_[6],t,0)} - function check_key$0(t){return caml_call2(_t_[7],t,0)} - function blit_key$0(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,1)} - function get_data$1(t){return caml_call1(_t_[9],t)} - function get_data_copy(t){return caml_call1(_t_[10],t)} - function set_data(t,d){return caml_call2(_t_[11],t,d)} - function unset_data(t){return caml_call1(_t_[12],t)} - function check_data(t){return caml_call1(_t_[13],t)} - function blit_data(t1,t2){return caml_call2(_t_[14],t1,t2)} - function MakeSeeded$1(H) - {function create(k,d) - {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c} - var hash=H[2]; - function equal(c,k) - {var match=get_key$0(c); - if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1} - return 2} - function set_key_data(c,k,d) - {unset_data(c);set_key$0(c,k);return set_data(c,d)} - return MakeSeeded$0 - ([0, - create, - hash, - equal, - get_data$1, - get_key$0, - set_key_data, - check_key$0])} - function Make$2(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded$1([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _fp_=include[1]; - function create(sz){return caml_call2(_fp_,_cL_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - clean, - stats_alive]} - function create$6(param){return caml_call1(_t_[1],2)} - function get_key1(t){return caml_call2(_t_[3],t,0)} - function get_key1_copy(t){return caml_call2(_t_[4],t,0)} - function set_key1(t,k){return caml_call3(_t_[5],t,0,k)} - function unset_key1(t){return caml_call2(_t_[6],t,0)} - function check_key1(t){return caml_call2(_t_[7],t,0)} - function get_key2(t){return caml_call2(_t_[3],t,1)} - function get_key2_copy(t){return caml_call2(_t_[4],t,1)} - function set_key2(t,k){return caml_call3(_t_[5],t,1,k)} - function unset_key2(t){return caml_call2(_t_[6],t,1)} - function check_key2(t){return caml_call2(_t_[7],t,1)} - function blit_key1(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,1)} - function blit_key2(t1,t2){return caml_call5(_t_[8],t1,1,t2,1,1)} - function blit_key12(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,2)} - function get_data$2(t){return caml_call1(_t_[9],t)} - function get_data_copy$0(t){return caml_call1(_t_[10],t)} - function set_data$0(t,d){return caml_call2(_t_[11],t,d)} - function unset_data$0(t){return caml_call1(_t_[12],t)} - function check_data$0(t){return caml_call1(_t_[13],t)} - function blit_data$0(t1,t2){return caml_call2(_t_[14],t1,t2)} - function MakeSeeded$2(H1,H2) - {function create(param,d) - {var k2=param[2],k1=param[1],c=create$6(0); - set_data$0(c,d); - set_key1(c,k1); - set_key2(c,k2); - return c} - function hash(seed,param) - {var - k2=param[2], - k1=param[1], - _fo_=caml_call2(H2[2],seed,k2) * 65599 | 0; - return caml_call2(H1[2],seed,k1) + _fo_ | 0} - function equal(c,param) - {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); - if(match && match$0) - {var k2$0=match$0[1],k1$0=match[1]; - if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0; - return 1} - return 2} - function get_key(c) - {var match=get_key1(c),match$0=get_key2(c); - if(match && match$0) - {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]} - return 0} - function set_key_data(c,param,d) - {var k2=param[2],k1=param[1]; - unset_data$0(c); - set_key1(c,k1); - set_key2(c,k2); - return set_data$0(c,d)} - function check_key(c) - {var _fn_=check_key1(c);return _fn_?check_key2(c):_fn_} - return MakeSeeded$0 - ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])} - function Make$3(H1,H2) - {var equal=H2[1]; - function hash(seed,x){return caml_call1(H2[2],x)} - var equal$0=H1[1],_fl_=[0,equal,hash]; - function hash$0(seed,x){return caml_call1(H1[2],x)} - var - include=MakeSeeded$2([0,equal$0,hash$0],_fl_), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _fm_=include[1]; - function create(sz){return caml_call2(_fm_,_cM_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - clean, - stats_alive]} - function create$7(n){return caml_call1(_t_[1],n)} - function length$6(k){return caml_call1(_t_[2],k)} - function get_key$1(t,n){return caml_call2(_t_[3],t,n)} - function get_key_copy$1(t,n){return caml_call2(_t_[4],t,n)} - function set_key$1(t,n,k){return caml_call3(_t_[5],t,n,k)} - function unset_key$1(t,n){return caml_call2(_t_[6],t,n)} - function check_key$1(t,n){return caml_call2(_t_[7],t,n)} - function blit_key$1(t1,o1,t2,o2,l) - {return caml_call5(_t_[8],t1,o1,t2,o2,l)} - function get_data$3(t){return caml_call1(_t_[9],t)} - function get_data_copy$1(t){return caml_call1(_t_[10],t)} - function set_data$1(t,d){return caml_call2(_t_[11],t,d)} - function unset_data$1(t){return caml_call1(_t_[12],t)} - function check_data$1(t){return caml_call1(_t_[13],t)} - function blit_data$1(t1,t2){return caml_call2(_t_[14],t1,t2)} - function MakeSeeded$3(H) - {function create(k,d) - {var c=create$7(k.length - 1); - set_data$1(c,d); - var _fj_=k.length - 1 - 1 | 0,_fi_=0; - if(! (_fj_ < 0)) - {var i=_fi_; - for(;;) - {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fk_=i + 1 | 0; - if(_fj_ !== i){var i=_fk_;continue} - break}} - return c} - function hash(seed,k) - {var h=[0,0],_fe_=k.length - 1 - 1 | 0,_fd_=0; - if(! (_fe_ < 0)) - {var i=_fd_; - for(;;) - {var _ff_=h[1],_fg_=caml_check_bound(k,i)[1 + i]; - h[1] = (caml_call2(H[2],seed,_fg_) * 65599 | 0) + _ff_ | 0; - var _fh_=i + 1 | 0; - if(_fe_ !== i){var i=_fh_;continue} - break}} - return h[1]} - function equal(c,k) - {var len=k.length - 1,len$0=length$6(c); - if(len !== len$0)return 1; - var i$1=len - 1 | 0,i=i$1; - for(;;) - {if(0 <= i) - {var match=get_key$1(c,i); - if(match) - {var ki=match[1],_fc_=caml_check_bound(k,i)[1 + i]; - if(caml_call2(H[1],_fc_,ki)){var i$0=i - 1 | 0,i=i$0;continue} - return 1} - return 2} - return 0}} - function get_key(c) - {var len=length$6(c); - if(0 === len)return [0,[0]]; - var match=get_key$1(c,0); - if(match) - {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1; - for(;;) - {if(1 <= i) - {var match$0=get_key$1(c,i); - if(match$0) - {var ki=match$0[1]; - caml_check_bound(a,i)[1 + i] = ki; - var i$0=i - 1 | 0,i=i$0; - continue} - return 0} - return [0,a]}} - return 0} - function set_key_data(c,k,d) - {unset_data$1(c); - var _fa_=k.length - 1 - 1 | 0,_e$_=0; - if(! (_fa_ < 0)) - {var i=_e$_; - for(;;) - {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fb_=i + 1 | 0; - if(_fa_ !== i){var i=_fb_;continue} - break}} - return set_data$1(c,d)} - function check_key(c) - {var i$1=length$6(c) - 1 | 0,i=i$1; - for(;;) - {var _e8_=i < 0?1:0; - if(_e8_) - var _e9_=_e8_; - else - {var _e__=check_key$1(c,i); - if(_e__){var i$0=i - 1 | 0,i=i$0;continue} - var _e9_=_e__} - return _e9_}} - return MakeSeeded$0 - ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} - function Make$4(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded$3([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _e7_=include[1]; - function create(sz){return caml_call2(_e7_,_cN_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - clean, - stats_alive]} - var - Stdlib_Ephemeron= - [0, - [0, - create$5, - get_key$0, - get_key_copy$0, - set_key$0, - unset_key$0, - check_key$0, - blit_key$0, - get_data$1, - get_data_copy, - set_data, - unset_data, - check_data, - blit_data, - Make$2, - MakeSeeded$1], - [0, - create$6, - get_key1, - get_key1_copy, - set_key1, - unset_key1, - check_key1, - get_key2, - get_key2_copy, - set_key2, - unset_key2, - check_key2, - blit_key1, - blit_key2, - blit_key12, - get_data$2, - get_data_copy$0, - set_data$0, - unset_data$0, - check_data$0, - blit_data$0, - Make$3, - MakeSeeded$2], - [0, - create$7, - get_key$1, - get_key_copy$1, - set_key$1, - unset_key$1, - check_key$1, - blit_key$1, - get_data$3, - get_data_copy$1, - set_data$1, - unset_data$1, - check_data$1, - blit_data$1, - Make$4, - MakeSeeded$3], - [0, - function(_e6_) - {return MakeSeeded$0 - ([0,_e6_[3],_e6_[1],_e6_[2],_e6_[5],_e6_[4],_e6_[6],_e6_[7]])}]]; - caml_register_global(809,Stdlib_Ephemeron,"Stdlib__Ephemeron"); - function generic_basename(is_dir_sep,current_dir_name,name) - {if(caml_string_equal(name,cst$100))return current_dir_name; - var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3; - for(;;) - {if(0 <= n) - {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} - var p=n + 1 | 0,n$1=n; - for(;;) - {if(0 <= n$1) - {if(caml_call2(is_dir_sep,name,n$1)) - return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0); - var n$2=n$1 - 1 | 0,n$1=n$2; - continue} - return sub$0(name,0,p)}} - return sub$0(name,0,1)}} - function generic_dirname(is_dir_sep,current_dir_name,name) - {if(caml_string_equal(name,cst$101))return current_dir_name; - var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5; - for(;;) - {if(0 <= n) - {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} - var n$1=n; - for(;;) - {if(0 <= n$1) - {if(caml_call2(is_dir_sep,name,n$1)) - {var n$3=n$1; - for(;;) - {if(0 <= n$3) - {if(caml_call2(is_dir_sep,name,n$3)) - {var n$4=n$3 - 1 | 0,n$3=n$4;continue} - return sub$0(name,0,n$3 + 1 | 0)} - return sub$0(name,0,1)}} - var n$2=n$1 - 1 | 0,n$1=n$2; - continue} - return current_dir_name}} - return sub$0(name,0,1)}} - function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0} - function is_relative(n) - {var - _e4_=caml_ml_string_length(n) < 1?1:0, - _e5_=_e4_ || (47 !== caml_string_get(n,0)?1:0); - return _e5_} - function is_implicit(n) - {var _eZ_=is_relative(n); - if(_eZ_) - {var - _e0_=caml_ml_string_length(n) < 2?1:0, - _e1_=_e0_ || caml_string_notequal(sub$0(n,0,2),cst$103); - if(_e1_) - var - _e2_=caml_ml_string_length(n) < 3?1:0, - _e3_=_e2_ || caml_string_notequal(sub$0(n,0,3),cst$102); - else - var _e3_=_e1_} - else - var _e3_=_eZ_; - return _e3_} - function check_suffix(name,suff){return ends_with$0(suff,name)} - function chop_suffix_opt(suffix,filename) - {var - len_s=caml_ml_string_length(suffix), - len_f=caml_ml_string_length(filename); - if(len_s <= len_f) - {var r=sub$0(filename,len_f - len_s | 0,len_s); - return caml_string_equal(r,suffix) - ?[0,sub$0(filename,0,len_f - len_s | 0)] - :0} - return 0} - try - {var _cV_=caml_sys_getenv(cst_TMPDIR),_cO_=_cV_} - catch(_eY_) - {_eY_ = caml_wrap_exception(_eY_); - if(_eY_ !== Not_found)throw _eY_; - var _cO_=cst_tmp} - function quote(s) - {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); - add_char(b,39); - var _eW_=l - 1 | 0,_eV_=0; - if(! (_eW_ < 0)) - {var i=_eV_; - for(;;) - {if(39 === caml_string_get(s,i)) - add_string(b,quotequote); - else - add_char(b,caml_string_get(s,i)); - var _eX_=i + 1 | 0; - if(_eW_ !== i){var i=_eX_;continue} - break}} - add_char(b,39); - return contents(b)} - function quote_command(cmd,stdin,stdout,stderr,args) - {if(stderr) - var - f=stderr[1], - _eP_=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), - _eQ_=_eP_; - else - var _eQ_=cst$109; - if(stdout) - var f$0=stdout[1],_eR_=cat(cst$104,quote(f$0)); - else - var _eR_=cst$108; - var _eS_=cat(_eR_,_eQ_); - if(stdin) - var f$1=stdin[1],_eT_=cat(cst$105,quote(f$1)); - else - var _eT_=cst$107; - var _eU_=cat(_eT_,_eS_); - return cat(concat$1(cst$106,map$3(quote,[0,cmd,args])),_eU_)} - function basename(_eO_) - {return generic_basename(is_dir_sep,current_dir_name,_eO_)} - function dirname(_eN_) - {return generic_dirname(is_dir_sep,current_dir_name,_eN_)} - var - Unix= - [0, - null$0, - current_dir_name, - parent_dir_name, - dir_sep, - is_dir_sep, - is_relative, - is_implicit, - check_suffix, - chop_suffix_opt, - _cO_, - quote, - quote_command, - basename, - dirname]; - function is_dir_sep$0(s,i) - {var c=caml_string_get(s,i),_eK_=47 === c?1:0; - if(_eK_) - var _eL_=_eK_; - else - var _eM_=92 === c?1:0,_eL_=_eM_ || (58 === c?1:0); - return _eL_} - function is_relative$0(n) - {var - _eE_=caml_ml_string_length(n) < 1?1:0, - _eF_=_eE_ || (47 !== caml_string_get(n,0)?1:0); - if(_eF_) - {var - _eG_=caml_ml_string_length(n) < 1?1:0, - _eH_=_eG_ || (92 !== caml_string_get(n,0)?1:0); - if(_eH_) - var - _eI_=caml_ml_string_length(n) < 2?1:0, - _eJ_=_eI_ || (58 !== caml_string_get(n,1)?1:0); - else - var _eJ_=_eH_} - else - var _eJ_=_eF_; - return _eJ_} - function is_implicit$0(n) - {var _ev_=is_relative$0(n); - if(_ev_) - {var - _ew_=caml_ml_string_length(n) < 2?1:0, - _ex_=_ew_ || caml_string_notequal(sub$0(n,0,2),cst$113); - if(_ex_) - {var - _ey_=caml_ml_string_length(n) < 2?1:0, - _ez_=_ey_ || caml_string_notequal(sub$0(n,0,2),cst$112); - if(_ez_) - {var - _eA_=caml_ml_string_length(n) < 3?1:0, - _eB_=_eA_ || caml_string_notequal(sub$0(n,0,3),cst$111); - if(_eB_) - var - _eC_=caml_ml_string_length(n) < 3?1:0, - _eD_=_eC_ || caml_string_notequal(sub$0(n,0,3),cst$110); - else - var _eD_=_eB_} - else - var _eD_=_ez_} - else - var _eD_=_ex_} - else - var _eD_=_ev_; - return _eD_} - function check_suffix$0(name,suff) - {var _es_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; - if(_es_) - var - s= - sub$0 - (name, - caml_ml_string_length(name) - caml_ml_string_length(suff) | 0, - caml_ml_string_length(suff)), - _et_=lowercase_ascii$1(suff), - _eu_=caml_string_equal(lowercase_ascii$1(s),_et_); - else - var _eu_=_es_; - return _eu_} - function chop_suffix_opt$0(suffix,filename) - {var - len_s=caml_ml_string_length(suffix), - len_f=caml_ml_string_length(filename); - if(len_s <= len_f) - {var - r=sub$0(filename,len_f - len_s | 0,len_s), - _er_=lowercase_ascii$1(suffix); - return caml_string_equal(lowercase_ascii$1(r),_er_) - ?[0,sub$0(filename,0,len_f - len_s | 0)] - :0} - return 0} - try - {var _cU_=caml_sys_getenv(cst_TEMP),temp_dir_name=_cU_} - catch(_eq_) - {_eq_ = caml_wrap_exception(_eq_); - if(_eq_ !== Not_found)throw _eq_; - var temp_dir_name=cst$114} - function quote$0(s) - {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); - add_char(b,34); - function add_bs(n) - {var _eo_=1; - if(! (n < 1)) - {var j=_eo_; - for(;;) - {add_char(b,92); - var _ep_=j + 1 | 0; - if(n !== j){var j=_ep_;continue} - break}} - return 0} - function loop$0(counter,i) - {var i$0=i; - for(;;) - {if(i$0 === l)return add_char(b,34); - var c=caml_string_get(s,i$0); - if(34 === c) - {var _em_=0; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return loop_bs(counter$1,_em_,i$0)} - return caml_trampoline_return(loop_bs,[0,_em_,i$0])} - if(92 === c) - {var _en_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return loop_bs(counter$0,_en_,i$0)} - return caml_trampoline_return(loop_bs,[0,_en_,i$0])} - add_char(b,c); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function loop_bs(counter,n,i) - {var n$0=n,i$0=i; - for(;;) - {if(i$0 === l){add_char(b,34);return add_bs(n$0)} - var match=caml_string_get(s,i$0); - if(34 === match) - {add_bs((2 * n$0 | 0) + 1 | 0); - add_char(b,34); - var _el_=i$0 + 1 | 0; - if(counter < 50) - {var counter$1=counter + 1 | 0;return loop$0(counter$1,_el_)} - return caml_trampoline_return(loop$0,[0,_el_])} - if(92 === match) - {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue} - add_bs(n$0); - if(counter < 50) - {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)} - return caml_trampoline_return(loop$0,[0,i$0])}} - function loop(i){return caml_trampoline(loop$0(0,i))} - loop(0); - return contents(b)} - function quote_cmd_filename(f) - {if(! contains$0(f,34) && ! contains$0(f,37)) - return contains$0(f,32)?cat(cst$116,cat(f,cst$115)):f; - return failwith(cat(cst_Filename_quote_command_bad,f))} - function quote_command$0(cmd,stdin,stdout,stderr,args) - {if(stderr) - var - f=stderr[1], - _ec_= - caml_equal(stderr,stdout) - ?cst_2_1$0 - :cat(cst_2$0,quote_cmd_filename(f)), - _ed_=_ec_; - else - var _ed_=cst$125; - var _ee_=[0,_ed_,_cP_]; - if(stdout) - var f$0=stdout[1],_ef_=cat(cst$117,quote_cmd_filename(f$0)); - else - var _ef_=cst$124; - var _eg_=[0,_ef_,_ee_]; - if(stdin) - var f$1=stdin[1],_eh_=cat(cst$118,quote_cmd_filename(f$1)); - else - var _eh_=cst$123; - var - s=concat$1(cst$119,map$3(quote$0,args)), - b=create$2(caml_ml_string_length(s) + 20 | 0), - _ei_=[0,_eh_,_eg_]; - iter$4 - (function(c) - {var switch$0=0; - if(62 <= c) - {var _ek_=c - 63 | 0; - if(60 < _ek_ >>> 0) - {if(! (62 <= _ek_))switch$0 = 1} - else - if(31 === _ek_)switch$0 = 1} - else - if(42 <= c) - {if(60 === c)switch$0 = 1} - else - if(33 <= c) - switch(c - 33 | 0) - {case 2:case 3:case 6:break;default:switch$0 = 1} - return switch$0?(add_char(b,94),add_char(b,c)):add_char(b,c)}, - s); - var _ej_=[0,cst$120,[0,contents(b),_ei_]]; - return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_ej_]])} - function drive_and_path(s) - {var _d__=2 <= caml_ml_string_length(s)?1:0; - if(_d__) - {var param=caml_string_get(s,0),switch$0=0; - if(91 <= param) - {if(! (25 < param - 97 >>> 0))switch$0 = 1} - else - if(65 <= param)switch$0 = 1; - var _d$_=switch$0?1:0,_ea_=_d$_?58 === caml_string_get(s,1)?1:0:_d$_} - else - var _ea_=_d__; - if(_ea_) - {var _eb_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); - return [0,sub$0(s,0,2),_eb_]} - return [0,cst$126,s]} - function dirname$0(s) - {var - match=drive_and_path(s), - path=match[2], - drive=match[1], - dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path); - return cat(drive,dir)} - function basename$0(s) - {var match=drive_and_path(s),path=match[2]; - return generic_basename(is_dir_sep$0,current_dir_name$0,path)} - var - Win32= - [0, - null$1, - current_dir_name$0, - parent_dir_name$0, - dir_sep$0, - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - temp_dir_name, - quote$0, - quote_command$0, - basename$0, - dirname$0]; - function basename$1(_d9_) - {return generic_basename(is_dir_sep$0,current_dir_name$1,_d9_)} - function dirname$1(_d8_) - {return generic_dirname(is_dir_sep$0,current_dir_name$1,_d8_)} - var - Cygwin= - [0, - null$2, - current_dir_name$1, - parent_dir_name$1, - dir_sep$1, - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - _cO_, - quote, - quote_command, - basename$1, - dirname$1], - Sysdeps= - caml_string_notequal(os_type,cst_Cygwin) - ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32 - :Cygwin, - null$3=Sysdeps[1], - current_dir_name$2=Sysdeps[2], - parent_dir_name$2=Sysdeps[3], - dir_sep$2=Sysdeps[4], - is_dir_sep$1=Sysdeps[5], - is_relative$1=Sysdeps[6], - is_implicit$1=Sysdeps[7], - check_suffix$1=Sysdeps[8], - chop_suffix_opt$1=Sysdeps[9], - temp_dir_name$0=Sysdeps[10], - quote$1=Sysdeps[11], - quote_command$1=Sysdeps[12], - basename$2=Sysdeps[13], - dirname$2=Sysdeps[14]; - function concat$4(dirname,filename) - {var l=caml_ml_string_length(dirname); - if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0)) - return cat(dirname,cat(dir_sep$2,filename)); - return cat(dirname,filename)} - function chop_suffix(name,suff) - {var n=caml_ml_string_length(name) - caml_ml_string_length(suff) | 0; - return 0 <= n?sub$0(name,0,n):invalid_arg(cst_Filename_chop_suffix)} - function extension_len(name) - {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4; - for(;;) - {if(0 <= i$1 && ! is_dir_sep$1(name,i$1)) - {if(46 === caml_string_get(name,i$1)) - {var i$2=i$1 - 1 | 0,i=i$2; - for(;;) - {if(0 <= i && ! is_dir_sep$1(name,i)) - {if(46 === caml_string_get(name,i)) - {var i$0=i - 1 | 0,i=i$0;continue} - return caml_ml_string_length(name) - i$1 | 0} - return 0}} - var i$3=i$1 - 1 | 0,i$1=i$3; - continue} - return 0}} - function extension(name) - {var l=extension_len(name); - return 0 === l?cst$127:sub$0(name,caml_ml_string_length(name) - l | 0,l)} - function chop_extension(name) - {var l=extension_len(name); - return 0 === l - ?invalid_arg(cst_Filename_chop_extension) - :sub$0(name,0,caml_ml_string_length(name) - l | 0)} - function remove_extension(name) - {var l=extension_len(name); - return 0 === l?name:sub$0(name,0,caml_ml_string_length(name) - l | 0)} - var prng$0=[246,function(_d7_){return caml_call1(_cb_[2],0)}]; - function temp_file_name(temp_dir,prefix,suffix) - {var - _d5_=caml_obj_tag(prng$0), - _d6_= - 250 === _d5_?prng$0[1]:246 === _d5_?force_lazy_block(prng$0):prng$0, - rnd=caml_call1(_cb_[4],_d6_) & 16777215; - return concat$4(temp_dir,caml_call3(sprintf(_cQ_),prefix,rnd,suffix))} - var current_temp_dir_name=[0,temp_dir_name$0]; - function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0} - function get_temp_dir_name(param){return current_temp_dir_name[1]} - function temp_file(opt,prefix,suffix) - {if(opt) - var sth=opt[1],temp_dir=sth; - else - var temp_dir=current_temp_dir_name[1]; - function try_name(counter) - {var counter$0=counter; - for(;;) - {var name=temp_file_name(temp_dir,prefix,suffix); - try - {runtime.caml_sys_close(caml_sys_open(name,_cR_,384));return name} - catch(e) - {e = caml_wrap_exception(e); - if(e[1] === Sys_error) - {if(1000 <= counter$0)throw e; - var counter$1=counter$0 + 1 | 0,counter$0=counter$1; - continue} - throw e}}} - return try_name(0)} - function open_temp_file(opt,_d3_,_d2_,prefix,suffix) - {if(opt)var sth=opt[1],mode=sth;else var mode=_cS_; - if(_d3_)var sth$0=_d3_[1],perms=sth$0;else var perms=384; - if(_d2_) - var sth$1=_d2_[1],temp_dir=sth$1; - else - var temp_dir=current_temp_dir_name[1]; - function try_name(counter) - {var counter$0=counter; - for(;;) - {var name=temp_file_name(temp_dir,prefix,suffix); - try - {var _d4_=[0,name,open_out_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; - return _d4_} - catch(e) - {e = caml_wrap_exception(e); - if(e[1] === Sys_error) - {if(1000 <= counter$0)throw e; - var counter$1=counter$0 + 1 | 0,counter$0=counter$1; - continue} - throw e}}} - return try_name(0)} - var - Stdlib_Filename= - [0, - current_dir_name$2, - parent_dir_name$2, - dir_sep$2, - concat$4, - is_relative$1, - is_implicit$1, - check_suffix$1, - chop_suffix, - chop_suffix_opt$1, - extension, - remove_extension, - chop_extension, - basename$2, - dirname$2, - null$3, - temp_file, - open_temp_file, - get_temp_dir_name, - set_temp_dir_name, - temp_dir_name$0, - quote$1, - quote_command$1]; - caml_register_global(810,Stdlib_Filename,"Stdlib__Filename"); - function add$1(x,y){return [254,x[1] + y[1],x[2] + y[2]]} - function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]} - function neg(x){return [254,- x[1],- x[2]]} - function conj(x){return [254,x[1],- x[2]]} - function mul(x,y) - {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]} - function div(x,y) - {if(Math.abs(y[2]) <= Math.abs(y[1])) - {var r=y[2] / y[1],d=y[1] + r * y[2]; - return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]} - var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1]; - return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]} - function inv(x){return div(one$4,x)} - function norm2(x){return x[1] * x[1] + x[2] * x[2]} - function norm(x) - {var r=Math.abs(x[1]),i=Math.abs(x[2]); - if(r == 0.)return i; - if(i == 0.)return r; - if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)} - var q$0=r / i; - return i * Math.sqrt(1. + q$0 * q$0)} - function arg(x){return Math.atan2(x[2],x[1])} - function polar(n,a){return [254,Math.cos(a) * n,Math.sin(a) * n]} - function sqrt(x) - {if(x[1] == 0. && x[2] == 0.)return _cT_; - var r=Math.abs(x[1]),i=Math.abs(x[2]); - if(i <= r) - var - q=i / r, - w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q))); - else - var - q$0=r / i, - w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0))); - if(0. <= x[1])return [254,w,0.5 * x[2] / w]; - var w$0=0. <= x[2]?w:- w; - return [254,0.5 * i / w,w$0]} - function exp(x) - {var e=Math.exp(x[1]);return [254,e * Math.cos(x[2]),e * Math.sin(x[2])]} - function log(x) - {var _d1_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_d1_]} - function pow(x,y){return exp(mul(y,log(x)))} - var - Stdlib_Complex= - [0, - zero$4, - one$4, - i, - neg, - conj, - add$1, - sub$4, - mul, - inv, - div, - sqrt, - norm2, - norm, - arg, - polar, - exp, - log, - pow]; - caml_register_global(811,Stdlib_Complex,"Stdlib__Complex"); - var - Stdlib_ArrayLabels= - [0, - make_float, - init$2, - create_matrix, - create_matrix, - append$1, - concat$2, - sub$1, - copy$1, - fill$0, - blit$1, - to_list$1, - of_list, - iter$5, - iteri$2, - map$6, - mapi$2, - fold_left$3, - fold_left_map$0, - fold_right$2, - iter2$0, - map2$0, - for_all$2, - exists$2, - for_all2$0, - exists2$0, - mem$0, - memq$0, - find_opt$0, - find_map$0, - split$0, - combine$0, - sort, - fast_sort$0, - fast_sort$0, - to_seq$4, - to_seqi$1, - of_seq$2, - Floatarray]; - caml_register_global(812,Stdlib_ArrayLabels,"Stdlib__ArrayLabels"); - var - Stdlib_ListLabels= - [0, - length, - compare_lengths, - compare_length_with, - cons$0, - hd, - tl, - nth, - nth_opt, - rev, - init, - append, - rev_append, - flatten, - flatten, - equal$5, - compare$5, - iter$2, - iteri, - map$3, - mapi, - rev_map, - filter_map$0, - concat_map, - fold_left_map, - fold_left$0, - fold_right, - iter2, - map2, - rev_map2, - fold_left2, - fold_right2, - for_all, - exists, - for_all2, - exists2, - mem, - memq, - find, - find_opt, - find_map, - find_all, - find_all, - filteri, - partition, - partition_map, - assoc, - assoc_opt, - assq, - assq_opt, - mem_assoc, - mem_assq, - remove_assoc, - remove_assq, - split, - combine, - fast_sort, - fast_sort, - fast_sort, - sort_uniq, - merge, - to_seq$1, - of_seq]; - caml_register_global(813,Stdlib_ListLabels,"Stdlib__ListLabels"); - var - Stdlib_BytesLabels= - [0, - make$0, - init$0, - empty$0, - copy, - to_bytes, - of_bytes, - sub, - sub_string, - extend, - fill, - blit, - blit$0, - concat$0, - cat$0, - iter$3, - iteri$0, - map$4, - mapi$0, - fold_left$1, - fold_right$0, - for_all$0, - exists$0, - trim, - escaped$0, - index, - index_opt, - rindex, - rindex_opt, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - contains, - contains_from, - rcontains_from, - uppercase$0, - lowercase$0, - capitalize, - uncapitalize, - uppercase_ascii$0, - lowercase_ascii$0, - capitalize_ascii, - uncapitalize_ascii, - compare$7, - equal$7, - starts_with, - ends_with, - unsafe_to_string, - unsafe_of_string, - split_on_char, - to_seq$2, - to_seqi, - of_seq$0, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - set_uint8, - set_int8, - set_uint16_ne, - set_int16_be, - set_int16_le, - set_int16_ne, - set_int16_be, - set_int16_le, - set_int32_ne, - set_int32_be, - set_int32_le, - set_int64_ne, - set_int64_be, - set_int64_le]; - caml_register_global(814,Stdlib_BytesLabels,"Stdlib__BytesLabels"); - var - Stdlib_StringLabels= - [0, - make$1, - init$1, - empty$1, - of_bytes, - to_bytes, - concat$1, - cat, - equal$8, - compare$8, - starts_with$0, - ends_with$0, - contains_from$0, - rcontains_from$0, - contains$0, - sub$0, - split_on_char$0, - map$5, - mapi$1, - fold_left$2, - fold_right$1, - for_all$1, - exists$1, - trim$0, - escaped$1, - uppercase_ascii$1, - lowercase_ascii$1, - capitalize_ascii$0, - uncapitalize_ascii$0, - iter$4, - iteri$1, - index_from$0, - index_from_opt$0, - rindex_from$0, - rindex_from_opt$0, - index$0, - index_opt$0, - rindex$0, - rindex_opt$0, - to_seq$3, - to_seqi$0, - of_seq$1, - blit$0, - copy$0, - fill, - uppercase$1, - lowercase$1, - capitalize$0, - uncapitalize$0, - get_uint8$0, - get_int8$0, - get_uint16_ne$0, - get_uint16_be$0, - get_uint16_le$0, - get_int16_ne$0, - get_int16_be$0, - get_int16_le$0, - get_int32_ne$0, - get_int32_be$0, - get_int32_le$0, - get_int64_ne$0, - get_int64_be$0, - get_int64_le$0]; - caml_register_global(815,Stdlib_StringLabels,"Stdlib__StringLabels"); - var Stdlib_MoreLabels=[0,Stdlib_Hashtbl,Stdlib_Map,Stdlib_Set]; - caml_register_global(816,Stdlib_MoreLabels,"Stdlib__MoreLabels"); - var Stdlib_StdLabels=[0]; - caml_register_global(817,Stdlib_StdLabels,"Stdlib__StdLabels"); - var - float32=0, - float64=1, - int8_signed=2, - int8_unsigned=3, - int16_signed=4, - int16_unsigned=5, - int32$1=6, - int64$1=7, - int$2=8, - nativeint$1=9, - complex32=10, - complex64=11, - char$0=12; - function kind_size_in_bytes(param) - {switch(param) - {case 0:return 4; - case 1:return 8; - case 2:return 1; - case 3:return 1; - case 4:return 2; - case 5:return 2; - case 6:return 4; - case 7:return 8; - case 8:return 4; - case 9:return 4; - case 10:return 8; - case 11:return 16; - default:return 1}} - var c_layout=0,fortran_layout=1; - function cloop(arr,idx,f,col,max) - {if(col === idx.length - 1) - return caml_ba_set_generic(arr,idx,caml_call1(f,idx)); - var _dZ_=caml_check_bound(max,col)[1 + col] - 1 | 0,_dY_=0; - if(! (_dZ_ < 0)) - {var j=_dY_; - for(;;) - {caml_check_bound(idx,col)[1 + col] = j; - cloop(arr,idx,f,col + 1 | 0,max); - var _d0_=j + 1 | 0; - if(_dZ_ !== j){var j=_d0_;continue} - break}} - return 0} - function floop(arr,idx,f,col,max) - {if(0 <= col) - {var _dW_=caml_check_bound(max,col)[1 + col],_dV_=1; - if(! (_dW_ < 1)) - {var j=_dV_; - for(;;) - {caml_check_bound(idx,col)[1 + col] = j; - floop(arr,idx,f,col - 1 | 0,max); - var _dX_=j + 1 | 0; - if(_dW_ !== j){var j=_dX_;continue} - break}} - return 0} - return caml_ba_set_generic(arr,idx,caml_call1(f,idx))} - function init$5(kind,layout,dims,f) - {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1; - return 0 === dlen - ?arr - :layout - ?(floop(arr,caml_make_vect(dlen,1),f,dlen - 1 | 0,dims),arr) - :(cloop(arr,caml_make_vect(dlen,0),f,0,dims),arr)} - function dims(a) - {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_dS_=n - 1 | 0,_dR_=0; - if(! (_dS_ < 0)) - {var i=_dR_; - for(;;) - {var _dT_=runtime.caml_ba_dim(a,i); - caml_check_bound(d,i)[1 + i] = _dT_; - var _dU_=i + 1 | 0; - if(_dS_ !== i){var i=_dU_;continue} - break}} - return d} - function size_in_bytes(arr) - {var _dQ_=fold_left$3(caml_mul,1,dims(arr)); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dQ_)} - function create$8(kind,layout){return caml_ba_create(kind,layout,[0])} - function get$2(arr){return runtime.caml_ba_get_generic(arr,[0])} - function set$1(arr) - {var _dO_=[0]; - return function(_dP_){return caml_ba_set_generic(arr,_dO_,_dP_)}} - function size_in_bytes$0(arr) - {return kind_size_in_bytes(caml_ba_kind(arr))} - function of_value(kind,layout,v) - {var a=create$8(kind,layout);caml_call1(set$1(a),v);return a} - function create$9(kind,layout,dim) - {return caml_ba_create(kind,layout,[0,dim])} - function size_in_bytes$1(arr) - {var _dN_=caml_ba_dim_1(arr); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dN_)} - function slice(a,n) - {var match=runtime.caml_ba_layout(a); - return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])} - function init$6(kind,layout,dim,f) - {var arr=create$9(kind,layout,dim); - if(layout) - {var _dL_=1; - if(! (dim < 1)) - {var i$0=_dL_; - for(;;) - {caml_ba_set_1(arr,i$0,caml_call1(f,i$0)); - var _dM_=i$0 + 1 | 0; - if(dim !== i$0){var i$0=_dM_;continue} - break}} - return arr} - var _dJ_=dim - 1 | 0,_dI_=0; - if(! (_dJ_ < 0)) - {var i=_dI_; - for(;;) - {caml_ba_set_1(arr,i,caml_call1(f,i)); - var _dK_=i + 1 | 0; - if(_dJ_ !== i){var i=_dK_;continue} - break}} - return arr} - function of_array(kind,layout,data) - {var - ba=create$9(kind,layout,data.length - 1), - ofs=layout?1:0, - _dG_=data.length - 1 - 1 | 0, - _dF_=0; - if(! (_dG_ < 0)) - {var i=_dF_; - for(;;) - {caml_ba_set_1(ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]); - var _dH_=i + 1 | 0; - if(_dG_ !== i){var i=_dH_;continue} - break}} - return ba} - function create$10(kind,layout,dim1,dim2) - {return caml_ba_create(kind,layout,[0,dim1,dim2])} - function size_in_bytes$2(arr) - {var _dD_=caml_ba_dim_2(arr),_dE_=caml_ba_dim_1(arr); - return caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dE_),_dD_)} - function slice_left(a,n){return caml_ba_slice(a,[0,n])} - function slice_right(a,n){return caml_ba_slice(a,[0,n])} - function init$7(kind,layout,dim1,dim2,f) - {var arr=create$10(kind,layout,dim1,dim2); - if(layout) - {var _dz_=1; - if(! (dim2 < 1)) - {var j$0=_dz_; - for(;;) - {var _dA_=1; - if(! (dim1 < 1)) - {var i$0=_dA_; - for(;;) - {caml_ba_set_2(arr,i$0,j$0,caml_call2(f,i$0,j$0)); - var _dC_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dC_;continue} - break}} - var _dB_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dB_;continue} - break}} - return arr} - var _du_=dim1 - 1 | 0,_dt_=0; - if(! (_du_ < 0)) - {var i=_dt_; - for(;;) - {var _dw_=dim2 - 1 | 0,_dv_=0; - if(! (_dw_ < 0)) - {var j=_dv_; - for(;;) - {caml_ba_set_2(arr,i,j,caml_call2(f,i,j)); - var _dy_=j + 1 | 0; - if(_dw_ !== j){var j=_dy_;continue} - break}} - var _dx_=i + 1 | 0; - if(_du_ !== i){var i=_dx_;continue} - break}} - return arr} - function of_array$0(kind,layout,data) - {var - dim1=data.length - 1, - dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, - ba=create$10(kind,layout,dim1,dim2), - ofs=layout?1:0, - _do_=dim1 - 1 | 0, - _dn_=0; - if(! (_do_ < 0)) - {var i=_dn_; - for(;;) - {var row=caml_check_bound(data,i)[1 + i]; - if(row.length - 1 !== dim2) - invalid_arg(cst_Bigarray_Array2_of_array_n); - var _dq_=dim2 - 1 | 0,_dp_=0; - if(! (_dq_ < 0)) - {var j=_dp_; - for(;;) - {caml_ba_set_2 - (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]); - var _ds_=j + 1 | 0; - if(_dq_ !== j){var j=_ds_;continue} - break}} - var _dr_=i + 1 | 0; - if(_do_ !== i){var i=_dr_;continue} - break}} - return ba} - function create$11(kind,layout,dim1,dim2,dim3) - {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])} - function size_in_bytes$3(arr) - {var - _dk_=runtime.caml_ba_dim_3(arr), - _dl_=caml_ba_dim_2(arr), - _dm_=caml_ba_dim_1(arr); - return caml_mul - (caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dm_),_dl_), - _dk_)} - function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])} - function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])} - function slice_left_2(a,n){return caml_ba_slice(a,[0,n])} - function slice_right_2(a,n){return caml_ba_slice(a,[0,n])} - function init$8(kind,layout,dim1,dim2,dim3,f) - {var arr=create$11(kind,layout,dim1,dim2,dim3); - if(layout) - {var _de_=1; - if(! (dim3 < 1)) - {var k$0=_de_; - for(;;) - {var _df_=1; - if(! (dim2 < 1)) - {var j$0=_df_; - for(;;) - {var _dh_=1; - if(! (dim1 < 1)) - {var i$0=_dh_; - for(;;) - {caml_ba_set_3(arr,i$0,j$0,k$0,caml_call3(f,i$0,j$0,k$0)); - var _dj_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dj_;continue} - break}} - var _di_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_di_;continue} - break}} - var _dg_=k$0 + 1 | 0; - if(dim3 !== k$0){var k$0=_dg_;continue} - break}} - return arr} - var _c8_=dim1 - 1 | 0,_c7_=0; - if(! (_c8_ < 0)) - {var i=_c7_; - for(;;) - {var _c__=dim2 - 1 | 0,_c9_=0; - if(! (_c__ < 0)) - {var j=_c9_; - for(;;) - {var _db_=dim3 - 1 | 0,_da_=0; - if(! (_db_ < 0)) - {var k=_da_; - for(;;) - {caml_ba_set_3(arr,i,j,k,caml_call3(f,i,j,k)); - var _dd_=k + 1 | 0; - if(_db_ !== k){var k=_dd_;continue} - break}} - var _dc_=j + 1 | 0; - if(_c__ !== j){var j=_dc_;continue} - break}} - var _c$_=i + 1 | 0; - if(_c8_ !== i){var i=_c$_;continue} - break}} - return arr} - function of_array$1(kind,layout,data) - {var - dim1=data.length - 1, - dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, - dim3= - 0 === dim2 - ?0 - :caml_check_bound(caml_check_bound(data,0)[1],0)[1].length - 1, - ba=create$11(kind,layout,dim1,dim2,dim3), - ofs=layout?1:0, - _cZ_=dim1 - 1 | 0, - _cY_=0; - if(! (_cZ_ < 0)) - {var i=_cY_; - for(;;) - {var row=caml_check_bound(data,i)[1 + i]; - if(row.length - 1 !== dim2) - invalid_arg(cst_Bigarray_Array3_of_array_n); - var _c1_=dim2 - 1 | 0,_c0_=0; - if(! (_c1_ < 0)) - {var j=_c0_; - for(;;) - {var col=caml_check_bound(row,j)[1 + j]; - if(col.length - 1 !== dim3) - invalid_arg(cst_Bigarray_Array3_of_array_n$0); - var _c4_=dim3 - 1 | 0,_c3_=0; - if(! (_c4_ < 0)) - {var k=_c3_; - for(;;) - {caml_ba_set_3 - (ba, - i + ofs | 0, - j + ofs | 0, - k + ofs | 0, - caml_check_bound(col,k)[1 + k]); - var _c6_=k + 1 | 0; - if(_c4_ !== k){var k=_c6_;continue} - break}} - var _c5_=j + 1 | 0; - if(_c1_ !== j){var j=_c5_;continue} - break}} - var _c2_=i + 1 | 0; - if(_cZ_ !== i){var i=_c2_;continue} - break}} - return ba} - function array0_of_genarray(a) - {return 0 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array0_of_genarra)} - function array1_of_genarray(a) - {return 1 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array1_of_genarra)} - function array2_of_genarray(a) - {return 2 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array2_of_genarra)} - function array3_of_genarray(a) - {return 3 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array3_of_genarra)} - function reshape_0(a){return caml_ba_reshape(a,[0])} - function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])} - function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])} - function reshape_3(a,dim1,dim2,dim3) - {return caml_ba_reshape(a,[0,dim1,dim2,dim3])} - var - Stdlib_Bigarray= - [0, - float32, - float64, - complex32, - complex64, - int8_signed, - int8_unsigned, - int16_signed, - int16_unsigned, - int$2, - int32$1, - int64$1, - nativeint$1, - char$0, - kind_size_in_bytes, - c_layout, - fortran_layout, - [0,init$5,dims,size_in_bytes], - [0, - create$8, - of_value, - caml_ba_change_layout, - size_in_bytes$0, - get$2, - set$1, - of_value], - [0, - create$9, - init$6, - caml_ba_change_layout, - size_in_bytes$1, - slice, - of_array], - [0, - create$10, - init$7, - caml_ba_change_layout, - size_in_bytes$2, - slice_left, - slice_right, - of_array$0], - [0, - create$11, - init$8, - caml_ba_change_layout, - size_in_bytes$3, - slice_left_1, - slice_right_1, - slice_left_2, - slice_right_2, - of_array$1], - array0_of_genarray, - array1_of_genarray, - array2_of_genarray, - array3_of_genarray, - caml_ba_reshape, - reshape_0, - reshape_1, - reshape_2, - reshape_3]; - caml_register_global(818,Stdlib_Bigarray,"Stdlib__Bigarray"); - return} - (globalThis)); - - -//# 1 "../../.js/unix/unix.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_channel_descriptor=runtime.caml_channel_descriptor, - caml_ml_bytes_length=runtime.caml_ml_bytes_length, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_register_global=runtime.caml_register_global, - caml_string_equal=runtime.caml_string_equal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception, - unix_inet_addr_of_string=runtime.unix_inet_addr_of_string; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - var - global_data=runtime.caml_get_global_data(), - cst_close_process_full=caml_string_of_jsbytes("close_process_full"), - cst_close_process=caml_string_of_jsbytes("close_process"), - cst_close_process_out=caml_string_of_jsbytes("close_process_out"), - cst_close_process_in=caml_string_of_jsbytes("close_process_in"), - cst_process_full_pid=caml_string_of_jsbytes("process_full_pid"), - cst_process_pid=caml_string_of_jsbytes("process_pid"), - cst_process_out_pid=caml_string_of_jsbytes("process_out_pid"), - cst_process_in_pid=caml_string_of_jsbytes("process_in_pid"), - cst$8=caml_string_of_jsbytes(""), - cst_c$0=caml_string_of_jsbytes("-c"), - cst_c=caml_string_of_jsbytes("-c"), - cst$7=caml_string_of_jsbytes(""), - cst_udp$1=caml_string_of_jsbytes("udp"), - cst_tcp$1=caml_string_of_jsbytes("tcp"), - cst$4=caml_string_of_jsbytes(""), - cst$6=caml_string_of_jsbytes(""), - cst_tcp=caml_string_of_jsbytes("tcp"), - cst_udp=caml_string_of_jsbytes("udp"), - cst_udp$0=caml_string_of_jsbytes("udp"), - cst_tcp$0=caml_string_of_jsbytes("tcp"), - cst$5=caml_string_of_jsbytes(""), - cst_0_0_0_0$0=caml_string_of_jsbytes("0.0.0.0"), - cst_127_0_0_1$0=caml_string_of_jsbytes("127.0.0.1"), - cst_Unix_sendto=caml_string_of_jsbytes("Unix.sendto"), - cst_Unix_send=caml_string_of_jsbytes("Unix.send"), - cst_Unix_recvfrom=caml_string_of_jsbytes("Unix.recvfrom"), - cst_Unix_recv=caml_string_of_jsbytes("Unix.recv"), - cst_Unix_single_write=caml_string_of_jsbytes("Unix.single_write"), - cst_Unix_write=caml_string_of_jsbytes("Unix.write"), - cst_Unix_read=caml_string_of_jsbytes("Unix.read"), - cst$1=caml_string_of_jsbytes(': "'), - cst_failed=caml_string_of_jsbytes('" failed'), - cst_on=caml_string_of_jsbytes(' on "'), - cst$2=caml_string_of_jsbytes('"'), - cst$3=caml_string_of_jsbytes(": "), - cst_E2BIG=caml_string_of_jsbytes("E2BIG"), - cst_EACCES=caml_string_of_jsbytes("EACCES"), - cst_EAGAIN=caml_string_of_jsbytes("EAGAIN"), - cst_EBADF=caml_string_of_jsbytes("EBADF"), - cst_EBUSY=caml_string_of_jsbytes("EBUSY"), - cst_ECHILD=caml_string_of_jsbytes("ECHILD"), - cst_EDEADLK=caml_string_of_jsbytes("EDEADLK"), - cst_EDOM=caml_string_of_jsbytes("EDOM"), - cst_EEXIST=caml_string_of_jsbytes("EEXIST"), - cst_EFAULT=caml_string_of_jsbytes("EFAULT"), - cst_EFBIG=caml_string_of_jsbytes("EFBIG"), - cst_EINTR=caml_string_of_jsbytes("EINTR"), - cst_EINVAL=caml_string_of_jsbytes("EINVAL"), - cst_EIO=caml_string_of_jsbytes("EIO"), - cst_EISDIR=caml_string_of_jsbytes("EISDIR"), - cst_EMFILE=caml_string_of_jsbytes("EMFILE"), - cst_EMLINK=caml_string_of_jsbytes("EMLINK"), - cst_ENAMETOOLONG=caml_string_of_jsbytes("ENAMETOOLONG"), - cst_ENFILE=caml_string_of_jsbytes("ENFILE"), - cst_ENODEV=caml_string_of_jsbytes("ENODEV"), - cst_ENOENT=caml_string_of_jsbytes("ENOENT"), - cst_ENOEXEC=caml_string_of_jsbytes("ENOEXEC"), - cst_ENOLCK=caml_string_of_jsbytes("ENOLCK"), - cst_ENOMEM=caml_string_of_jsbytes("ENOMEM"), - cst_ENOSPC=caml_string_of_jsbytes("ENOSPC"), - cst_ENOSYS=caml_string_of_jsbytes("ENOSYS"), - cst_ENOTDIR=caml_string_of_jsbytes("ENOTDIR"), - cst_ENOTEMPTY=caml_string_of_jsbytes("ENOTEMPTY"), - cst_ENOTTY=caml_string_of_jsbytes("ENOTTY"), - cst_ENXIO=caml_string_of_jsbytes("ENXIO"), - cst_EPERM=caml_string_of_jsbytes("EPERM"), - cst_EPIPE=caml_string_of_jsbytes("EPIPE"), - cst_ERANGE=caml_string_of_jsbytes("ERANGE"), - cst_EROFS=caml_string_of_jsbytes("EROFS"), - cst_ESPIPE=caml_string_of_jsbytes("ESPIPE"), - cst_ESRCH=caml_string_of_jsbytes("ESRCH"), - cst_EXDEV=caml_string_of_jsbytes("EXDEV"), - cst_EWOULDBLOCK=caml_string_of_jsbytes("EWOULDBLOCK"), - cst_EINPROGRESS=caml_string_of_jsbytes("EINPROGRESS"), - cst_EALREADY=caml_string_of_jsbytes("EALREADY"), - cst_ENOTSOCK=caml_string_of_jsbytes("ENOTSOCK"), - cst_EDESTADDRREQ=caml_string_of_jsbytes("EDESTADDRREQ"), - cst_EMSGSIZE=caml_string_of_jsbytes("EMSGSIZE"), - cst_EPROTOTYPE=caml_string_of_jsbytes("EPROTOTYPE"), - cst_ENOPROTOOPT=caml_string_of_jsbytes("ENOPROTOOPT"), - cst_EPROTONOSUPPORT=caml_string_of_jsbytes("EPROTONOSUPPORT"), - cst_ESOCKTNOSUPPORT=caml_string_of_jsbytes("ESOCKTNOSUPPORT"), - cst_EOPNOTSUPP=caml_string_of_jsbytes("EOPNOTSUPP"), - cst_EPFNOSUPPORT=caml_string_of_jsbytes("EPFNOSUPPORT"), - cst_EAFNOSUPPORT=caml_string_of_jsbytes("EAFNOSUPPORT"), - cst_EADDRINUSE=caml_string_of_jsbytes("EADDRINUSE"), - cst_EADDRNOTAVAIL=caml_string_of_jsbytes("EADDRNOTAVAIL"), - cst_ENETDOWN=caml_string_of_jsbytes("ENETDOWN"), - cst_ENETUNREACH=caml_string_of_jsbytes("ENETUNREACH"), - cst_ENETRESET=caml_string_of_jsbytes("ENETRESET"), - cst_ECONNABORTED=caml_string_of_jsbytes("ECONNABORTED"), - cst_ECONNRESET=caml_string_of_jsbytes("ECONNRESET"), - cst_ENOBUFS=caml_string_of_jsbytes("ENOBUFS"), - cst_EISCONN=caml_string_of_jsbytes("EISCONN"), - cst_ENOTCONN=caml_string_of_jsbytes("ENOTCONN"), - cst_ESHUTDOWN=caml_string_of_jsbytes("ESHUTDOWN"), - cst_ETOOMANYREFS=caml_string_of_jsbytes("ETOOMANYREFS"), - cst_ETIMEDOUT=caml_string_of_jsbytes("ETIMEDOUT"), - cst_ECONNREFUSED=caml_string_of_jsbytes("ECONNREFUSED"), - cst_EHOSTDOWN=caml_string_of_jsbytes("EHOSTDOWN"), - cst_EHOSTUNREACH=caml_string_of_jsbytes("EHOSTUNREACH"), - cst_ELOOP=caml_string_of_jsbytes("ELOOP"), - cst_EOVERFLOW=caml_string_of_jsbytes("EOVERFLOW"), - shell=caml_string_of_jsbytes("/bin/sh"), - cst_Unix_Unix_error=caml_string_of_jsbytes("Unix.Unix_error"), - cst=caml_string_of_jsbytes(""), - cst$0=caml_string_of_jsbytes(""), - cst_Unix_Unix_error$0=caml_string_of_jsbytes("Unix.Unix_error"), - cst_0_0_0_0=caml_string_of_jsbytes("0.0.0.0"), - cst_127_0_0_1=caml_string_of_jsbytes("127.0.0.1"), - cst$9=caml_string_of_jsbytes("::"), - cst_1=caml_string_of_jsbytes("::1"), - Stdlib=global_data.Stdlib, - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Fun=global_data.Stdlib__Fun, - Stdlib_Int=global_data.Stdlib__Int, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_Bytes=global_data.Stdlib__Bytes, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_Callback=global_data.Stdlib__Callback, - Stdlib_Printexc=global_data.Stdlib__Printexc, - Unix_error=[248,cst_Unix_Unix_error,runtime.caml_fresh_oo_id(0)]; - caml_call2 - (Stdlib_Callback[2],cst_Unix_Unix_error$0,[0,Unix_error,0,cst$0,cst]); - var - _n_=[0,1], - _o_=[0,1], - _m_=[0,1], - _j_=[0,1], - _k_=[0,1], - _l_=[0,1], - _h_=[0,1], - _i_=[0,1], - _g_=[0,1], - _f_=[0,1], - _e_=[0,1], - _d_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _c_= - [0, - [11,caml_string_of_jsbytes("EUNKNOWNERR "),[4,0,0,0,0]], - caml_string_of_jsbytes("EUNKNOWNERR %d")], - _b_= - [0, - [11, - caml_string_of_jsbytes("Unix.Unix_error(Unix."), - [2, - 0, - [11, - caml_string_of_jsbytes(", "), - [3,0,[11,caml_string_of_jsbytes(", "),[3,0,[12,41,0]]]]]]], - caml_string_of_jsbytes("Unix.Unix_error(Unix.%s, %S, %S)")]; - function _a_(param) - {if(param[1] === Unix_error) - {var s=param[4],s$0=param[3],e=param[2]; - if(typeof e === "number") - {var _c__=e; - if(34 <= _c__) - switch(_c__) - {case 34:var msg=cst_ESPIPE;break; - case 35:var msg=cst_ESRCH;break; - case 36:var msg=cst_EXDEV;break; - case 37:var msg=cst_EWOULDBLOCK;break; - case 38:var msg=cst_EINPROGRESS;break; - case 39:var msg=cst_EALREADY;break; - case 40:var msg=cst_ENOTSOCK;break; - case 41:var msg=cst_EDESTADDRREQ;break; - case 42:var msg=cst_EMSGSIZE;break; - case 43:var msg=cst_EPROTOTYPE;break; - case 44:var msg=cst_ENOPROTOOPT;break; - case 45:var msg=cst_EPROTONOSUPPORT;break; - case 46:var msg=cst_ESOCKTNOSUPPORT;break; - case 47:var msg=cst_EOPNOTSUPP;break; - case 48:var msg=cst_EPFNOSUPPORT;break; - case 49:var msg=cst_EAFNOSUPPORT;break; - case 50:var msg=cst_EADDRINUSE;break; - case 51:var msg=cst_EADDRNOTAVAIL;break; - case 52:var msg=cst_ENETDOWN;break; - case 53:var msg=cst_ENETUNREACH;break; - case 54:var msg=cst_ENETRESET;break; - case 55:var msg=cst_ECONNABORTED;break; - case 56:var msg=cst_ECONNRESET;break; - case 57:var msg=cst_ENOBUFS;break; - case 58:var msg=cst_EISCONN;break; - case 59:var msg=cst_ENOTCONN;break; - case 60:var msg=cst_ESHUTDOWN;break; - case 61:var msg=cst_ETOOMANYREFS;break; - case 62:var msg=cst_ETIMEDOUT;break; - case 63:var msg=cst_ECONNREFUSED;break; - case 64:var msg=cst_EHOSTDOWN;break; - case 65:var msg=cst_EHOSTUNREACH;break; - case 66:var msg=cst_ELOOP;break; - default:var msg=cst_EOVERFLOW} - else - switch(_c__) - {case 0:var msg=cst_E2BIG;break; - case 1:var msg=cst_EACCES;break; - case 2:var msg=cst_EAGAIN;break; - case 3:var msg=cst_EBADF;break; - case 4:var msg=cst_EBUSY;break; - case 5:var msg=cst_ECHILD;break; - case 6:var msg=cst_EDEADLK;break; - case 7:var msg=cst_EDOM;break; - case 8:var msg=cst_EEXIST;break; - case 9:var msg=cst_EFAULT;break; - case 10:var msg=cst_EFBIG;break; - case 11:var msg=cst_EINTR;break; - case 12:var msg=cst_EINVAL;break; - case 13:var msg=cst_EIO;break; - case 14:var msg=cst_EISDIR;break; - case 15:var msg=cst_EMFILE;break; - case 16:var msg=cst_EMLINK;break; - case 17:var msg=cst_ENAMETOOLONG;break; - case 18:var msg=cst_ENFILE;break; - case 19:var msg=cst_ENODEV;break; - case 20:var msg=cst_ENOENT;break; - case 21:var msg=cst_ENOEXEC;break; - case 22:var msg=cst_ENOLCK;break; - case 23:var msg=cst_ENOMEM;break; - case 24:var msg=cst_ENOSPC;break; - case 25:var msg=cst_ENOSYS;break; - case 26:var msg=cst_ENOTDIR;break; - case 27:var msg=cst_ENOTEMPTY;break; - case 28:var msg=cst_ENOTTY;break; - case 29:var msg=cst_ENXIO;break; - case 30:var msg=cst_EPERM;break; - case 31:var msg=cst_EPIPE;break; - case 32:var msg=cst_ERANGE;break; - default:var msg=cst_EROFS}} - else - var x=e[1],msg=caml_call2(Stdlib_Printf[4],_c_,x); - return [0,caml_call4(Stdlib_Printf[4],_b_,msg,s$0,s)]} - return 0} - caml_call1(Stdlib_Printexc[9],_a_); - function handle_unix_error(f,arg) - {try - {var _c9_=caml_call1(f,arg);return _c9_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Unix_error) - {var - arg$0=exn[4], - fun_name=exn[3], - err=exn[2], - _c7_=runtime.caml_check_bound(runtime.caml_sys_argv(0),0)[1]; - caml_call1(Stdlib[49],_c7_); - caml_call1(Stdlib[49],cst$1); - caml_call1(Stdlib[49],fun_name); - caml_call1(Stdlib[49],cst_failed); - if(0 < caml_ml_string_length(arg$0)) - {caml_call1(Stdlib[49],cst_on); - caml_call1(Stdlib[49],arg$0); - caml_call1(Stdlib[49],cst$2)} - caml_call1(Stdlib[49],cst$3); - var _c8_=runtime.unix_error_message(err); - caml_call1(Stdlib[53],_c8_); - return caml_call1(Stdlib[99],2)} - throw exn}} - var stdin=0,stdout=1,stderr=2; - function read(fd,buf,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_read(fd,buf,ofs,len); - return caml_call1(Stdlib[1],cst_Unix_read)} - function write(fd,buf,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_write(fd,buf,ofs,len); - return caml_call1(Stdlib[1],cst_Unix_write)} - function single_write(fd,buf,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_single_write(fd,buf,ofs,len); - return caml_call1(Stdlib[1],cst_Unix_single_write)} - function write_substring(fd,buf,ofs,len) - {return write(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len)} - function single_write_substring(fd,buf,ofs,len) - {return single_write(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len)} - function map_file(fd,opt,kind,layout,shared,dims) - {if(opt)var sth=opt[1],pos=sth;else var pos=_d_; - return runtime.caml_unix_map_file_bytecode - (fd,kind,layout,shared,dims,pos)} - function pause(param) - {var sigs=runtime.unix_sigprocmask(1,0); - return runtime.unix_sigsuspend(sigs)} - function sleep(duration){return runtime.unix_sleep(duration)} - function is_inet6_addr(s){return 16 === caml_ml_string_length(s)?1:0} - var - inet_addr_any=unix_inet_addr_of_string(cst_0_0_0_0), - inet_addr_loopback=unix_inet_addr_of_string(cst_127_0_0_1); - try - {var _v_=unix_inet_addr_of_string(cst$9),inet_addr_any$0=_v_} - catch(_c6_) - {_c6_ = caml_wrap_exception(_c6_); - if(_c6_[1] !== Stdlib[7])throw _c6_; - var inet_addr_any$0=inet_addr_any} - try - {var _u_=unix_inet_addr_of_string(cst_1),inet6_addr_loopback=_u_} - catch(_c5_) - {_c5_ = caml_wrap_exception(_c5_); - if(_c5_[1] !== Stdlib[7])throw _c5_; - var inet6_addr_loopback=inet_addr_loopback} - function domain_of_sockaddr(param) - {if(0 === param[0])return 0;var a=param[1];return is_inet6_addr(a)?2:1} - function recv(fd,buf,ofs,len,flags) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_recv(fd,buf,ofs,len,flags); - return caml_call1(Stdlib[1],cst_Unix_recv)} - function recvfrom(fd,buf,ofs,len,flags) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_recvfrom(fd,buf,ofs,len,flags); - return caml_call1(Stdlib[1],cst_Unix_recvfrom)} - function send(fd,buf,ofs,len,flags) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_send(fd,buf,ofs,len,flags); - return caml_call1(Stdlib[1],cst_Unix_send)} - function sendto(fd,buf,ofs,len,flags,addr) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buf) - len | 0) < ofs)) - return runtime.unix_sendto(fd,buf,ofs,len,flags,addr); - return caml_call1(Stdlib[1],cst_Unix_sendto)} - function send_substring(fd,buf,ofs,len,flags) - {return send(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len,flags)} - function sendto_substring(fd,buf,ofs,len,flags,addr) - {return sendto(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len,flags,addr)} - function getsockopt(fd,opt){return runtime.unix_getsockopt(0,fd,opt)} - function setsockopt(fd,opt,v){return runtime.unix_setsockopt(0,fd,opt,v)} - function getsockopt_int(fd,opt){return runtime.unix_getsockopt(1,fd,opt)} - function setsockopt_int(fd,opt,v) - {return runtime.unix_setsockopt(1,fd,opt,v)} - function getsockopt_optint(fd,opt) - {return runtime.unix_getsockopt(2,fd,opt)} - function setsockopt_optint(fd,opt,v) - {return runtime.unix_setsockopt(2,fd,opt,v)} - function getsockopt_float(fd,opt) - {return runtime.unix_getsockopt(3,fd,opt)} - function setsockopt_float(fd,opt,v) - {return runtime.unix_setsockopt(3,fd,opt,v)} - function getsockopt_error(fd){return runtime.unix_getsockopt(4,fd,0)} - function getaddrinfo(node,service,opts) - {try - {var - _cV_=runtime.unix_getaddrinfo(node,service,opts), - _cW_=caml_call1(Stdlib_List[9],_cV_); - return _cW_} - catch(_cX_) - {_cX_ = caml_wrap_exception(_cX_); - if(_cX_[1] === Stdlib[6]) - {var - opt_socktype=[0,0], - opt_protocol=[0,0], - opt_passive=[0,0], - _cI_= - function(param) - {if(typeof param === "number") - {if(2 === param){opt_passive[1] = 1;return 0}} - else - switch(param[0]) - {case 1:var s=param[1];opt_socktype[1] = [0,s];return 0; - case 2:var p=param[1];opt_protocol[1] = p;return 0 - } - return 0}; - caml_call2(Stdlib_List[17],_cI_,opts); - var - get_port= - function(ty,kind) - {if(caml_string_equal(service,cst$4))return [0,[0,ty,0],0]; - try - {var _c2_=[0,[0,ty,runtime.caml_int_of_string(service)],0]; - return _c2_} - catch(_c3_) - {_c3_ = caml_wrap_exception(_c3_); - if(_c3_[1] === Stdlib[7]) - try - {var - _c1_= - [0,[0,ty,runtime.unix_getservbyname(service,kind)[3]],0]; - return _c1_} - catch(_c4_) - {_c4_ = caml_wrap_exception(_c4_); - if(_c4_ === Stdlib[8])return 0; - throw _c4_} - throw _c3_}}, - _cJ_=opt_socktype[1]; - if(_cJ_) - var - _cK_=_cJ_[1], - _cL_= - 1 === _cK_ - ?get_port(1,cst_udp) - :_cK_ - ?caml_string_equal(service,cst$6)?[0,[0,_cK_,0],0]:0 - :get_port(0,cst_tcp), - ports=_cL_; - else - var - _cT_=get_port(1,cst_udp$0), - _cU_=get_port(0,cst_tcp$0), - ports=caml_call2(Stdlib[37],_cU_,_cT_); - if(caml_string_equal(node,cst$5)) - var - addresses= - caml_call2(Stdlib_List[36],2,opts) - ?[0,[0,inet_addr_any,cst_0_0_0_0$0],0] - :[0,[0,inet_addr_loopback,cst_127_0_0_1$0],0]; - else - try - {var - _cS_=[0,[0,unix_inet_addr_of_string(node),node],0], - addresses=_cS_} - catch(_cZ_) - {_cZ_ = caml_wrap_exception(_cZ_); - if(_cZ_[1] !== Stdlib[7])throw _cZ_; - try - {var - he=runtime.unix_gethostbyname(node), - _cP_=caml_call1(Stdlib_Array[11],he[4]), - _cQ_=function(a){return [0,a,he[1]]}, - _cR_=caml_call2(Stdlib_List[19],_cQ_,_cP_), - _cO_=_cR_} - catch(_c0_) - {_c0_ = caml_wrap_exception(_c0_); - if(_c0_ !== Stdlib[8])throw _c0_; - var _cO_=0} - var addresses=_cO_} - var - _cM_= - function(param) - {var port=param[2],ty=param[1]; - function _cY_(param) - {var name=param[2],addr=param[1]; - return [0,1,ty,opt_protocol[1],[1,addr,port],name]} - return caml_call2(Stdlib_List[19],_cY_,addresses)}, - _cN_=caml_call2(Stdlib_List[19],_cM_,ports); - return caml_call1(Stdlib_List[14],_cN_)} - throw _cX_}} - function getnameinfo(addr,opts) - {try - {var _cE_=runtime.unix_getnameinfo(addr,opts);return _cE_} - catch(_cF_) - {_cF_ = caml_wrap_exception(_cF_); - if(_cF_[1] === Stdlib[6]) - {if(0 === addr[0]){var f=addr[1];return [0,cst$7,f]} - var p=addr[2],a=addr[1]; - try - {if(caml_call2(Stdlib_List[36],1,opts))throw Stdlib[8]; - var _cD_=runtime.unix_gethostbyaddr(a)[1],hostname=_cD_} - catch(_cH_) - {_cH_ = caml_wrap_exception(_cH_); - if(_cH_ !== Stdlib[8])throw _cH_; - if(caml_call2(Stdlib_List[36],2,opts))throw Stdlib[8]; - var hostname=runtime.unix_string_of_inet_addr(a)} - try - {if(caml_call2(Stdlib_List[36],3,opts))throw Stdlib[8]; - var - kind=caml_call2(Stdlib_List[36],4,opts)?cst_udp$1:cst_tcp$1, - _cC_=runtime.unix_getservbyport(p,kind)[1], - service=_cC_} - catch(_cG_) - {_cG_ = caml_wrap_exception(_cG_); - if(_cG_ !== Stdlib[8])throw _cG_; - var service=caml_call1(Stdlib_Int[12],p)} - return [0,hostname,service]} - throw _cF_}} - function waitpid_non_intr(pid) - {for(;;) - try - {var _cA_=runtime.unix_waitpid(0,pid);return _cA_} - catch(_cB_) - {_cB_ = caml_wrap_exception(_cB_); - if(_cB_[1] === Unix_error) - {var _cz_=_cB_[2]; - if(typeof _cz_ === "number" && 11 === _cz_)continue} - throw _cB_}} - function system(cmd) - {var pid=runtime.unix_spawn(shell,[0,shell,cst_c,cmd],0,0,[0,0,1,2]); - return waitpid_non_intr(pid)[2]} - function create_process_gen - (cmd,args,optenv,new_stdin,new_stdout,new_stderr) - {var toclose=[0,0]; - function close_after(param) - {var _cv_=toclose[1]; - function _cw_(fd) - {try - {var _cx_=runtime.unix_close(fd);return _cx_} - catch(_cy_) - {_cy_ = caml_wrap_exception(_cy_); - if(_cy_[1] === Unix_error)return 0; - throw _cy_}} - return caml_call2(Stdlib_List[17],_cw_,_cv_)} - function file_descr_not_standard(fd) - {var fd$0=fd; - for(;;) - {if(3 <= fd$0)return fd$0; - var fd$1=runtime.unix_dup(_e_,fd$0); - toclose[1] = [0,fd$1,toclose[1]]; - var fd$0=fd$1; - continue}} - var - _cr_=2 === new_stderr?2:file_descr_not_standard(new_stderr), - _cs_=1 === new_stdout?1:file_descr_not_standard(new_stdout), - _ct_=0 === new_stdin?0:file_descr_not_standard(new_stdin), - redirections=[0,_ct_,_cs_,_cr_]; - function _cu_(param) - {return runtime.unix_spawn(cmd,args,optenv,1,redirections)} - return caml_call2(Stdlib_Fun[4],close_after,_cu_)} - function create_process(cmd,args,new_stdin,new_stdout,new_stderr) - {return create_process_gen(cmd,args,0,new_stdin,new_stdout,new_stderr)} - function create_process_env(cmd,args,env,new_stdin,new_stdout,new_stderr) - {return create_process_gen - (cmd,args,[0,env],new_stdin,new_stdout,new_stderr)} - var popen_processes=caml_call2(Stdlib_Hashtbl[1],0,7); - function open_proc(prog,args,envopt,proc,input,output,error) - {var pid=create_process_gen(prog,args,envopt,input,output,error); - return caml_call3(Stdlib_Hashtbl[5],popen_processes,proc,pid)} - function open_process_args_in(prog,args) - {var - match=runtime.unix_pipe(_f_,0), - in_write=match[2], - in_read=match[1], - inchan=runtime.unix_inchannel_of_filedescr(in_read); - try - {open_proc(prog,args,0,[1,inchan],stdin,in_write,stderr)} - catch(e) - {e = caml_wrap_exception(e); - caml_call1(Stdlib[93],inchan); - runtime.unix_close(in_write); - throw e} - runtime.unix_close(in_write); - return inchan} - function open_process_args_out(prog,args) - {var - match=runtime.unix_pipe(_g_,0), - out_write=match[2], - out_read=match[1], - outchan=runtime.unix_outchannel_of_filedescr(out_write); - try - {open_proc(prog,args,0,[2,outchan],out_read,stdout,stderr)} - catch(e) - {e = caml_wrap_exception(e); - caml_call1(Stdlib[76],outchan); - runtime.unix_close(out_read); - throw e} - runtime.unix_close(out_read); - return outchan} - function open_process_args(prog,args) - {var match=runtime.unix_pipe(_h_,0),in_write=match[2],in_read=match[1]; - try - {var match$0=runtime.unix_pipe(_i_,0)} - catch(e) - {e = caml_wrap_exception(e); - runtime.unix_close(in_read); - runtime.unix_close(in_write); - throw e} - var - out_write=match$0[2], - out_read=match$0[1], - inchan=runtime.unix_inchannel_of_filedescr(in_read), - outchan=runtime.unix_outchannel_of_filedescr(out_write); - try - {open_proc(prog,args,0,[0,inchan,outchan],out_read,in_write,stderr)} - catch(e) - {e = caml_wrap_exception(e); - runtime.unix_close(out_read); - runtime.unix_close(out_write); - runtime.unix_close(in_read); - runtime.unix_close(in_write); - throw e} - runtime.unix_close(out_read); - runtime.unix_close(in_write); - return [0,inchan,outchan]} - function open_process_args_full(prog,args,env) - {var match=runtime.unix_pipe(_j_,0),in_write=match[2],in_read=match[1]; - try - {var match$0=runtime.unix_pipe(_k_,0)} - catch(e) - {e = caml_wrap_exception(e); - runtime.unix_close(in_read); - runtime.unix_close(in_write); - throw e} - var out_write=match$0[2],out_read=match$0[1]; - try - {var match$1=runtime.unix_pipe(_l_,0)} - catch(e) - {e = caml_wrap_exception(e); - runtime.unix_close(in_read); - runtime.unix_close(in_write); - runtime.unix_close(out_read); - runtime.unix_close(out_write); - throw e} - var - err_write=match$1[2], - err_read=match$1[1], - inchan=runtime.unix_inchannel_of_filedescr(in_read), - outchan=runtime.unix_outchannel_of_filedescr(out_write), - errchan=runtime.unix_inchannel_of_filedescr(err_read); - try - {open_proc - (prog, - args, - [0,env], - [3,inchan,outchan,errchan], - out_read, - in_write, - err_write)} - catch(e) - {e = caml_wrap_exception(e); - runtime.unix_close(out_read); - runtime.unix_close(out_write); - runtime.unix_close(in_read); - runtime.unix_close(in_write); - runtime.unix_close(err_read); - runtime.unix_close(err_write); - throw e} - runtime.unix_close(out_read); - runtime.unix_close(in_write); - runtime.unix_close(err_write); - return [0,inchan,outchan,errchan]} - function open_process_shell(fn,cmd) - {return caml_call2(fn,shell,[0,shell,cst_c$0,cmd])} - function open_process_in(cmd) - {return open_process_shell(open_process_args_in,cmd)} - function open_process_out(cmd) - {return open_process_shell(open_process_args_out,cmd)} - function open_process(cmd) - {return open_process_shell(open_process_args,cmd)} - function open_process_full(cmd) - {return open_process_shell(open_process_args_full,cmd)} - function find_proc_id(fun_name,proc) - {try - {var _cp_=caml_call2(Stdlib_Hashtbl[6],popen_processes,proc); - return _cp_} - catch(_cq_) - {_cq_ = caml_wrap_exception(_cq_); - if(_cq_ === Stdlib[8])throw [0,Unix_error,3,fun_name,cst$8]; - throw _cq_}} - function remove_proc_id(proc) - {return caml_call2(Stdlib_Hashtbl[10],popen_processes,proc)} - function process_in_pid(inchan) - {return find_proc_id(cst_process_in_pid,[1,inchan])} - function process_out_pid(outchan) - {return find_proc_id(cst_process_out_pid,[2,outchan])} - function process_pid(param) - {var outchan=param[2],inchan=param[1]; - return find_proc_id(cst_process_pid,[0,inchan,outchan])} - function process_full_pid(param) - {var errchan=param[3],outchan=param[2],inchan=param[1]; - return find_proc_id(cst_process_full_pid,[3,inchan,outchan,errchan])} - function close_process_in(inchan) - {var proc=[1,inchan],pid=find_proc_id(cst_close_process_in,proc); - remove_proc_id(proc); - caml_call1(Stdlib[93],inchan); - return waitpid_non_intr(pid)[2]} - function close_process_out(outchan) - {var proc=[2,outchan],pid=find_proc_id(cst_close_process_out,proc); - remove_proc_id(proc); - try - {caml_call1(Stdlib[76],outchan)} - catch(_co_) - {_co_ = caml_wrap_exception(_co_);if(_co_[1] !== Stdlib[11])throw _co_} - return waitpid_non_intr(pid)[2]} - function close_process(param) - {var - outchan=param[2], - inchan=param[1], - proc=[0,inchan,outchan], - pid=find_proc_id(cst_close_process,proc); - remove_proc_id(proc); - caml_call1(Stdlib[93],inchan); - try - {caml_call1(Stdlib[76],outchan)} - catch(_cn_) - {_cn_ = caml_wrap_exception(_cn_);if(_cn_[1] !== Stdlib[11])throw _cn_} - return waitpid_non_intr(pid)[2]} - function close_process_full(param) - {var - errchan=param[3], - outchan=param[2], - inchan=param[1], - proc=[3,inchan,outchan,errchan], - pid=find_proc_id(cst_close_process_full,proc); - remove_proc_id(proc); - caml_call1(Stdlib[93],inchan); - try - {caml_call1(Stdlib[76],outchan)} - catch(_cm_) - {_cm_ = caml_wrap_exception(_cm_);if(_cm_[1] !== Stdlib[11])throw _cm_} - caml_call1(Stdlib[93],errchan); - return waitpid_non_intr(pid)[2]} - function open_connection(sockaddr) - {var sock=runtime.unix_socket(_m_,domain_of_sockaddr(sockaddr),0,0); - try - {runtime.unix_connect(sock,sockaddr); - var - _ck_=runtime.unix_outchannel_of_filedescr(sock), - _cl_=[0,runtime.unix_inchannel_of_filedescr(sock),_ck_]; - return _cl_} - catch(exn) - {exn = caml_wrap_exception(exn);runtime.unix_close(sock);throw exn}} - function shutdown_connection(inchan) - {return runtime.unix_shutdown(caml_channel_descriptor(inchan),1)} - function accept_non_intr(s) - {for(;;) - try - {var _ci_=runtime.unix_accept(_n_,s);return _ci_} - catch(_cj_) - {_cj_ = caml_wrap_exception(_cj_); - if(_cj_[1] === Unix_error) - {var _ch_=_cj_[2]; - if(typeof _ch_ === "number" && 11 === _ch_)continue} - throw _cj_}} - function establish_server(server_fun,sockaddr) - {var sock=runtime.unix_socket(_o_,domain_of_sockaddr(sockaddr),0,0); - runtime.unix_setsockopt(0,sock,2,1); - runtime.unix_bind(sock,sockaddr); - runtime.unix_listen(sock,5); - for(;;) - {var match=accept_non_intr(sock),s=match[1],id=runtime.unix_fork(0); - if(0 === id) - {if(0 !== runtime.unix_fork(0))runtime.unix_exit(0); - runtime.unix_close(sock); - var - inchan=runtime.unix_inchannel_of_filedescr(s), - outchan=runtime.unix_outchannel_of_filedescr(s); - caml_call2(server_fun,inchan,outchan); - caml_call1(Stdlib[99],0)} - else - {runtime.unix_close(s);waitpid_non_intr(id)} - continue}} - function setsid(_cg_){return runtime.unix_setsid(_cg_)} - function tcflow(_cf_,_ce_){return runtime.unix_tcflow(_cf_,_ce_)} - function tcflush(_cd_,_cc_){return runtime.unix_tcflush(_cd_,_cc_)} - function tcdrain(_cb_){return runtime.unix_tcdrain(_cb_)} - function tcsendbreak(_ca_,_b$_) - {return runtime.unix_tcsendbreak(_ca_,_b$_)} - function tcsetattr(_b__,_b9_,_b8_) - {return runtime.unix_tcsetattr(_b__,_b9_,_b8_)} - function tcgetattr(_b7_){return runtime.unix_tcgetattr(_b7_)} - function getservbyport(_b6_,_b5_) - {return runtime.unix_getservbyport(_b6_,_b5_)} - function getservbyname(_b4_,_b3_) - {return runtime.unix_getservbyname(_b4_,_b3_)} - function getprotobynumber(_b2_) - {return runtime.unix_getprotobynumber(_b2_)} - function getprotobyname(_b1_){return runtime.unix_getprotobyname(_b1_)} - function gethostbyaddr(_b0_){return runtime.unix_gethostbyaddr(_b0_)} - function gethostbyname(_bZ_){return runtime.unix_gethostbyname(_bZ_)} - function gethostname(_bY_){return runtime.unix_gethostname(_bY_)} - function getpeername(_bX_){return runtime.unix_getpeername(_bX_)} - function getsockname(_bW_){return runtime.unix_getsockname(_bW_)} - function shutdown(_bV_,_bU_){return runtime.unix_shutdown(_bV_,_bU_)} - function listen(_bT_,_bS_){return runtime.unix_listen(_bT_,_bS_)} - function connect(_bR_,_bQ_){return runtime.unix_connect(_bR_,_bQ_)} - function bind(_bP_,_bO_){return runtime.unix_bind(_bP_,_bO_)} - function accept(_bN_,_bM_){return runtime.unix_accept(_bN_,_bM_)} - function socketpair(_bL_,_bK_,_bJ_,_bI_) - {return runtime.unix_socketpair(_bL_,_bK_,_bJ_,_bI_)} - function socket(_bH_,_bG_,_bF_,_bE_) - {return runtime.unix_socket(_bH_,_bG_,_bF_,_bE_)} - function string_of_inet_addr(_bD_) - {return runtime.unix_string_of_inet_addr(_bD_)} - function inet_addr_of_string(_bC_){return unix_inet_addr_of_string(_bC_)} - function getgrgid(_bB_){return runtime.unix_getgrgid(_bB_)} - var getpwuid=runtime.unix_getpwuid; - function getgrnam(_bA_){return runtime.unix_getgrnam(_bA_)} - function getpwnam(_bz_){return runtime.unix_getpwnam(_bz_)} - function getlogin(_by_){return runtime.unix_getlogin(_by_)} - function initgroups(_bx_,_bw_){return runtime.unix_initgroups(_bx_,_bw_)} - function setgroups(_bv_){return runtime.unix_setgroups(_bv_)} - function getgroups(_bu_){return runtime.unix_getgroups(_bu_)} - function setgid(_bt_){return runtime.unix_setgid(_bt_)} - function getegid(_bs_){return runtime.unix_getegid(_bs_)} - function getgid(_br_){return runtime.unix_getgid(_br_)} - function setuid(_bq_){return runtime.unix_setuid(_bq_)} - function geteuid(_bp_){return runtime.unix_geteuid(_bp_)} - var getuid=runtime.unix_getuid; - function setitimer(_bo_,_bn_){return runtime.unix_setitimer(_bo_,_bn_)} - function getitimer(_bm_){return runtime.unix_getitimer(_bm_)} - function utimes(_bl_,_bk_,_bj_) - {return runtime.unix_utimes(_bl_,_bk_,_bj_)} - function times(_bi_){return runtime.unix_times(_bi_)} - function sleepf(_bh_){return runtime.unix_sleep(_bh_)} - function alarm(_bg_){return runtime.unix_alarm(_bg_)} - var - mktime=runtime.unix_mktime, - localtime=runtime.unix_localtime, - gmtime=runtime.unix_gmtime; - function gettimeofday(_bf_){return runtime.unix_gettimeofday(_bf_)} - function time(_be_){return runtime.unix_time(_be_)} - function sigsuspend(_bd_){return runtime.unix_sigsuspend(_bd_)} - function sigpending(_bc_){return runtime.unix_sigpending(_bc_)} - function sigprocmask(_bb_,_ba_) - {return runtime.unix_sigprocmask(_bb_,_ba_)} - function kill(_a$_,_a__){return runtime.unix_kill(_a$_,_a__)} - function lockf(_a9_,_a8_,_a7_){return runtime.unix_lockf(_a9_,_a8_,_a7_)} - function select(_a6_,_a5_,_a4_,_a3_) - {return runtime.unix_select(_a6_,_a5_,_a4_,_a3_)} - var - readlink=runtime.unix_readlink, - has_symlink=runtime.unix_has_symlink, - symlink=runtime.unix_symlink; - function mkfifo(_a2_,_a1_){return runtime.unix_mkfifo(_a2_,_a1_)} - function pipe(_a0_,_aZ_){return runtime.unix_pipe(_a0_,_aZ_)} - function closedir(_aY_){return runtime.unix_closedir(_aY_)} - function rewinddir(_aX_){return runtime.unix_rewinddir(_aX_)} - function readdir(_aW_){return runtime.unix_readdir(_aW_)} - function opendir(_aV_){return runtime.unix_opendir(_aV_)} - function chroot(_aU_){return runtime.unix_chroot(_aU_)} - function getcwd(_aT_){return runtime.unix_getcwd(_aT_)} - function chdir(_aS_){return runtime.unix_chdir(_aS_)} - var rmdir=runtime.unix_rmdir,mkdir=runtime.unix_mkdir; - function clear_close_on_exec(_aR_) - {return runtime.unix_clear_close_on_exec(_aR_)} - function set_close_on_exec(_aQ_) - {return runtime.unix_set_close_on_exec(_aQ_)} - function clear_nonblock(_aP_){return runtime.unix_clear_nonblock(_aP_)} - function set_nonblock(_aO_){return runtime.unix_set_nonblock(_aO_)} - function dup2(_aN_,_aM_,_aL_){return runtime.unix_dup2(_aN_,_aM_,_aL_)} - function dup(_aK_,_aJ_){return runtime.unix_dup(_aK_,_aJ_)} - function access(_aI_,_aH_){return runtime.unix_access(_aI_,_aH_)} - function umask(_aG_){return runtime.unix_umask(_aG_)} - function fchown(_aF_,_aE_,_aD_) - {return runtime.unix_fchown(_aF_,_aE_,_aD_)} - function chown(_aC_,_aB_,_aA_){return runtime.unix_chown(_aC_,_aB_,_aA_)} - function fchmod(_az_,_ay_){return runtime.unix_fchmod(_az_,_ay_)} - function chmod(_ax_,_aw_){return runtime.unix_chmod(_ax_,_aw_)} - function realpath(_av_){return runtime.unix_realpath(_av_)} - function link(_au_,_at_,_as_){return runtime.unix_link(_au_,_at_,_as_)} - function rename(_ar_,_aq_){return runtime.unix_rename(_ar_,_aq_)} - var unlink=runtime.unix_unlink; - function _p_(_ap_){return runtime.unix_fstat_64(_ap_)} - function _q_(_ao_){return runtime.unix_lstat_64(_ao_)} - function _r_(_an_){return runtime.unix_stat_64(_an_)} - function _s_(_am_,_al_){return runtime.unix_ftruncate_64(_am_,_al_)} - function _t_(_ak_,_aj_){return runtime.unix_truncate_64(_ak_,_aj_)} - var - LargeFile= - [0, - function(_ai_,_ah_,_ag_){return runtime.unix_lseek_64(_ai_,_ah_,_ag_)}, - _t_, - _s_, - _r_, - _q_, - _p_], - isatty=runtime.unix_isatty; - function fstat(_af_){return runtime.unix_fstat(_af_)} - var lstat=runtime.unix_lstat,stat=runtime.unix_stat; - function ftruncate(_ae_,_ad_){return runtime.unix_ftruncate(_ae_,_ad_)} - function truncate(_ac_,_ab_){return runtime.unix_truncate(_ac_,_ab_)} - function lseek(_aa_,_$_,___){return runtime.unix_lseek(_aa_,_$_,___)} - var - descr_of_out_channel=caml_channel_descriptor, - descr_of_in_channel=caml_channel_descriptor; - function out_channel_of_descr(_Z_) - {return runtime.unix_outchannel_of_filedescr(_Z_)} - function in_channel_of_descr(_Y_) - {return runtime.unix_inchannel_of_filedescr(_Y_)} - function fsync(_X_){return runtime.unix_fsync(_X_)} - function close(_W_){return runtime.unix_close(_W_)} - function openfile(_V_,_U_,_T_){return runtime.unix_open(_V_,_U_,_T_)} - function nice(_S_){return runtime.unix_nice(_S_)} - function getppid(_R_){return runtime.unix_getppid(_R_)} - function getpid(_Q_){return runtime.unix_getpid(_Q_)} - function exit(_P_){return runtime.unix_exit(_P_)} - function waitpid(_O_,_N_){return runtime.unix_waitpid(_O_,_N_)} - function wait(_M_){return runtime.unix_wait(_M_)} - function fork(_L_){return runtime.unix_fork(_L_)} - function execvpe(_K_,_J_,_I_){return runtime.unix_execvpe(_K_,_J_,_I_)} - function execvp(_H_,_G_){return runtime.unix_execvp(_H_,_G_)} - function execve(_F_,_E_,_D_){return runtime.unix_execve(_F_,_E_,_D_)} - function execv(_C_,_B_){return runtime.unix_execv(_C_,_B_)} - function putenv(_A_,_z_){return runtime.unix_putenv(_A_,_z_)} - var - unsafe_getenv=runtime.caml_sys_unsafe_getenv, - getenv=runtime.caml_sys_getenv; - function unsafe_environment(_y_) - {return runtime.unix_environment_unsafe(_y_)} - function environment(_x_){return runtime.unix_environment(_x_)} - function error_message(_w_){return runtime.unix_error_message(_w_)} - var - include= - [0, - Unix_error, - error_message, - handle_unix_error, - environment, - unsafe_environment, - getenv, - unsafe_getenv, - putenv, - execv, - execve, - execvp, - execvpe, - fork, - wait, - waitpid, - system, - exit, - getpid, - getppid, - nice, - stdin, - stdout, - stderr, - openfile, - close, - fsync, - read, - write, - single_write, - write_substring, - single_write_substring, - in_channel_of_descr, - out_channel_of_descr, - descr_of_in_channel, - descr_of_out_channel, - lseek, - truncate, - ftruncate, - stat, - lstat, - fstat, - isatty, - LargeFile, - map_file, - unlink, - rename, - link, - realpath, - chmod, - fchmod, - chown, - fchown, - umask, - access, - dup, - dup2, - set_nonblock, - clear_nonblock, - set_close_on_exec, - clear_close_on_exec, - mkdir, - rmdir, - chdir, - getcwd, - chroot, - opendir, - readdir, - rewinddir, - closedir, - pipe, - mkfifo, - create_process, - create_process_env, - open_process_in, - open_process_out, - open_process, - open_process_full, - open_process_args_in, - open_process_args_out, - open_process_args, - open_process_args_full, - process_in_pid, - process_out_pid, - process_pid, - process_full_pid, - close_process_in, - close_process_out, - close_process, - close_process_full, - symlink, - has_symlink, - readlink, - select, - lockf, - kill, - sigprocmask, - sigpending, - sigsuspend, - pause, - time, - gettimeofday, - gmtime, - localtime, - mktime, - alarm, - sleep, - sleepf, - times, - utimes, - getitimer, - setitimer, - getuid, - geteuid, - setuid, - getgid, - getegid, - setgid, - getgroups, - setgroups, - initgroups, - getlogin, - getpwnam, - getgrnam, - getpwuid, - getgrgid, - inet_addr_of_string, - string_of_inet_addr, - inet_addr_any, - inet_addr_loopback, - inet_addr_any$0, - inet6_addr_loopback, - is_inet6_addr, - socket, - domain_of_sockaddr, - socketpair, - accept, - bind, - connect, - listen, - shutdown, - getsockname, - getpeername, - recv, - recvfrom, - send, - send_substring, - sendto, - sendto_substring, - getsockopt, - setsockopt, - getsockopt_int, - setsockopt_int, - getsockopt_optint, - setsockopt_optint, - getsockopt_float, - setsockopt_float, - getsockopt_error, - open_connection, - shutdown_connection, - establish_server, - gethostname, - gethostbyname, - gethostbyaddr, - getprotobyname, - getprotobynumber, - getservbyname, - getservbyport, - getaddrinfo, - getnameinfo, - tcgetattr, - tcsetattr, - tcsendbreak, - tcdrain, - tcflush, - tcflow, - setsid]; - caml_register_global(136,include,"Unix"); - var - UnixLabels= - [0, - Unix_error, - error_message, - handle_unix_error, - environment, - unsafe_environment, - getenv, - unsafe_getenv, - putenv, - execv, - execve, - execvp, - execvpe, - fork, - wait, - waitpid, - system, - exit, - getpid, - getppid, - nice, - stdin, - stdout, - stderr, - openfile, - close, - fsync, - read, - write, - single_write, - write_substring, - single_write_substring, - in_channel_of_descr, - out_channel_of_descr, - descr_of_in_channel, - descr_of_out_channel, - lseek, - truncate, - ftruncate, - stat, - lstat, - fstat, - isatty, - LargeFile, - map_file, - unlink, - rename, - link, - realpath, - chmod, - fchmod, - chown, - fchown, - umask, - access, - dup, - dup2, - set_nonblock, - clear_nonblock, - set_close_on_exec, - clear_close_on_exec, - mkdir, - rmdir, - chdir, - getcwd, - chroot, - opendir, - readdir, - rewinddir, - closedir, - pipe, - mkfifo, - create_process, - create_process_env, - open_process_in, - open_process_out, - open_process, - open_process_full, - open_process_args_in, - open_process_args_out, - open_process_args, - open_process_args_full, - process_in_pid, - process_out_pid, - process_pid, - process_full_pid, - close_process_in, - close_process_out, - close_process, - close_process_full, - symlink, - has_symlink, - readlink, - select, - lockf, - kill, - sigprocmask, - sigpending, - sigsuspend, - pause, - time, - gettimeofday, - gmtime, - localtime, - mktime, - alarm, - sleep, - sleepf, - times, - utimes, - getitimer, - setitimer, - getuid, - geteuid, - setuid, - getgid, - getegid, - setgid, - getgroups, - setgroups, - initgroups, - getlogin, - getpwnam, - getgrnam, - getpwuid, - getgrgid, - inet_addr_of_string, - string_of_inet_addr, - inet_addr_any, - inet_addr_loopback, - inet_addr_any$0, - inet6_addr_loopback, - is_inet6_addr, - socket, - domain_of_sockaddr, - socketpair, - accept, - bind, - connect, - listen, - shutdown, - getsockname, - getpeername, - recv, - recvfrom, - send, - send_substring, - sendto, - sendto_substring, - getsockopt, - setsockopt, - getsockopt_int, - setsockopt_int, - getsockopt_optint, - setsockopt_optint, - getsockopt_float, - setsockopt_float, - getsockopt_error, - open_connection, - shutdown_connection, - establish_server, - gethostname, - gethostbyname, - gethostbyaddr, - getprotobyname, - getprotobynumber, - getservbyname, - getservbyport, - getaddrinfo, - getnameinfo, - tcgetattr, - tcsetattr, - tcsendbreak, - tcdrain, - tcflush, - tcflow, - setsid]; - caml_register_global(137,UnixLabels,"UnixLabels"); - return} - (globalThis)); - - -//# 1 "../../.js/str/str.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_set=runtime.caml_bytes_set, - caml_check_bound=runtime.caml_check_bound, - caml_create_bytes=runtime.caml_create_bytes, - caml_make_vect=runtime.caml_make_vect, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_string_equal=runtime.caml_string_equal, - caml_string_get=runtime.caml_string_get, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - var - global_data=runtime.caml_get_global_data(), - cst=caml_string_of_jsbytes(""), - cst$0=caml_string_of_jsbytes(""), - cst$5=caml_string_of_jsbytes(""), - cst$4=caml_string_of_jsbytes(""), - cst$3=caml_string_of_jsbytes(""), - cst_Str_matched_group=caml_string_of_jsbytes("Str.matched_group"), - cst_Str_group_end=caml_string_of_jsbytes("Str.group_end"), - cst_Str_group_beginning=caml_string_of_jsbytes("Str.group_beginning"), - cst_group_not_closed_by= - caml_string_of_jsbytes("\\( group not closed by \\)"), - cst_class_not_closed_by=caml_string_of_jsbytes("[ class not closed by ]"), - cst_spurious_in_regular_expres= - caml_string_of_jsbytes("spurious \\) in regular expression"), - cst_too_many_r_or_r_where_r_is= - caml_string_of_jsbytes("too many r* or r+ where r is nullable"), - cst$1=caml_string_of_jsbytes(""), - cst$2=caml_string_of_jsbytes(""), - Stdlib_List=global_data.Stdlib__List, - Stdlib_String=global_data.Stdlib__String, - Stdlib=global_data.Stdlib, - Stdlib_Bytes=global_data.Stdlib__Bytes, - Assert_failure=global_data.Assert_failure, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib_Int=global_data.Stdlib__Int, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_Map=global_data.Stdlib__Map, - _b_=[0,92], - _c_=[0,caml_string_of_jsbytes("str.ml"),521,10], - _a_=[0,caml_string_of_jsbytes("str.ml"),214,11]; - function string_before(s,n){return caml_call3(Stdlib_String[15],s,0,n)} - function string_after(s,n) - {return caml_call3 - (Stdlib_String[15],s,n,caml_ml_string_length(s) - n | 0)} - function first_chars(s,n){return caml_call3(Stdlib_String[15],s,0,n)} - function last_chars(s,n) - {return caml_call3 - (Stdlib_String[15],s,caml_ml_string_length(s) - n | 0,n)} - var full=caml_call2(Stdlib_Bytes[1],32,255); - function make_empty(param){return caml_call2(Stdlib_Bytes[1],32,0)} - function add(s,i) - {var _ao_=caml_bytes_get(s,i >>> 3 | 0) | 1 << (i & 7); - return caml_bytes_set(s,i >>> 3 | 0,caml_call1(Stdlib_Char[1],_ao_))} - function singleton(c){var s=make_empty(0);add(s,c);return s} - function complement(s) - {var r=caml_create_bytes(32),i=0; - for(;;) - {var _am_=caml_bytes_get(s,i) ^ 255; - caml_bytes_set(r,i,caml_call1(Stdlib_Char[1],_am_)); - var _an_=i + 1 | 0; - if(31 !== i){var i=_an_;continue} - return r}} - function union(s1,s2) - {var r=caml_create_bytes(32),i=0; - for(;;) - {var _aj_=caml_bytes_get(s2,i),_ak_=caml_bytes_get(s1,i) | _aj_; - caml_bytes_set(r,i,caml_call1(Stdlib_Char[1],_ak_)); - var _al_=i + 1 | 0; - if(31 !== i){var i=_al_;continue} - return r}} - function disjoint(s1,s2) - {try - {var i=0; - for(;;) - {var _ag_=caml_bytes_get(s2,i); - if(0 !== (caml_bytes_get(s1,i) & _ag_))throw Stdlib[3]; - var _ah_=i + 1 | 0; - if(31 !== i){var i=_ah_;continue} - var _af_=1; - return _af_}} - catch(_ai_) - {_ai_ = caml_wrap_exception(_ai_); - if(_ai_ === Stdlib[3])return 0; - throw _ai_}} - function iter(fn,s) - {var i=0; - for(;;) - {var c=caml_bytes_get(s,i); - if(0 !== c) - {var j=0; - for(;;) - {if(0 !== (c & 1 << j)) - caml_call1(fn,caml_call1(Stdlib_Char[1],(i << 3) + j | 0)); - var _ae_=j + 1 | 0; - if(7 !== j){var j=_ae_;continue} - break}} - var _ad_=i + 1 | 0; - if(31 !== i){var i=_ad_;continue} - return 0}} - function fold_case(s) - {var r=make_empty(0); - iter - (function(c) - {add(r,caml_call1(Stdlib_Char[3],c)); - return add(r,caml_call1(Stdlib_Char[4],c))}, - s); - return r} - var - op_CHAR=0, - op_CHARNORM=1, - op_STRING=2, - op_STRINGNORM=3, - op_CHARCLASS=4, - op_BOL=5, - op_EOL=6, - op_WORDBOUNDARY=7, - op_BEGGROUP=8, - op_ENDGROUP=9, - op_REFGROUP=10, - op_ACCEPT=11, - op_SIMPLEOPT=12, - op_SIMPLESTAR=13, - op_SIMPLEPLUS=14, - op_GOTO=15, - op_PUSHBACK=16, - op_SETMARK=17, - op_CHECKPROGRESS=18; - function instr(opc,arg){return opc | arg << 8} - function displ(dest,from){return (dest - from | 0) - 1 | 0} - function is_nullable(param) - {var param$0=param; - for(;;) - if(typeof param$0 === "number") - switch(param$0){case 0:return 1;case 1:return 1;default:return 1} - else - switch(param$0[0]) - {case 0:return 0; - case 1:var s=param$0[1];return caml_string_equal(s,cst); - case 2:return 0; - case 3: - var rl=param$0[1]; - return caml_call2(Stdlib_List[32],is_nullable,rl); - case 4: - var r2=param$0[2],r1=param$0[1],_ac_=is_nullable(r1); - if(_ac_)return _ac_; - var param$0=r2; - continue; - case 5:return 1; - case 6:var param$1=param$0[1],param$0=param$1;continue; - case 7:return 1; - case 8:var param$2=param$0[2],param$0=param$2;continue; - default:return 1}} - function first$0(counter,param) - {var param$0=param; - for(;;) - if(typeof param$0 === "number") - switch(param$0) - {case 0:return full;case 1:return full;default:return full} - else - switch(param$0[0]) - {case 0:var c=param$0[1];return singleton(c); - case 1: - var s=param$0[1]; - return caml_string_equal(s,cst$0) - ?full - :singleton(caml_string_get(s,0)); - case 2: - var cmpl=param$0[2],cl=param$0[1];return cmpl?complement(cl):cl; - case 3: - var rl=param$0[1]; - if(counter < 50) - {var counter$0=counter + 1 | 0;return first_seq$0(counter$0,rl)} - return caml_trampoline_return(first_seq$0,[0,rl]); - case 4: - var r2=param$0[2],r1=param$0[1],_ab_=first(r2); - return union(first(r1),_ab_); - case 5:return full; - case 6:var param$1=param$0[1],param$0=param$1;continue; - case 7:return full; - case 8:var param$2=param$0[2],param$0=param$2;continue; - default:return full}} - function first_seq$0(counter,param) - {var param$0=param; - for(;;) - {if(param$0) - {var ___=param$0[1]; - if(typeof ___ === "number") - {var param$1=param$0[2],param$0=param$1;continue} - else - switch(___[0]) - {case 5: - var rl=param$0[2],r=___[1],_$_=first_seq(rl); - return union(first(r),_$_); - case 7: - var rl$0=param$0[2],r$0=___[1],_aa_=first_seq(rl$0); - return union(first(r$0),_aa_); - default: - if(counter < 50) - {var counter$0=counter + 1 | 0;return first$0(counter$0,___)} - return caml_trampoline_return(first$0,[0,___])}} - return full}} - function first(param){return caml_trampoline(first$0(0,param))} - function first_seq(param){return caml_trampoline(first_seq$0(0,param))} - function charclass_of_regexp(fold_case$0,re) - {var switch$0=0; - if(typeof re !== "number") - switch(re[0]) - {case 0:var c=re[1],compl=0,cl1=singleton(c);switch$0 = 1;break; - case 2: - var compl$0=re[2],cl=re[1],compl=compl$0,cl1=cl;switch$0 = 1;break - } - if(switch$0) - {var cl2=fold_case$0?fold_case(cl1):cl1,_Z_=compl?complement(cl2):cl2; - return caml_call1(Stdlib_Bytes[6],_Z_)} - throw [0,Assert_failure,_a_]} - var t=caml_create_bytes(256),i=0; - for(;;) - {var _d_=caml_call1(Stdlib_Char[1],i); - caml_bytes_set(t,i,caml_call1(Stdlib_Char[3],_d_)); - var _e_=i + 1 | 0; - if(255 !== i){var i=_e_;continue} - var - fold_case_table=caml_call1(Stdlib_Bytes[6],t), - compare=function(x,y){return runtime.caml_string_compare(x,y)}, - StringMap=caml_call1(Stdlib_Map[1],[0,compare]), - compile= - function(fold_case$0,re) - {var - prog=[0,caml_make_vect(32,0)], - progpos=[0,0], - cpool=[0,StringMap[1]], - cpoolpos=[0,0], - numgroups=[0,1], - numregs=[0,0]; - function emit_instr(opc,arg) - {if(prog[1].length - 1 <= progpos[1]) - {var newlen=[0,prog[1].length - 1]; - for(;;) - {if(newlen[1] <= progpos[1]) - {newlen[1] = newlen[1] * 2 | 0;continue} - var nprog=caml_make_vect(newlen[1],0); - caml_call5 - (Stdlib_Array[10],prog[1],0,nprog,0,prog[1].length - 1); - prog[1] = nprog; - break}} - var _X_=instr(opc,arg),_Y_=progpos[1]; - caml_check_bound(prog[1],_Y_)[1 + _Y_] = _X_; - progpos[1]++; - return 0} - function emit_hole(param) - {var p=progpos[1];emit_instr(op_CHAR,0);return p} - function patch_instr(pos,opc,dest) - {var _W_=instr(opc,displ(dest,pos)); - caml_check_bound(prog[1],pos)[1 + pos] = _W_; - return 0} - function cpool_index(s) - {try - {var _U_=caml_call2(StringMap[28],s,cpool[1]);return _U_} - catch(_V_) - {_V_ = caml_wrap_exception(_V_); - if(_V_ === Stdlib[8]) - {var p=cpoolpos[1]; - cpool[1] = caml_call3(StringMap[4],s,p,cpool[1]); - cpoolpos[1]++; - return p} - throw _V_}} - function allocate_register_if_nullable(r) - {if(is_nullable(r)) - {var n=numregs[1]; - if(64 <= n)caml_call1(Stdlib[2],cst_too_many_r_or_r_where_r_is); - numregs[1]++; - return n} - return -1} - function disjoint_modulo_case(c1,c2) - {if(fold_case$0) - {var _T_=fold_case(c2);return disjoint(fold_case(c1),_T_)} - return disjoint(c1,c2)} - function emit_code(param) - {if(typeof param === "number") - switch(param) - {case 0:return emit_instr(op_BOL,0); - case 1:return emit_instr(op_EOL,0); - default:return emit_instr(op_WORDBOUNDARY,0)} - else - switch(param[0]) - {case 0: - var c=param[1]; - return fold_case$0 - ?emit_instr(op_CHARNORM,caml_call1(Stdlib_Char[3],c)) - :emit_instr(op_CHAR,c); - case 1: - var s=param[1],match=caml_ml_string_length(s); - if(0 === match)return 0; - if(1 === match) - {if(fold_case$0) - {var _Q_=caml_string_get(s,0); - return emit_instr - (op_CHARNORM,caml_call1(Stdlib_Char[3],_Q_))} - return emit_instr(op_CHAR,caml_string_get(s,0))} - try - {var i=caml_call2(Stdlib_String[35],s,0); - emit_code([1,string_before(s,i)]); - emit_instr(op_CHAR,0); - var _R_=emit_code([1,string_after(s,i + 1 | 0)]); - return _R_} - catch(_S_) - {_S_ = caml_wrap_exception(_S_); - if(_S_ === Stdlib[8]) - return fold_case$0 - ?emit_instr - (op_STRINGNORM,cpool_index(caml_call1(Stdlib_String[46],s))) - :emit_instr(op_STRING,cpool_index(s)); - throw _S_} - case 2: - var - compl=param[2], - cl=param[1], - cl1=fold_case$0?fold_case(cl):cl, - cl2=compl?complement(cl1):cl1; - return emit_instr - (op_CHARCLASS,cpool_index(caml_call1(Stdlib_Bytes[6],cl2))); - case 3:var rl=param[1];return emit_seq_code(rl); - case 4: - var r2=param[2],r1=param[1],pos_pushback=emit_hole(0); - emit_code(r1); - var pos_goto_end=emit_hole(0),lbl1=progpos[1]; - emit_code(r2); - var lbl2=progpos[1]; - patch_instr(pos_pushback,op_PUSHBACK,lbl1); - return patch_instr(pos_goto_end,op_GOTO,lbl2); - case 5: - var - r=param[1], - regno=allocate_register_if_nullable(r), - lbl1$0=emit_hole(0); - if(0 <= regno)emit_instr(op_SETMARK,regno); - emit_code(r); - if(0 <= regno)emit_instr(op_CHECKPROGRESS,regno); - emit_instr(op_GOTO,displ(lbl1$0,progpos[1])); - var lbl2$0=progpos[1]; - return patch_instr(lbl1$0,op_PUSHBACK,lbl2$0); - case 6: - var - r$0=param[1], - regno$0=allocate_register_if_nullable(r$0), - lbl1$1=progpos[1]; - emit_code(r$0); - if(0 <= regno$0)emit_instr(op_CHECKPROGRESS,regno$0); - var pos_pushback$0=emit_hole(0); - if(0 <= regno$0)emit_instr(op_SETMARK,regno$0); - emit_instr(op_GOTO,displ(lbl1$1,progpos[1])); - var lbl2$1=progpos[1]; - return patch_instr(pos_pushback$0,op_PUSHBACK,lbl2$1); - case 7: - var r$1=param[1],pos_pushback$1=emit_hole(0); - emit_code(r$1); - var lbl=progpos[1]; - return patch_instr(pos_pushback$1,op_PUSHBACK,lbl); - case 8: - var r$2=param[2],n=param[1]; - emit_instr(op_BEGGROUP,n); - emit_code(r$2); - emit_instr(op_ENDGROUP,n); - numgroups[1] - = - caml_call2(Stdlib_Int[11],numgroups[1],n + 1 | 0); - return 0; - default: - var n$0=param[1]; - emit_instr(op_REFGROUP,n$0); - numgroups[1] - = - caml_call2(Stdlib_Int[11],numgroups[1],n$0 + 1 | 0); - return 0}} - function emit_seq_code(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _J_=param$0[1]; - if(typeof _J_ !== "number") - switch(_J_[0]) - {case 5: - var _K_=_J_[1],switch$0=0; - if(typeof _K_ === "number") - switch$0 = 1; - else - switch(_K_[0]) - {case 0: - case 2: - var rl$0=param$0[2],_L_=first_seq(rl$0); - if(disjoint_modulo_case(first(_K_),_L_)) - {emit_instr - (op_SIMPLESTAR, - cpool_index(charclass_of_regexp(fold_case$0,_K_))); - var param$0=rl$0; - continue} - break; - default:switch$0 = 1} - break; - case 6: - var _M_=_J_[1],switch$1=0; - if(typeof _M_ === "number") - switch$1 = 1; - else - switch(_M_[0]) - {case 0: - case 2: - var rl$1=param$0[2],_N_=first_seq(rl$1); - if(disjoint_modulo_case(first(_M_),_N_)) - {emit_instr - (op_SIMPLEPLUS, - cpool_index(charclass_of_regexp(fold_case$0,_M_))); - var param$0=rl$1; - continue} - break; - default:switch$1 = 1} - break; - case 7: - var _O_=_J_[1],switch$2=0; - if(typeof _O_ === "number") - switch$2 = 1; - else - switch(_O_[0]) - {case 0: - case 2: - var rl$2=param$0[2],_P_=first_seq(rl$2); - if(disjoint_modulo_case(first(_O_),_P_)) - {emit_instr - (op_SIMPLEOPT, - cpool_index(charclass_of_regexp(fold_case$0,_O_))); - var param$0=rl$2; - continue} - break; - default:switch$2 = 1} - break - } - var rl=param$0[2]; - emit_code(_J_); - var param$0=rl; - continue} - return 0}} - emit_code(re); - emit_instr(op_ACCEPT,0); - var start=first(re),start$0=fold_case$0?fold_case(start):start; - if(runtime.caml_bytes_equal(start,full)) - var start_pos=-1; - else - {var r=caml_call2(Stdlib_Bytes[1],256,0); - iter(function(c){return caml_bytes_set(r,c,1)},start$0); - var start_pos=cpool_index(caml_call1(Stdlib_Bytes[6],r))} - var constantpool=caml_make_vect(cpoolpos[1],cst$1),_F_=cpool[1]; - function _G_(str,idx) - {caml_check_bound(constantpool,idx)[1 + idx] = str;return 0} - caml_call2(StringMap[12],_G_,_F_); - var - _H_=numregs[1], - _I_=numgroups[1], - fold_case_table$0=fold_case$0?fold_case_table:cst$2; - return [0, - caml_call3(Stdlib_Array[7],prog[1],0,progpos[1]), - constantpool, - fold_case_table$0, - _I_, - _H_, - start_pos]}, - flush= - function(buf) - {var s=caml_call1(Stdlib_Buffer[2],buf[1]); - caml_call1(Stdlib_Buffer[8],buf[1]); - var match=caml_ml_string_length(s); - if(0 === match)return 0; - if(1 === match) - {var _E_=buf[2];buf[2] = [0,[0,caml_string_get(s,0)],_E_];return 0} - buf[2] = [0,[1,s],buf[2]]; - return 0}, - dotclass=complement(singleton(10)), - parse= - function(s) - {var len=caml_ml_string_length(s),group_counter=[0,1]; - function regexpclass1(start) - {var c=make_empty(0),i$0=start; - for(;;) - {if(len <= i$0)caml_call1(Stdlib[2],cst_class_not_closed_by); - if(93 === caml_string_get(s,i$0) && start < i$0) - {var j=i$0 + 1 | 0;return [0,c,j]} - var c1=caml_string_get(s,i$0); - if - ((i$0 + 2 | 0) - < - len - && - 45 - === - caml_string_get(s,i$0 + 1 | 0) - && - 93 - !== - caml_string_get(s,i$0 + 2 | 0)) - {var c2=caml_string_get(s,i$0 + 2 | 0); - if(! (c2 < c1)) - {var i=c1; - for(;;) - {add(c,caml_call1(Stdlib_Char[1],i)); - var _D_=i + 1 | 0; - if(c2 !== i){var i=_D_;continue} - break}} - var i$2=i$0 + 3 | 0,i$0=i$2; - continue} - add(c,c1); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function regexp1(i) - {var sb=[0,caml_call1(Stdlib_Buffer[1],16),0],i$0=i; - a: - for(;;) - {if(! (len <= i$0)) - {var switch$0=0; - if((i$0 + 2 | 0) <= len && 92 === caml_string_get(s,i$0)) - {var - c$0=caml_string_get(s,i$0 + 1 | 0), - _A_=124 === c$0?1:0, - _B_=_A_ || (41 === c$0?1:0); - if(_B_)switch$0 = 1} - if(! switch$0) - {var c$1=caml_string_get(s,i$0); - if(36 === c$1) - var match=[0,1,i$0 + 1 | 0]; - else - {var switch$1=0; - if(91 <= c$1) - if(95 <= c$1) - switch$1 = 1; - else - switch(c$1 - 91 | 0) - {case 0: - var i$4=i$0 + 1 | 0,switch$2=0; - if(i$4 < len && 94 === caml_string_get(s,i$4)) - {var - match$3=regexpclass1(i$4 + 1 | 0), - j$3=match$3[2], - c$4=match$3[1], - match$1=[0,c$4,1,j$3]; - switch$2 = 1} - if(! switch$2) - var - match$4=regexpclass1(i$4), - j$4=match$4[2], - c$5=match$4[1], - match$1=[0,c$5,0,j$4]; - var - j$1=match$1[3], - compl=match$1[2], - c$2=match$1[1], - match=[0,[2,c$2,compl],j$1]; - break; - case 1: - var i$5=i$0 + 1 | 0; - if(len <= i$5) - var _C_=[0,_b_,i$5]; - else - {var c$3=caml_string_get(s,i$5),switch$3=0; - if(58 <= c$3) - if(98 === c$3) - var _C_=[0,2,i$5 + 1 | 0]; - else - if(124 === c$3)switch$3 = 2;else switch$3 = 1; - else - {var switcher$0=c$3 - 40 | 0; - if(1 < switcher$0 >>> 0) - if(9 <= switcher$0) - var _C_=[0,[9,c$3 - 48 | 0],i$5 + 1 | 0]; - else - switch$3 = 1; - else - if(switcher$0) - switch$3 = 2; - else - {var group_no=group_counter[1]; - group_counter[1]++; - var - match$2=regexp0(i$5 + 1 | 0), - j$2=match$2[2], - r$4=match$2[1], - switch$4=0; - if - ((j$2 + 1 | 0) - < - len - && - 92 - === - caml_string_get(s,j$2) - && - 41 - === - caml_string_get(s,j$2 + 1 | 0)) - {var _C_=[0,[8,group_no,r$4],j$2 + 2 | 0];switch$4 = 1} - if(! switch$4) - var _C_=caml_call1(Stdlib[2],cst_group_not_closed_by)}} - switch(switch$3) - {case 1:var _C_=[0,[0,c$3],i$5 + 1 | 0];break; - case 2:throw [0,Assert_failure,_c_] - }} - var match=_C_; - break; - case 2:switch$1 = 1;break; - default:var match=[0,0,i$0 + 1 | 0]} - else - if(46 === c$1) - var match=[0,[2,dotclass,0],i$0 + 1 | 0]; - else - switch$1 = 1; - if(switch$1)var match=[0,[0,c$1],i$0 + 1 | 0]} - var j=match[2],r=match[1],r$0=r,j$0=j; - for(;;) - {if(! (len <= j$0)) - {var - match$0=caml_string_get(s,j$0), - switcher=match$0 - 42 | 0; - if(! (1 < switcher >>> 0)) - {if(switcher) - {var i$2=j$0 + 1 | 0,r$2=[6,r$0],r$0=r$2,j$0=i$2;continue} - var i$3=j$0 + 1 | 0,r$3=[5,r$0],r$0=r$3,j$0=i$3; - continue} - if(21 === switcher) - {var i$1=j$0 + 1 | 0,r$1=[7,r$0],r$0=r$1,j$0=i$1;continue}} - var switch$5=0; - if(typeof r$0 !== "number" && 0 === r$0[0]) - {var c=r$0[1]; - caml_call2(Stdlib_Buffer[12],sb[1],c); - switch$5 = 1} - if(! switch$5){flush(sb);sb[2] = [0,r$0,sb[2]]} - var i$0=j$0; - continue a}}} - flush(sb); - return [0,[3,caml_call1(Stdlib_List[9],sb[2])],i$0]}} - function regexp0(i) - {var match=regexp1(i),j=match[2],r=match[1],r1=r,i$0=j; - for(;;) - {if - ((i$0 + 2 | 0) - <= - len - && - 92 - === - caml_string_get(s,i$0) - && - 124 - === - caml_string_get(s,i$0 + 1 | 0)) - {var - match$0=regexp1(i$0 + 2 | 0), - i$1=match$0[2], - r2=match$0[1], - r1$0=[4,r1,r2], - r1=r1$0, - i$0=i$1; - continue} - return [0,r1,i$0]}} - var match=regexp0(0),j=match[2],r=match[1]; - return j === len - ?r - :caml_call1(Stdlib[2],cst_spurious_in_regular_expres)}, - regexp=function(e){return compile(0,parse(e))}, - regexp_case_fold=function(e){return compile(1,parse(e))}, - quote= - function(s) - {var - len=caml_ml_string_length(s), - buf=caml_create_bytes(2 * len | 0), - pos=[0,0], - _w_=len - 1 | 0, - _v_=0; - if(! (_w_ < 0)) - {var i=_v_; - for(;;) - {var c=caml_string_get(s,i),_x_=c - 63 | 0,switch$0=0; - if(31 < _x_ >>> 0) - {var _y_=_x_ + 27 | 0; - if(! (10 < _y_ >>> 0)) - switch(_y_){case 0:case 6:case 7:case 10:switch$0 = 1;break}} - else - if(26 < _x_ - 1 >>> 0)switch$0 = 1; - if(switch$0) - {caml_bytes_set(buf,pos[1],92); - caml_bytes_set(buf,pos[1] + 1 | 0,c); - pos[1] = pos[1] + 2 | 0} - else - {caml_bytes_set(buf,pos[1],c);pos[1] = pos[1] + 1 | 0} - var _z_=i + 1 | 0; - if(_w_ !== i){var i=_z_;continue} - break}} - return caml_call3(Stdlib_Bytes[8],buf,0,pos[1])}, - regexp_string=function(s){return compile(0,[1,s])}, - regexp_string_case_fold=function(s){return compile(1,[1,s])}, - last_search_result=[0,[0]], - string_match= - function(re,s,pos) - {var res=runtime.re_string_match(re,s,pos); - last_search_result[1] = res; - return 0 < res.length - 1?1:0}, - string_partial_match= - function(re,s,pos) - {var res=runtime.re_partial_match(re,s,pos); - last_search_result[1] = res; - return 0 < res.length - 1?1:0}, - search_forward= - function(re,s,pos) - {var res=runtime.re_search_forward(re,s,pos); - last_search_result[1] = res; - if(0 === res.length - 1)throw Stdlib[8]; - return caml_check_bound(res,0)[1]}, - search_backward= - function(re,s,pos) - {var res=runtime.re_search_backward(re,s,pos); - last_search_result[1] = res; - if(0 === res.length - 1)throw Stdlib[8]; - return caml_check_bound(res,0)[1]}, - group_beginning= - function(n) - {var n2=n + n | 0; - if(0 <= n && ! (last_search_result[1].length - 1 <= n2)) - {var pos=caml_check_bound(last_search_result[1],n2)[1 + n2]; - if(-1 === pos)throw Stdlib[8]; - return pos} - return caml_call1(Stdlib[1],cst_Str_group_beginning)}, - group_end= - function(n) - {var n2=n + n | 0; - if(0 <= n && ! (last_search_result[1].length - 1 <= n2)) - {var - _u_=n2 + 1 | 0, - pos=caml_check_bound(last_search_result[1],_u_)[1 + _u_]; - if(-1 === pos)throw Stdlib[8]; - return pos} - return caml_call1(Stdlib[1],cst_Str_group_end)}, - matched_group= - function(n,txt) - {var n2=n + n | 0; - if(0 <= n && ! (last_search_result[1].length - 1 <= n2)) - {var - b=caml_check_bound(last_search_result[1],n2)[1 + n2], - _t_=n2 + 1 | 0, - e=caml_check_bound(last_search_result[1],_t_)[1 + _t_]; - if(-1 === b)throw Stdlib[8]; - return caml_call3(Stdlib_String[15],txt,b,e - b | 0)} - return caml_call1(Stdlib[1],cst_Str_matched_group)}, - match_beginning=function(param){return group_beginning(0)}, - match_end=function(param){return group_end(0)}, - matched_string=function(txt){return matched_group(0,txt)}, - replace_matched= - function(repl,matched) - {return runtime.re_replacement_text - (repl,last_search_result[1],matched)}, - substitute_first= - function(expr,repl_fun,text) - {try - {var - pos=search_forward(expr,text,0), - _o_=[0,string_after(text,match_end(0)),0], - _p_=[0,caml_call1(repl_fun,text),_o_], - _q_=[0,string_before(text,pos),_p_], - _r_=caml_call2(Stdlib_String[6],cst$3,_q_); - return _r_} - catch(_s_) - {_s_ = caml_wrap_exception(_s_); - if(_s_ === Stdlib[8])return text; - throw _s_}}, - opt_search_forward= - function(re,s,pos) - {try - {var _m_=[0,search_forward(re,s,pos)];return _m_} - catch(_n_) - {_n_ = caml_wrap_exception(_n_); - if(_n_ === Stdlib[8])return 0; - throw _n_}}, - global_substitute= - function(expr,repl_fun,text) - {var accu=0,start=0,last_was_empty=0; - for(;;) - {var startpos=last_was_empty?start + 1 | 0:start; - if(caml_ml_string_length(text) < startpos) - var _k_=[0,string_after(text,start),accu]; - else - {var match=opt_search_forward(expr,text,startpos); - if(match) - {var - pos=match[1], - start$0=match_end(0), - repl_text=caml_call1(repl_fun,text), - last_was_empty$0=start$0 === pos?1:0, - accu$0= - [0, - repl_text, - [0, - caml_call3(Stdlib_String[15],text,start,pos - start | 0), - accu]], - accu=accu$0, - start=start$0, - last_was_empty=last_was_empty$0; - continue} - var _k_=[0,string_after(text,start),accu]} - var _l_=caml_call1(Stdlib_List[9],_k_); - return caml_call2(Stdlib_String[6],cst$4,_l_)}}, - global_replace= - function(expr,repl,text) - {return global_substitute - (expr,function(_j_){return replace_matched(repl,_j_)},text)}, - replace_first= - function(expr,repl,text) - {return substitute_first - (expr,function(_i_){return replace_matched(repl,_i_)},text)}, - opt_search_forward_progress= - function(expr,text,start) - {var match=opt_search_forward(expr,text,start); - if(match) - {var pos=match[1]; - return start < match_end(0) - ?[0,pos] - :start < caml_ml_string_length(text) - ?opt_search_forward(expr,text,start + 1 | 0) - :0} - return 0}, - bounded_split= - function(expr,text,num) - {var - start=string_match(expr,text,0)?match_end(0):0, - accu=0, - start$0=start, - n=num; - for(;;) - {if(caml_ml_string_length(text) <= start$0) - var _h_=accu; - else - if(1 === n) - var _h_=[0,string_after(text,start$0),accu]; - else - {var match=opt_search_forward_progress(expr,text,start$0); - if(match) - {var - pos=match[1], - n$0=n - 1 | 0, - start$1=match_end(0), - accu$0= - [0, - caml_call3(Stdlib_String[15],text,start$0,pos - start$0 | 0), - accu], - accu=accu$0, - start$0=start$1, - n=n$0; - continue} - var _h_=[0,string_after(text,start$0),accu]} - return caml_call1(Stdlib_List[9],_h_)}}, - split=function(expr,text){return bounded_split(expr,text,0)}, - bounded_split_delim= - function(expr,text,num) - {if(caml_string_equal(text,cst$5))return 0; - var accu=0,start=0,n=num; - for(;;) - {if(caml_ml_string_length(text) < start) - var _g_=accu; - else - if(1 === n) - var _g_=[0,string_after(text,start),accu]; - else - {var match=opt_search_forward_progress(expr,text,start); - if(match) - {var - pos=match[1], - n$0=n - 1 | 0, - start$0=match_end(0), - accu$0= - [0, - caml_call3(Stdlib_String[15],text,start,pos - start | 0), - accu], - accu=accu$0, - start=start$0, - n=n$0; - continue} - var _g_=[0,string_after(text,start),accu]} - return caml_call1(Stdlib_List[9],_g_)}}, - split_delim= - function(expr,text){return bounded_split_delim(expr,text,0)}, - bounded_full_split= - function(expr,text,num) - {var accu=0,start=0,n=num; - for(;;) - {if(caml_ml_string_length(text) <= start) - var _f_=accu; - else - if(1 === n) - var _f_=[0,[0,string_after(text,start)],accu]; - else - {var match=opt_search_forward_progress(expr,text,start); - if(match) - {var pos=match[1],s=matched_string(text); - if(start < pos) - {var - n$0=n - 1 | 0, - start$0=match_end(0), - accu$0= - [0, - [1,s], - [0, - [0,caml_call3(Stdlib_String[15],text,start,pos - start | 0)], - accu]], - accu=accu$0, - start=start$0, - n=n$0; - continue} - var - n$1=n - 1 | 0, - start$1=match_end(0), - accu$1=[0,[1,s],accu], - accu=accu$1, - start=start$1, - n=n$1; - continue} - var _f_=[0,[0,string_after(text,start)],accu]} - return caml_call1(Stdlib_List[9],_f_)}}, - full_split=function(expr,text){return bounded_full_split(expr,text,0)}, - Str= - [0, - regexp, - regexp_case_fold, - quote, - regexp_string, - regexp_string_case_fold, - string_match, - search_forward, - search_backward, - string_partial_match, - matched_string, - match_beginning, - match_end, - matched_group, - group_beginning, - group_end, - global_replace, - replace_first, - global_substitute, - substitute_first, - replace_matched, - split, - bounded_split, - split_delim, - bounded_split_delim, - full_split, - bounded_full_split, - string_before, - string_after, - first_chars, - last_chars]; - runtime.caml_register_global(27,Str,"Str"); - return}} - (globalThis)); - - -//# 1 "../../.js/calendar/calendarLib.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_compare=runtime.caml_compare, - caml_div=runtime.caml_div, - caml_equal=runtime.caml_equal, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int_compare=runtime.caml_int_compare, - caml_lessthan=runtime.caml_lessthan, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_modf_float=runtime.caml_modf_float, - caml_mul=runtime.caml_mul, - caml_obj_tag=runtime.caml_obj_tag, - caml_register_global=runtime.caml_register_global, - caml_string_equal=runtime.caml_string_equal, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - function caml_call6(f,a0,a1,a2,a3,a4,a5) - {return f.length == 6 - ?f(a0,a1,a2,a3,a4,a5) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])} - var - global_data=runtime.caml_get_global_data(), - cst_Not_a_valid_time_zone=caml_string_of_jsbytes("Not a valid time zone"), - cst_Not_a_month=caml_string_of_jsbytes("Not a month"), - cst_Not_a_day=caml_string_of_jsbytes("Not a day"), - cst_from_business_bad_week= - caml_string_of_jsbytes("from_business: bad week"), - cst_from_business_bad_date= - caml_string_of_jsbytes("from_business: bad date"), - cst_Date_Out_of_bounds=caml_string_of_jsbytes("Date.Out_of_bounds"), - cst_Date_Undefined=caml_string_of_jsbytes("Date.Undefined"), - _bM_=[0,0,0], - cst_Date_Period_Not_computable= - caml_string_of_jsbytes("Date.Period.Not_computable"), - cst_calendar$2=caml_string_of_jsbytes("calendar"), - cst_calendar$1=caml_string_of_jsbytes("calendar"), - cst_calendar$0=caml_string_of_jsbytes("calendar"), - cst_calendar=caml_string_of_jsbytes("calendar"), - cst_seconds_since_1970$1=caml_string_of_jsbytes("seconds_since_1970"), - cst_century$0=caml_string_of_jsbytes("century"), - cst_year$0=caml_string_of_jsbytes("year"), - cst_month$0=caml_string_of_jsbytes("month"), - cst_week$0=caml_string_of_jsbytes("week"), - cst_day_of_year$0=caml_string_of_jsbytes("day_of_year"), - cst_day_of_month$0=caml_string_of_jsbytes("day_of_month"), - cst_day_of_week$0=caml_string_of_jsbytes("day_of_week"), - cst_from_business$0=caml_string_of_jsbytes("from_business"), - cst_time$0=caml_string_of_jsbytes("time"), - cst_seconds_since_1970$0=caml_string_of_jsbytes("seconds_since_1970"), - cst_century=caml_string_of_jsbytes("century"), - cst_year=caml_string_of_jsbytes("year"), - cst_month=caml_string_of_jsbytes("month"), - cst_week=caml_string_of_jsbytes("week"), - cst_day_of_year=caml_string_of_jsbytes("day_of_year"), - cst_day_of_month=caml_string_of_jsbytes("day_of_month"), - cst_day_of_week=caml_string_of_jsbytes("day_of_week"), - cst_from_business=caml_string_of_jsbytes("from_business"), - cst_time=caml_string_of_jsbytes("time"), - cst_seconds_since_1970=caml_string_of_jsbytes("seconds_since_1970"), - cst_second=caml_string_of_jsbytes("second"), - cst_minute=caml_string_of_jsbytes("minute"), - cst_hour=caml_string_of_jsbytes("hour"), - cst_date=caml_string_of_jsbytes("date"), - cst_Cannot_create_the=caml_string_of_jsbytes("Cannot create the "), - cst_j_year_not_provided=caml_string_of_jsbytes("%j (year not provided)"), - cst$5=caml_string_of_jsbytes("%:"), - cst$4=caml_string_of_jsbytes("%::::"), - cst_z$2=caml_string_of_jsbytes("z"), - cst_z$3=caml_string_of_jsbytes(":::z"), - cst_z$4=caml_string_of_jsbytes("::z"), - cst_z$5=caml_string_of_jsbytes(":z"), - cst_am=caml_string_of_jsbytes("am"), - cst_pm=caml_string_of_jsbytes("pm"), - cst$6=caml_string_of_jsbytes('"'), - cst$7=caml_string_of_jsbytes('"'), - cst_P=caml_string_of_jsbytes("%P"), - cst_V=caml_string_of_jsbytes("%V"), - cst_W=caml_string_of_jsbytes("%W"), - cst_j=caml_string_of_jsbytes("%j"), - cst_w=caml_string_of_jsbytes("%w"), - cst$3=caml_string_of_jsbytes("%"), - cst_AM$0=caml_string_of_jsbytes("AM"), - cst_PM$0=caml_string_of_jsbytes("PM"), - cst$8=caml_string_of_jsbytes('"'), - cst$9=caml_string_of_jsbytes('"'), - cst_p=caml_string_of_jsbytes("%p"), - cst$0=caml_string_of_jsbytes("[\\+-]"), - cst$1=caml_string_of_jsbytes("+"), - cst$2=caml_string_of_jsbytes("-"), - cst_either_week_or_year_is_not= - caml_string_of_jsbytes(" (either week or year is not provided)"), - cst_0_9_0_9_0_9=caml_string_of_jsbytes("[0-9][0-9]\\(\\.[0-9]*\\)?"), - cst_z_z_z=caml_string_of_jsbytes("z\\|:z\\|::z"), - cst_z=caml_string_of_jsbytes("::z"), - cst_z$0=caml_string_of_jsbytes(":z"), - cst_z$1=caml_string_of_jsbytes("z"), - cst=caml_string_of_jsbytes("%"), - cst_AM=caml_string_of_jsbytes("AM"), - cst_PM=caml_string_of_jsbytes("PM"), - cst_does_not_match_the_format= - caml_string_of_jsbytes(" does not match the format "), - cst_bad_format=caml_string_of_jsbytes("bad format: "), - cst_January=caml_string_of_jsbytes("January"), - cst_February=caml_string_of_jsbytes("February"), - cst_March=caml_string_of_jsbytes("March"), - cst_April=caml_string_of_jsbytes("April"), - cst_May=caml_string_of_jsbytes("May"), - cst_June=caml_string_of_jsbytes("June"), - cst_July=caml_string_of_jsbytes("July"), - cst_August=caml_string_of_jsbytes("August"), - cst_September=caml_string_of_jsbytes("September"), - cst_October=caml_string_of_jsbytes("October"), - cst_November=caml_string_of_jsbytes("November"), - cst_December=caml_string_of_jsbytes("December"), - cst_Sunday=caml_string_of_jsbytes("Sunday"), - cst_Monday=caml_string_of_jsbytes("Monday"), - cst_Tuesday=caml_string_of_jsbytes("Tuesday"), - cst_Wednesday=caml_string_of_jsbytes("Wednesday"), - cst_Thursday=caml_string_of_jsbytes("Thursday"), - cst_Friday=caml_string_of_jsbytes("Friday"), - cst_Saturday=caml_string_of_jsbytes("Saturday"), - cst_b=caml_string_of_jsbytes("%b"), - cst_B=caml_string_of_jsbytes("%B"), - cst_A=caml_string_of_jsbytes("%A"), - cst_a_zA_Z=caml_string_of_jsbytes("[a-zA-Z]+"), - cst_i=caml_string_of_jsbytes("%i"), - cst_T=caml_string_of_jsbytes("%T"), - cst_T$0=caml_string_of_jsbytes("%T"), - cst_i_T=caml_string_of_jsbytes("%i %T"), - cst_i_T$0=caml_string_of_jsbytes("%i %T"), - cst_i_T$1=caml_string_of_jsbytes("%i %T"), - cst_i_T$2=caml_string_of_jsbytes("%i %T"), - cst_2_04=caml_string_of_jsbytes("2.04"), - cst_dim_15_mai_2022_16_04_18_C= - caml_string_of_jsbytes("dim. 15 mai 2022 16:04:18 CEST"), - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - Unix=global_data.Unix, - Assert_failure=global_data.Assert_failure, - Stdlib=global_data.Stdlib, - Stdlib_List=global_data.Stdlib__List, - Stdlib_String=global_data.Stdlib__String, - Str=global_data.Str, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Format=global_data.Stdlib__Format, - CamlinternalLazy=global_data.CamlinternalLazy, - _b_=[0,0.001], - _o_=[0,caml_string_of_jsbytes("src/time_Zone.ml"),52,4], - _n_=[0,caml_string_of_jsbytes("src/time_Zone.ml"),58,34], - _bp_=[0,caml_string_of_jsbytes("src/date.ml"),119,4], - _bo_=[0,caml_string_of_jsbytes("src/date.ml"),122,4], - _bg_=[0,-4713,12,31], - _bh_=[0,3268,1,23], - _bi_=[0,1582,10,14], - _bj_=[0,1582,10,5], - _b__=[0,31,59,90,120,151,181,212,243,273,304,334,365], - _cH_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),429,6], - _cG_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),230,4], - _cF_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),167,6], - _cE_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),67,4], - _c__=[0,caml_string_of_jsbytes("src/printer.ml"),402,6], - _c9_=[0,caml_string_of_jsbytes("src/printer.ml"),509,12], - _c$_=[0,caml_string_of_jsbytes("src/printer.ml"),513,6], - _c8_=[0,caml_string_of_jsbytes("src/printer.ml"),396,8], - _c6_=[0,caml_string_of_jsbytes("src/printer.ml"),283,6], - _c5_=[0,caml_string_of_jsbytes("src/printer.ml"),278,13], - _c7_=[0,caml_string_of_jsbytes("src/printer.ml"),297,6], - _cX_=[0,caml_string_of_jsbytes("src/printer.ml"),81,2], - _a_=[0,caml_equal,caml_compare,Stdlib_Hashtbl[28]]; - function _c_(_zq_){_b_[1] = _zq_;return 0} - function _d_(_zp_,_zo_){return Math.abs(_zp_ - _zo_) < _b_[1]?1:0} - function _e_(_zn_,_zm_){return _d_(_zn_,_zm_)?0:_zn_ < _zm_?-1:1} - var - _f_=Stdlib_Hashtbl[28], - CalendarLib_Utils= - [0, - _a_, - [0, - _d_, - _e_, - _f_, - _c_, - function(_zj_) - {var _zk_=caml_modf_float(_zj_),_zl_=_zk_[1] < 0.5?0:1; - return (_zk_[2] | 0) + _zl_ | 0}]]; - caml_register_global(208,CalendarLib_Utils,"CalendarLib.Utils"); - var - _g_=[0,0], - _h_=caml_call1(Unix[100],0), - _i_=caml_call1(Unix[102],_h_)[3], - _j_=caml_call1(Unix[103],_h_)[3] - _i_ | 0; - function _k_(_zi_){return _g_[1]} - function _l_(_zg_) - {if(typeof _zg_ !== "number") - {var _zh_=_zg_[1],_ze_=_zh_ < -12?1:0,_zf_=_ze_ || (11 < _zh_?1:0); - if(_zf_)return caml_call1(Stdlib[1],cst_Not_a_valid_time_zone)} - _g_[1] = _zg_; - return 0} - function _m_(_y__,_y9_) - {function _y$_(_zd_,_zc_) - {if(caml_lessthan(_zd_,_zc_)) - {if(typeof _zd_ === "number") - if(_zd_) - {if(typeof _zc_ !== "number")return _zc_[1] - _j_ | 0} - else - {if(typeof _zc_ !== "number")return _zc_[1];if(_zc_)return _j_} - else - if(typeof _zc_ !== "number")return _zc_[1] - _zd_[1] | 0; - throw [0,Assert_failure,_n_]} - throw [0,Assert_failure,_o_]} - var - _za_= - caml_equal(_y__,_y9_) - ?0 - :caml_lessthan(_y__,_y9_)?_y$_(_y__,_y9_):- _y$_(_y9_,_y__) | 0, - _zb_=_za_ % 24 | 0; - return -12 <= _zb_?11 < _zb_?_zb_ - 24 | 0:_zb_:_zb_ + 24 | 0} - function _p_(_y8_){return _m_(0,_k_(0))} - function _q_(_y7_){return _m_(_k_(0),0)} - function _r_(_y3_) - {var _y4_=1 === _k_(0)?1:0; - if(_y4_) - var _y5_=caml_call1(Unix[100],0),_y6_=caml_call1(Unix[103],_y5_)[9]; - else - var _y6_=_y4_; - return _y6_} - function _s_(_y0_){var _y1_=_r_(0),_y2_=_y1_?1:_y1_;return _y2_} - var - CalendarLib_Time_Zone= - [0, - _k_, - _l_, - _m_, - _p_, - _q_, - _r_, - _s_, - function(_yW_,_yV_,_yU_) - {var _yX_=_k_(0); - _l_(_yV_); - try - {var _yY_=caml_call1(_yW_,_yU_);_l_(_yX_);return _yY_} - catch(_yZ_){_yZ_ = caml_wrap_exception(_yZ_);_l_(_yX_);throw _yZ_}}]; - caml_register_global(212,CalendarLib_Time_Zone,"CalendarLib.Time_Zone"); - var _t_=CalendarLib_Utils[1]; - function _u_(_yT_,_yS_,_yR_) - {return _yT_ - + - (3600 * caml_call2(CalendarLib_Time_Zone[3],_yS_,_yR_) | 0) - | - 0} - function _v_(_yQ_) - {return _u_(_yQ_,0,caml_call1(CalendarLib_Time_Zone[1],0))} - function _w_(_yP_) - {return _u_(_yP_,caml_call1(CalendarLib_Time_Zone[1],0),0)} - function _x_(_yL_) - {var _yM_=_v_(_yL_),_yN_=_yM_ / 86400 | 0,_yO_=_w_(_yM_ % 86400 | 0); - return 0 <= _yM_?[0,_yO_,_yN_]:[0,_yO_ + 86400 | 0,_yN_ - 1 | 0]} - function _y_(_yK_,_yJ_,_yI_) - {return _w_(((_yK_ * 3600 | 0) + (_yJ_ * 60 | 0) | 0) + _yI_ | 0)} - function _z_(_yE_,_yD_,_yC_,_yB_) - {var - _yF_=_yE_?_yE_[1]:_yE_, - _yG_=_yD_?_yD_[1]:_yD_, - _yH_=_yC_?_yC_[1]:_yC_; - return _y_(_yF_,_yG_,_yH_)} - function _A_(_yA_){return _w_(0)} - function _B_(_yz_){return _w_(43200)} - function _C_(_yw_) - {var _yx_=caml_call1(Unix[100],0),_yy_=caml_call1(Unix[102],_yx_); - return ((3600 * _yy_[3] | 0) + (60 * _yy_[2] | 0) | 0) + _yy_[1] | 0} - function _D_(_yv_){return _v_(_yv_) / 3600 | 0} - function _E_(_yu_){return (_v_(_yu_) % 3600 | 0) / 60 | 0} - function _F_(_yt_){return _v_(_yt_) % 60 | 0} - function _G_(_ys_){return _v_(_ys_) / 3600.} - function _H_(_yr_){return _v_(_yr_) / 60.} - function _I_(_yq_){return _v_(_yq_)} - function _J_(_yn_) - {var _yo_=_x_(_yn_),_yp_=_x_(_B_(0))[1];return _yo_[1] < _yp_?1:0} - function _K_(_yk_) - {var _yl_=_x_(_yk_),_ym_=_x_(_B_(0))[1];return _ym_ <= _yl_[1]?1:0} - function _L_(_yj_){return _w_(_yj_ * 3600. | 0)} - function _M_(_yi_){return _w_(_yi_ * 60. | 0)} - function _N_(_yh_){return _w_(_yh_)} - function _O_(_yg_){return _yg_} - function _P_(_yf_){return _yf_} - var _Q_=CalendarLib_Utils[2][5]; - function _R_(_ye_){return _ye_} - var _S_=CalendarLib_Utils[1]; - function _T_(_yd_,_yc_,_yb_) - {return ((_yd_ * 3600 | 0) + (_yc_ * 60 | 0) | 0) + _yb_ | 0} - function _U_(_x9_,_x8_,_x7_,_x6_) - {var - _x__=_x9_?_x9_[1]:_x9_, - _x$_=_x8_?_x8_[1]:_x8_, - _ya_=_x7_?_x7_[1]:_x7_; - return _T_(_x__,_x$_,_ya_)} - function _V_(_x5_){return _x5_} - function _W_(_x4_){return _x4_ * 3600 | 0} - function _X_(_x3_){return _x3_ * 60 | 0} - function _Y_(_x2_){return _x2_} - var _Z_=0; - function ___(_x1_,_x0_){return _x1_ + _x0_ | 0} - function _$_(_xZ_,_xY_){return _xZ_ - _xY_ | 0} - var _aa_=caml_mul,_ab_=caml_div; - function _ac_(_xX_){return - _xX_ | 0} - function _ad_(_xW_){return _xW_} - function _ae_(_xV_){return _xV_ / 60.} - function _af_(_xU_){return _xU_ / 3600.} - var _ag_=_S_[3],_ah_=_S_[2],_ai_=_S_[1]; - function _aj_(_xT_,_xS_){return _xT_ + _xS_ | 0} - function _ak_(_xR_,_xQ_){return _xR_ - _xQ_ | 0} - function _al_(_xP_,_xO_){return _xP_ - _xO_ | 0} - function _am_(_xN_,_xM_) - {return 417088404 === _xM_ - ?_xN_ + 1 | 0 - :803994948 <= _xM_?_xN_ + 3600 | 0:_xN_ + 60 | 0} - function _an_(_xL_,_xK_) - {return 417088404 === _xK_ - ?_xL_ - 1 | 0 - :803994948 <= _xK_?_xL_ - 3600 | 0:_xL_ - 60 | 0} - var - CalendarLib_Time= - [0, - [0,_O_,_Q_,_P_,_R_], - _y_, - _z_, - _C_, - _A_, - _B_, - _u_, - _v_, - _w_, - _x_, - _D_, - _E_, - _F_, - _I_, - _H_, - _G_, - _t_[1], - _t_[2], - _t_[3], - _J_, - _K_, - _N_, - _M_, - _L_, - [0, - _Z_, - ___, - _$_, - _ac_, - _ai_, - _ah_, - _ag_, - _V_, - _aa_, - _ab_, - _T_, - _U_, - _W_, - _X_, - _Y_, - _ad_, - _ae_, - _af_], - _aj_, - _ak_, - _al_, - _am_, - _an_]; - caml_register_global(213,CalendarLib_Time,"CalendarLib.Time"); - var _ao_=CalendarLib_Utils[2]; - function _ap_(_xJ_,_xI_,_xH_) - {return _xJ_ - + - (3600 * caml_call2(CalendarLib_Time_Zone[3],_xI_,_xH_) | 0)} - function _aq_(_xG_) - {return _ap_(_xG_,0,caml_call1(CalendarLib_Time_Zone[1],0))} - function _ar_(_xF_) - {return _ap_(_xF_,caml_call1(CalendarLib_Time_Zone[1],0),0)} - function _as_(_xB_) - {var - _xC_=_aq_(_xB_), - _xD_=(_xC_ | 0) / 86400 | 0, - _xE_=_ar_(_xC_ % 86400.); - return _xC_ < 0.?[0,_xE_ + 86400.,_xD_ - 1 | 0]:[0,_xE_,_xD_]} - function _at_(_xA_,_xz_,_xy_) - {return _ar_(((_xA_ * 3600 | 0) + (_xz_ * 60 | 0) | 0) + _xy_)} - function _au_(_xu_,_xt_,_xs_,_xr_) - {var _xv_=_xu_?_xu_[1]:_xu_,_xw_=_xt_?_xt_[1]:_xt_,_xx_=_xs_?_xs_[1]:0.; - return _at_(_xv_,_xw_,_xx_)} - function _av_(_xq_){return _ar_(0.)} - function _aw_(_xp_){return _ar_(43200.)} - function _ax_(_xm_) - {var _xn_=caml_call1(Unix[101],0),_xo_=caml_call1(Unix[102],_xn_); - return (((3600 * _xo_[3] | 0) + (60 * _xo_[2] | 0) | 0) + _xo_[1] | 0) - + - caml_modf_float(_xn_)[1]} - function _ay_(_xl_){return (_aq_(_xl_) | 0) / 3600 | 0} - function _az_(_xk_){return ((_aq_(_xk_) | 0) % 3600 | 0) / 60 | 0} - function _aA_(_xj_){return _aq_(_xj_) % 60.} - function _aB_(_xi_){return _aq_(_xi_) / 3600.} - function _aC_(_xh_){return _aq_(_xh_) / 60.} - function _aD_(_xg_){return _aq_(_xg_)} - function _aE_(_xd_) - {var _xe_=_as_(_xd_),_xf_=_as_(_aw_(0))[1];return _xe_[1] < _xf_?1:0} - function _aF_(_xa_) - {var _xb_=_as_(_xa_),_xc_=_as_(_aw_(0))[1];return _xc_ <= _xb_[1]?1:0} - function _aG_(_w$_){return _ar_(_w$_ * 3600.)} - function _aH_(_w__){return _ar_(_w__ * 60.)} - function _aI_(_w9_){return _ar_(_w9_)} - function _aJ_(_w8_){return _w8_} - function _aK_(_w7_){return _w7_ | 0} - function _aL_(_w6_){return _w6_} - function _aM_(_w5_){return _w5_} - var _aN_=CalendarLib_Utils[2]; - function _aO_(_w4_,_w3_,_w2_) - {return ((_w4_ * 3600 | 0) + (_w3_ * 60 | 0) | 0) + _w2_} - function _aP_(_wY_,_wX_,_wW_,_wV_) - {var _wZ_=_wY_?_wY_[1]:_wY_,_w0_=_wX_?_wX_[1]:_wX_,_w1_=_wW_?_wW_[1]:0.; - return _aO_(_wZ_,_w0_,_w1_)} - function _aQ_(_wU_){return _wU_} - function _aR_(_wT_){return _wT_ * 3600 | 0} - function _aS_(_wS_){return _wS_ * 60 | 0} - function _aT_(_wR_){return _wR_} - var _aU_=0.; - function _aV_(_wQ_,_wP_){return _wQ_ + _wP_} - function _aW_(_wO_,_wN_){return _wO_ - _wN_} - function _aX_(_wM_,_wL_){return _wM_ * _wL_} - function _aY_(_wK_,_wJ_){return _wK_ / _wJ_} - function _aZ_(_wI_){return - _wI_} - function _a0_(_wH_){return _wH_} - function _a1_(_wG_){return _wG_ / 60.} - function _a2_(_wF_){return _wF_ / 3600.} - var _a3_=_aN_[3],_a4_=_aN_[2],_a5_=_aN_[1]; - function _a6_(_wE_,_wD_){return _wE_ + _wD_} - function _a7_(_wC_,_wB_){return _wC_ - _wB_} - function _a8_(_wA_,_wz_){return _wA_ - _wz_} - function _a9_(_wy_,_wx_) - {return 417088404 === _wx_ - ?_wy_ + 1. - :803994948 <= _wx_?_wy_ + 3600.:_wy_ + 60.} - function _a__(_ww_,_wv_) - {return 417088404 === _wv_ - ?_ww_ - 1. - :803994948 <= _wv_?_ww_ - 3600.:_ww_ - 60.} - var - CalendarLib_Ftime= - [0, - [0,_aJ_,_aL_,_aK_,_aM_], - _at_, - _au_, - _ax_, - _av_, - _aw_, - _ap_, - _aq_, - _ar_, - _as_, - _ay_, - _az_, - _aA_, - _aD_, - _aC_, - _aB_, - _ao_[1], - _ao_[2], - _ao_[3], - _aE_, - _aF_, - _aI_, - _aH_, - _aG_, - [0, - _aU_, - _aV_, - _aW_, - _aZ_, - _a5_, - _a4_, - _a3_, - _aQ_, - _aX_, - _aY_, - _aO_, - _aP_, - _aR_, - _aS_, - _aT_, - _a0_, - _a1_, - _a2_], - _a6_, - _a7_, - _a8_, - _a9_, - _a__]; - caml_register_global(214,CalendarLib_Ftime,"CalendarLib.Ftime"); - var - _a$_=[248,cst_Date_Out_of_bounds,caml_fresh_oo_id(0)], - _ba_=[248,cst_Date_Undefined,caml_fresh_oo_id(0)], - _bb_=CalendarLib_Utils[1][2], - _bc_=CalendarLib_Utils[1][1], - _bd_=CalendarLib_Utils[1][3]; - function _be_(_wu_,_wt_){return caml_compare(_wu_,_wt_) < 0?1:0} - function _bf_(_wl_,_wk_,_wj_) - {if(0 <= _wk_) - var - _wm_=_wk_ - 1 | 0, - _wn_=[0,_wl_ + (_wm_ / 12 | 0) | 0,(_wm_ % 12 | 0) + 1 | 0]; - else - var _wn_=[0,_wl_,_wk_]; - var _wo_=_wn_[2],_wp_=_wn_[1]; - if(_be_(_bg_,[0,_wp_,_wo_,_wj_]) && _be_([0,_wp_,_wo_,_wj_],_bh_)) - {var - _wq_=(14 - _wo_ | 0) / 12 | 0, - _wr_=(_wp_ + 4800 | 0) - _wq_ | 0, - _ws_=(_wo_ + (12 * _wq_ | 0) | 0) - 3 | 0; - if(_be_(_bi_,[0,_wp_,_wo_,_wj_])) - return (((((_wj_ + (((153 * _ws_ | 0) + 2 | 0) / 5 | 0) | 0) - + - (_wr_ * 365 | 0) - | - 0) - + - (_wr_ / 4 | 0) - | - 0) - - - (_wr_ / 100 | 0) - | - 0) - + - (_wr_ / 400 | 0) - | - 0) - - - 32045 - | - 0; - if(_be_([0,_wp_,_wo_,_wj_],_bj_)) - return (((_wj_ + (((153 * _ws_ | 0) + 2 | 0) / 5 | 0) | 0) - + - (_wr_ * 365 | 0) - | - 0) - + - (_wr_ / 4 | 0) - | - 0) - - - 32083 - | - 0; - throw _ba_} - throw _a$_} - function _bk_(_wg_,_wf_,_we_,_wd_) - {var _wh_=_wf_?_wf_[1]:1,_wi_=_we_?_we_[1]:1;return _bf_(_wg_,_wh_,_wi_)} - function _bl_(_wc_){return _bf_(_wc_,1,1)} - function _bm_(_wb_,_wa_){return _bf_(_wb_,_wa_,1)} - function _bn_(_v__,_v9_) - {var _v$_=caml_call1(CalendarLib_Time_Zone[4],0) + _v9_ | 0; - if(0 <= _v$_) - {if(24 <= _v$_) - {if(36 <= _v$_)throw [0,Assert_failure,_bo_];return _v__ + 1 | 0} - return _v__} - if(-13 < _v$_)return _v__ - 1 | 0; - throw [0,Assert_failure,_bp_]} - function _bq_(_v8_) - {return _bn_ - ((_v8_ / 86400. | 0) + 2440588 | 0, - caml_call1(Unix[102],_v8_)[3])} - function _br_(_v7_,_v6_){return _bf_(_v7_,1,_v6_)} - function _bs_(_v5_){return _bq_(caml_call1(Unix[100],0))} - function _bt_(_v4_){return _v4_} - function _bu_(_v3_){return _v3_} - function _bv_(_v2_){return _v2_ + 2400001 | 0} - function _bw_(_v1_){return _v1_ - 2400001 | 0} - function _bx_(_vU_) - {if(1582 < _vU_) - {var _vV_=0 === (_vU_ % 4 | 0)?1:0; - if(_vV_) - var - _vW_=0 !== (_vU_ % 100 | 0)?1:0, - _vX_=_vW_ || (0 === (_vU_ % 400 | 0)?1:0); - else - var _vX_=_vV_; - return _vX_} - if(-45 < _vU_ && ! (-8 < _vU_))return 0 === (_vU_ % 3 | 0)?1:0; - var - _vY_=_vU_ <= -45?1:0, - _vZ_=_vY_ || (8 <= _vU_?1:0), - _v0_=_vZ_?0 === (_vU_ % 4 | 0)?1:0:_vZ_; - return _v0_} - function _by_(_vT_){return _vT_ < 2299161?1:0} - function _bz_(_vS_){return 2299161 <= _vS_?1:0} - function _bA_(_vP_) - {if(_vP_ < 2299161) - var _vQ_=_vP_ + 32082 | 0; - else - var - _vR_=_vP_ + 32044 | 0, - _vQ_= - _vR_ - - - (((((4 * _vR_ | 0) + 3 | 0) / 146097 | 0) * 146097 | 0) / 4 | 0) - | - 0; - return _vQ_ - - - ((1461 * (((4 * _vQ_ | 0) + 3 | 0) / 1461 | 0) | 0) / 4 | 0) - | - 0} - function _bB_(_vN_) - {var _vO_=_bA_(_vN_); - return (_vO_ - - - (((153 * (((5 * _vO_ | 0) + 2 | 0) / 153 | 0) | 0) + 2 | 0) - / - 5 - | - 0) - | - 0) - + - 1 - | - 0} - function _bC_(_vL_) - {var _vM_=((5 * _bA_(_vL_) | 0) + 2 | 0) / 153 | 0; - return (_vM_ + 3 | 0) - (12 * (_vM_ / 10 | 0) | 0) | 0} - function _bD_(_vK_){return _bC_(_vK_) - 1 | 0} - function _bE_(_vE_) - {if(_vE_ < 2299161) - var _vG_=_vE_ + 32082 | 0,_vF_=0; - else - var - _vI_=_vE_ + 32044 | 0, - _vJ_=((4 * _vI_ | 0) + 3 | 0) / 146097 | 0, - _vG_=_vI_ - ((_vJ_ * 146097 | 0) / 4 | 0) | 0, - _vF_=_vJ_; - var _vH_=((4 * _vG_ | 0) + 3 | 0) / 1461 | 0; - return (((_vF_ * 100 | 0) + _vH_ | 0) - 4800 | 0) - + - ((((5 * (_vG_ - ((1461 * _vH_ | 0) / 4 | 0) | 0) | 0) + 2 | 0) - / - 153 - | - 0) - / - 10 - | - 0) - | - 0} - function _bF_(_vD_){return (_vD_ + 1 | 0) % 7 | 0} - function _bG_(_vC_){return _bF_(_vC_)} - function _bH_(_vB_){return _vB_ - _bf_(_bE_(_vB_) - 1 | 0,12,31) | 0} - function _bI_(_vy_) - {var - _vz_= - ((((_vy_ + 31741 | 0) - (_vy_ % 7 | 0) | 0) % 146097 | 0) % 36524 | 0) - % - 1461 - | - 0, - _vA_=_vz_ / 1460 | 0; - return ((((_vz_ - _vA_ | 0) % 365 | 0) + _vA_ | 0) / 7 | 0) + 1 | 0} - function _bJ_(_vx_) - {switch(_bD_(_vx_)) - {case 1:return _bx_(_bE_(_vx_))?29:28; - case 3: - case 5: - case 8: - case 10:return 30; - default:return 31}} - function _bK_(_vt_) - {var _vu_=_bx_(_bE_(_vt_)); - if(_vu_) - var _vv_=1 === _bD_(_vt_)?1:0,_vw_=_vv_?24 === _bB_(_vt_)?1:0:_vv_; - else - var _vw_=_vu_; - return _vw_} - function _bL_(_vn_,_vm_,_vl_) - {try - {var _vo_=_bf_(_vn_,_vm_,_vl_),_vp_=_bE_(_vo_) === _vn_?1:0; - if(_vp_) - var - _vq_=_bC_(_vo_) === _vm_?1:0, - _vr_=_vq_?_bB_(_vo_) === _vl_?1:0:_vq_; - else - var _vr_=_vp_; - return _vr_} - catch(_vs_) - {_vs_ = caml_wrap_exception(_vs_); - if(_vs_ !== _a$_ && _vs_ !== _ba_)throw _vs_; - return 0}} - function _bN_(_vk_,_vj_,_vi_){return [0,(12 * _vk_ | 0) + _vj_ | 0,_vi_]} - function _bO_(_ve_,_vd_,_vc_,_vb_) - {var - _vf_=_ve_?_ve_[1]:_ve_, - _vg_=_vd_?_vd_[1]:_vd_, - _vh_=_vc_?_vc_[1]:_vc_; - return _bN_(_vf_,_vg_,_vh_)} - function _bP_(_va_){return [0,_bM_[1],_va_]} - function _bQ_(_u$_){return [0,_bM_[1],7 * _u$_ | 0]} - function _bR_(_u__){return [0,_u__,_bM_[2]]} - function _bS_(_u9_){return [0,12 * _u9_ | 0,_bM_[2]]} - function _bT_(_u8_,_u7_) - {return [0,_u8_[1] + _u7_[1] | 0,_u8_[2] + _u7_[2] | 0]} - function _bU_(_u6_,_u5_) - {return [0,_u6_[1] - _u5_[1] | 0,_u6_[2] - _u5_[2] | 0]} - function _bV_(_u4_){return [0,- _u4_[1] | 0,- _u4_[2] | 0]} - function _bW_(_u2_,_u1_) - {var _u3_=caml_int_compare(_u2_[1],_u1_[1]); - return 0 === _u3_?caml_int_compare(_u2_[2],_u1_[2]):_u3_} - function _bX_(_u0_,_uZ_){return 0 === _bW_(_u0_,_uZ_)?1:0} - var - _bZ_=[248,cst_Date_Period_Not_computable,caml_fresh_oo_id(0)], - _bY_=Stdlib_Hashtbl[28]; - function _b0_(_uY_){if(0 === _uY_[1])return _uY_[2];throw _bZ_} - function _b1_(_uX_){return _uX_[2]} - function _b2_(_uW_){return [0,_uW_[1] / 12 | 0,_uW_[1] % 12 | 0,_uW_[2]]} - function _b3_(_uP_,_uO_) - {var - _uQ_=_b2_(_uO_), - _uR_=_uQ_[3], - _uS_=_bB_(_uP_) + _uR_ | 0, - _uT_=_uQ_[2], - _uU_=_bC_(_uP_) + _uT_ | 0, - _uV_=_uQ_[1]; - return _bf_(_bE_(_uP_) + _uV_ | 0,_uU_,_uS_)} - function _b4_(_uN_,_uM_){return [0,_bM_[1],_uN_ - _uM_ | 0]} - function _b5_(_uG_,_uF_) - {var _uH_=(_uG_ - _uF_ | 0) / 31 | 0; - for(;;) - {if((_uF_ + (31 * _uH_ | 0) | 0) < _uG_) - {var _uH_=_uH_ + 1 | 0;continue} - var _uI_=_b3_(_uF_,_bR_(_uH_)),_uJ_=_uG_ - _uI_ | 0; - if(0 <= _uJ_) - {if(_bJ_(_uI_) <= _uJ_){var _uH_=_uH_ + 1 | 0;continue} - var _uL_=[0,_uH_,_uJ_]} - else - var - _uK_=_uH_ - 1 | 0, - _uL_=[0,_uK_,_uJ_ + _bJ_(_b3_(_uF_,_bR_(_uK_))) | 0]; - return [0,_uL_[1],_uL_[2]]}} - function _b6_(_uE_,_uD_){return _b3_(_uE_,_bV_(_uD_))} - function _b7_(_uC_,_uB_) - {return 969837588 <= _uB_ - ?992015837 <= _uB_?_b3_(_uC_,_bS_(1)):_b3_(_uC_,_bP_(7)) - :529348384 <= _uB_?_b3_(_uC_,_bR_(1)):_b3_(_uC_,_bP_(1))} - function _b8_(_uA_,_uz_) - {return 969837588 <= _uz_ - ?992015837 <= _uz_?_b3_(_uA_,_bS_(-1)):_b3_(_uA_,_bP_(-7)) - :529348384 <= _uz_?_b3_(_uA_,_bR_(-1)):_b3_(_uA_,_bP_(-1))} - function _b9_(_ur_,_uq_) - {var _us_=_ur_ - _uq_ | 0; - if(_bx_(_ur_)) - var _ut_=1; - else - if(_bx_(_ur_ - 1 | 0)) - var - _uw_=0 === (_us_ % 6 | 0)?1:0, - _ut_=_uw_ || (0 === (_us_ % 17 | 0)?1:0); - else - if(_bx_(_ur_ - 2 | 0)) - var - _ux_=0 === (_us_ % 11 | 0)?1:0, - _ut_=_ux_ || (0 === (_us_ % 17 | 0)?1:0); - else - var _uy_=_bx_(_ur_ - 3 | 0),_ut_=_uy_?0 === (_us_ % 11 | 0)?1:0:_uy_; - var _uu_=0 === (_us_ % 28 | 0)?1:0,_uv_=_uu_ || _ut_; - return _uv_} - var _b$_=_b__.slice(); - function _ca_(_un_,_um_) - {var - _uo_=_un_?_un_[1]:11, - _up_=runtime.caml_check_bound(_b$_,_uo_)[1 + _uo_]; - if(_bx_(_um_) && 0 < _uo_)return _up_ + 1 | 0; - return _up_} - function _cb_(_uk_) - {var _ul_=_bG_(_bf_(_uk_,1,1)); - return 3 === _ul_?_bx_(_uk_)?53:52:4 === _ul_?53:52} - function _cc_(_uh_,_ug_) - {var - _ui_=_bf_(_ug_,1,1), - _uj_=(_ui_ - (_ui_ % 7 | 0) | 0) + (7 * (_uh_ - 1 | 0) | 0) | 0; - return [0,_uj_,6 + _uj_ | 0]} - function _cd_(_uc_,_ub_,_ua_,_t$_) - {var - _ud_=_bf_(_uc_,_ub_ + 1 | 0,1), - _ue_=_ua_ - _bF_(_ud_) | 0, - _uf_=0 <= _ue_?_ue_ - 7 | 0:_ue_; - return (_ud_ + (7 * _t$_ | 0) | 0) + _uf_ | 0} - function _ce_(_t__) - {return 0 === (_t__ % 100 | 0)?_t__ / 100 | 0:(_t__ / 100 | 0) + 1 | 0} - function _cf_(_t9_) - {return 0 === (_t9_ % 1000 | 0)?_t9_ / 1000 | 0:(_t9_ / 1000 | 0) + 1 | 0} - function _cg_(_t8_){return ((_t8_ + 8 | 0) % 28 | 0) + 1 | 0} - function _ch_(_t7_){return ((_t7_ + 2 | 0) % 15 | 0) + 1 | 0} - function _ci_(_t6_){return (_t6_ % 19 | 0) + 1 | 0} - function _cj_(_t3_) - {var _t4_=(11 * (_ci_(_t3_) - 1 | 0) | 0) % 30 | 0; - if(1582 < _t3_) - {var _t5_=(_t3_ / 100 | 0) + 1 | 0; - return caml_call1 - (Stdlib[18], - (((_t4_ - ((3 * _t5_ | 0) / 4 | 0) | 0) - + - (((8 * _t5_ | 0) + 5 | 0) / 25 | 0) - | - 0) - + - 8 - | - 0) - % - 30 - | - 0)} - return _t4_} - function _ck_(_tT_) - {var _tU_=_tT_ % 19 | 0; - if(1582 < _tT_) - var - _tV_=_tT_ / 100 | 0, - _tW_= - ((((_tV_ - (_tV_ / 4 | 0) | 0) - - - (((8 * _tV_ | 0) + 13 | 0) / 25 | 0) - | - 0) - + - (19 * _tU_ | 0) - | - 0) - + - 15 - | - 0) - % - 30 - | - 0, - _tX_= - _tW_ - - - caml_mul - (_tW_ / 28 | 0, - 1 - - - caml_mul - (caml_mul(_tW_ / 28 | 0,caml_div(29,_tW_ + 1 | 0)), - (21 - _tU_ | 0) / 11 | 0) - | - 0) - | - 0, - _tZ_= - (((((_tT_ + (_tT_ / 4 | 0) | 0) + _tX_ | 0) + 2 | 0) - _tV_ | 0) - + - (_tV_ / 4 | 0) - | - 0) - % - 7 - | - 0, - _tY_=_tX_; - else - var - _t2_=((19 * _tU_ | 0) + 15 | 0) % 30 | 0, - _tZ_=((_tT_ + (_tT_ / 4 | 0) | 0) + _t2_ | 0) % 7 | 0, - _tY_=_t2_; - var _t0_=_tY_ - _tZ_ | 0,_t1_=3 + ((_t0_ + 40 | 0) / 44 | 0) | 0; - return _bf_(_tT_,_t1_,(_t0_ + 28 | 0) - (31 * (_t1_ / 4 | 0) | 0) | 0)} - function _cl_(_tS_){return _ck_(_tS_) - 48 | 0} - function _cm_(_tR_){return _ck_(_tR_) - 47 | 0} - function _cn_(_tQ_){return _ck_(_tQ_) - 46 | 0} - function _co_(_tP_){return _ck_(_tP_) - 7 | 0} - function _cp_(_tO_){return _ck_(_tO_) - 2 | 0} - function _cq_(_tN_){return _ck_(_tN_) - 1 | 0} - function _cr_(_tM_){return _ck_(_tM_) + 1 | 0} - function _cs_(_tL_){return _ck_(_tL_) + 39 | 0} - function _ct_(_tK_){return _ck_(_tK_) + 49 | 0} - function _cu_(_tJ_){return _ck_(_tJ_) + 50 | 0} - function _cv_(_tI_){return _ck_(_tI_) + 60 | 0} - function _cw_(_tG_) - {var _tH_=_bf_(_tG_[6] + 1900 | 0,_tG_[5] + 1 | 0,_tG_[4]); - return _bn_(_tH_,_tG_[3])} - function _cx_(_tB_) - {var - _tC_=_bH_(_tB_) - 1 | 0, - _tD_=_bF_(_tB_), - _tE_=_bE_(_tB_) - 1900 | 0, - _tF_=_bC_(_tB_) - 1 | 0; - return [0,0,0,0,_bB_(_tB_),_tF_,_tE_,_tD_,_tC_,0]} - function _cy_(_tA_){return (_tA_ - 2440588 | 0) * 86400.} - function _cz_(_tt_) - {var _tu_=_bI_(_tt_),_tv_=_bE_(_tt_),_tw_=_bC_(_tt_); - if(1 === _tw_) - var _tx_=_tv_ - 1 | 0,_ty_=_tu_ === _cb_(_tx_)?_tx_:_tv_,_tz_=_ty_; - else - var _tz_=12 === _tw_?1 === _tu_?_tv_ + 1 | 0:_tv_:_tv_; - return [0,_tz_,_tu_,_bG_(_tt_)]} - function _cA_(_ts_){return 0 === _ts_?7:_ts_} - function _cB_(_tk_,_tj_,_ti_) - {var _tl_=_tj_ < 1?1:0,_tm_=_tl_ || (_cb_(_tk_) < _tj_?1:0); - if(_tm_)caml_call1(Stdlib[1],cst_from_business_bad_week); - try - {var _tq_=_bf_(_tk_,1,1),_tn_=_tq_} - catch(_tr_) - {_tr_ = caml_wrap_exception(_tr_); - if(_tr_ !== _a$_ && _tr_ !== _ba_)throw _tr_; - var _tn_=caml_call1(Stdlib[1],cst_from_business_bad_date)} - var _to_=_bF_(_tn_),_tp_=4 < _to_?_tj_:_tj_ - 1 | 0; - return ((_tn_ + (_tp_ * 7 | 0) | 0) + _cA_(_ti_) | 0) - _to_ | 0} - function _cC_(_th_) - {if(0 < _th_ && ! (7 <= _th_))return _th_; - return 7 === _th_?0:caml_call1(Stdlib[1],cst_Not_a_day)} - function _cD_(_tg_){return _tg_ + 1 | 0} - var - CalendarLib_Date= - [0, - _a$_, - _ba_, - _bf_, - _bk_, - _bl_, - _bm_, - _bs_, - _bt_, - _bv_, - _br_, - _bJ_, - _bG_, - _bB_, - _bH_, - _bI_, - _bD_, - _bE_, - _bu_, - _bw_, - _bc_, - _bb_, - _bd_, - _bL_, - _bK_, - _bz_, - _by_, - _cx_, - _cw_, - _cy_, - _bq_, - _cz_, - _cB_, - _cA_, - _cC_, - _cD_, - function(_tf_) - {if(0 < _tf_ && ! (13 <= _tf_))return _tf_ - 1 | 0; - return caml_call1(Stdlib[1],cst_Not_a_month)}, - [0, - _bM_, - _bT_, - _bU_, - _bV_, - _bX_, - _bW_, - _bY_, - _bN_, - _bO_, - _bS_, - _bR_, - _bQ_, - _bP_, - _bZ_, - _b0_, - _b1_, - _b2_], - _b3_, - _b4_, - _b5_, - _b6_, - _b7_, - _b8_, - _bx_, - _b9_, - _ca_, - _cb_, - _cc_, - _cd_, - _ce_, - _cf_, - _cg_, - _ch_, - _ci_, - _cj_, - _ck_, - _cl_, - _cm_, - _cn_, - _co_, - _cp_, - _cq_, - _cr_, - _cs_, - _ct_, - _cu_, - _cv_]; - caml_register_global(215,CalendarLib_Date,"CalendarLib.Date"); - function _cI_(_p4_,_p3_) - {function _oW_(_td_,_tc_) - {var _te_=caml_call2(_p4_[20],_td_[1],_tc_[1]); - return _te_?caml_call2(_p3_[17],_td_[2],_tc_[2]):_te_} - function _oX_(_ta_,_s$_) - {var _tb_=caml_call2(_p4_[21],_ta_[1],_s$_[1]); - return 0 === _tb_?caml_call2(_p3_[18],_ta_[2],_s$_[2]):_tb_} - var _oY_=Stdlib_Hashtbl[28]; - function _oZ_(_s7_,_s6_) - {var - _s8_=caml_call1(_p3_[10],_s6_), - _s9_=_s8_[1], - _s__=caml_call1(_p4_[37][13],_s8_[2]); - return [0,caml_call2(_p4_[38],_s7_,_s__),_s9_]} - function _o0_(_s2_,_s1_,_s0_) - {var - _s3_=caml_call2(CalendarLib_Time_Zone[3],_s1_,_s0_), - _s4_=caml_call1(_p3_[25][13],_s3_), - _s5_=caml_call2(_p3_[26],_s2_[2],_s4_); - return _oZ_(_s2_[1],_s5_)} - function _o1_(_sZ_) - {return _o0_(_sZ_,caml_call1(CalendarLib_Time_Zone[1],0),0)} - function _o2_(_sY_) - {return _o0_(_sY_,0,caml_call1(CalendarLib_Time_Zone[1],0))} - function _o3_(_sW_) - {var _sX_=caml_call1(_p3_[1][1],0); - return _o1_([0,_sW_,caml_call3(_p3_[2],0,0,_sX_)])} - function _o4_(_sV_){return _o2_(_sV_)[1]} - function _o5_(_sU_){return _o2_(_sU_)[2]} - function _o6_(_sT_,_sS_){return _o1_([0,_sT_,_sS_])} - function _o7_(_sP_) - {var - _sQ_=caml_call1(_p3_[6],0), - _sR_=_o6_(caml_call3(_p4_[3],3268,1,22),_sQ_); - return [0,_o6_(caml_call3(_p4_[3],-4712,1,1),_sQ_),_sR_]} - var - _o8_=caml_call3(CalendarLib_Time_Zone[8],_o7_,0,0), - _o9_=_o8_[2], - _o__=_o8_[1]; - function _o$_(_sM_,_sL_,_sK_,_sJ_,_sI_,_sH_) - {var - _sN_=caml_call3(_p3_[2],_sJ_,_sI_,_sH_), - _sO_=_o6_(caml_call3(_p4_[3],_sM_,_sL_,_sK_),_sN_), - _sF_=0 <= _oX_(_sO_,_o__)?1:0, - _sG_=_sF_?_oX_(_sO_,_o9_) <= 0?1:0:_sF_; - if(_sG_)return _sO_; - throw _p4_[1]} - function _pa_(_sz_,_sy_,_sx_,_sw_,_sv_,_su_,_st_) - {var - _sA_=_sy_?_sy_[1]:1, - _sB_=_sx_?_sx_[1]:1, - _sC_=_sw_?_sw_[1]:_sw_, - _sD_=_sv_?_sv_[1]:_sv_, - _sE_=_su_?_su_[1]:caml_call1(_p3_[1][1],0); - return _o$_(_sz_,_sA_,_sB_,_sC_,_sD_,_sE_)} - function _pb_(_sp_) - {var - _sq_=caml_call1(Unix[101],0), - _sr_=caml_call1(Unix[102],_sq_), - _ss_=caml_call1(_p3_[1][2],_sr_[1] + caml_modf_float(_sq_)[1]); - return _o2_ - (_o$_ - (_sr_[6] + 1900 | 0, - _sr_[5] + 1 | 0, - _sr_[4], - _sr_[3], - _sr_[2], - _ss_))} - function _pc_(_sl_) - {var - _sm_=caml_modf_float(_sl_), - _sn_=caml_call1(_p3_[1][2],_sm_[1] * 86400. + 43200.), - _so_=caml_call1(_p3_[22],_sn_); - return _o1_([0,caml_call1(_p4_[8],_sm_[2] | 0),_so_])} - function _pd_(_sk_){return _pc_(_sk_ + 2400000.5)} - function _pe_(_sg_) - {var - _sh_=_o2_(_sg_), - _si_=caml_call1(_p3_[14],_sh_[2]), - _sj_=caml_call1(_p3_[1][4],_si_) / 86400.; - return caml_call1(_p4_[18],_sh_[1]) + _sj_ - 0.5} - function _pf_(_sf_){return _pe_(_sf_) - 2400000.5} - function _pg_(_sd_) - {var _se_=_o4_(_sd_);return caml_call1(_p4_[11],_se_)} - function _ph_(_sb_) - {var _sc_=_o4_(_sb_);return caml_call1(_p4_[12],_sc_)} - function _pi_(_r$_) - {var _sa_=_o4_(_r$_);return caml_call1(_p4_[13],_sa_)} - function _pj_(_r9_) - {var _r__=_o4_(_r9_);return caml_call1(_p4_[14],_r__)} - function _pk_(_r7_) - {var _r8_=_o4_(_r7_);return caml_call1(_p4_[15],_r8_)} - function _pl_(_r5_) - {var _r6_=_o4_(_r5_);return caml_call1(_p4_[16],_r6_)} - function _pm_(_r3_) - {var _r4_=_o4_(_r3_);return caml_call1(_p4_[17],_r4_)} - function _pn_(_r1_) - {var _r2_=_o5_(_r1_);return caml_call1(_p3_[11],_r2_)} - function _po_(_rZ_) - {var _r0_=_o5_(_rZ_);return caml_call1(_p3_[12],_r0_)} - function _pp_(_rX_) - {var _rY_=_o5_(_rX_);return caml_call1(_p3_[13],_rY_)} - function _pq_(_rV_) - {var _rW_=caml_call1(_p3_[1][1],_rV_[1]); - return _o$_ - (_rV_[6] + 1900 | 0, - _rV_[5] + 1 | 0, - _rV_[4], - _rV_[3], - _rV_[2], - _rW_)} - function _pr_(_rI_) - {var - _rJ_=_o4_(_rI_), - _rK_=caml_call1(_p4_[27],_rJ_), - _rL_=_o5_(_rI_), - _rM_=_rK_[9], - _rN_=_rK_[8], - _rO_=_rK_[7], - _rP_=_rK_[6], - _rQ_=_rK_[5], - _rR_=_rK_[4], - _rS_=caml_call1(_p3_[11],_rL_), - _rT_=caml_call1(_p3_[12],_rL_), - _rU_=caml_call1(_p3_[13],_rL_); - return [0, - caml_call1(_p3_[1][3],_rU_), - _rT_, - _rS_, - _rR_, - _rQ_, - _rP_, - _rO_, - _rN_, - _rM_]} - function _ps_(_rH_){return _pc_(_rH_ / 86400. + 2440587.5)} - function _pt_(_rG_){return (_pe_(_rG_) - 2440587.5) * 86400.} - function _pu_(_rE_) - {var _rF_=_o4_(_rE_);return caml_call1(_p4_[24],_rF_)} - function _pv_(_rC_) - {var _rD_=_o4_(_rC_);return caml_call1(_p4_[25],_rD_)} - function _pw_(_rA_) - {var _rB_=_o4_(_rA_);return caml_call1(_p4_[26],_rB_)} - function _px_(_ry_) - {var _rz_=_o5_(_ry_);return caml_call1(_p3_[20],_rz_)} - function _py_(_rw_) - {var _rx_=_o5_(_rw_);return caml_call1(_p3_[21],_rx_)} - function _pz_(_rt_) - {function _rj_(_ru_) - {if(_ru_ < 86400.)return [0,0,_ru_]; - var _rv_=_rj_(_ru_ - 86400.); - return [0,_rv_[1] + 1 | 0,_rv_[2]]} - var - _rk_=caml_call1(_p3_[25][8],_rt_[2]), - _rl_=caml_call1(_p3_[1][4],_rk_); - if(0. <= _rl_) - var _rm_=_rj_(_rl_),_ro_=_rm_[2],_rn_=_rm_[1]; - else - var - _rs_=_rj_(- _rl_), - _ro_=- _rs_[2] + 86400., - _rn_=- (_rs_[1] + 1 | 0) | 0; - if(0. <= _ro_ && _ro_ < 86400.) - {var - _rp_=caml_call1(_p3_[1][2],_ro_), - _rq_=caml_call1(_p3_[25][15],_rp_), - _rr_=caml_call1(_p4_[37][13],_rn_); - return [0,caml_call2(_p4_[37][2],_rt_[1],_rr_),_rq_]} - throw [0,Assert_failure,_cH_]} - var _pA_=[0,_p4_[37][1],_p3_[25][1]]; - function _pB_(_rh_,_rg_,_rf_,_re_,_rd_,_rc_) - {var _ri_=caml_call3(_p3_[25][11],_re_,_rd_,_rc_); - return _pz_([0,caml_call3(_p4_[37][8],_rh_,_rg_,_rf_),_ri_])} - function _pC_(_q7_,_q6_,_q5_,_q4_,_q3_,_q2_,_q1_) - {var - _q8_=_q7_?_q7_[1]:_q7_, - _q9_=_q6_?_q6_[1]:_q6_, - _q__=_q5_?_q5_[1]:_q5_, - _q$_=_q4_?_q4_[1]:_q4_, - _ra_=_q3_?_q3_[1]:_q3_, - _rb_=_q2_?_q2_[1]:caml_call1(_p3_[1][1],0); - return _pB_(_q8_,_q9_,_q__,_q$_,_ra_,_rb_)} - function _pD_(_qZ_) - {var _q0_=_pA_[2];return [0,caml_call1(_p4_[37][10],_qZ_),_q0_]} - function _pE_(_qX_) - {var _qY_=_pA_[2];return [0,caml_call1(_p4_[37][11],_qX_),_qY_]} - function _pF_(_qV_) - {var _qW_=_pA_[2];return [0,caml_call1(_p4_[37][12],_qV_),_qW_]} - function _pG_(_qT_) - {var _qU_=_pA_[2];return [0,caml_call1(_p4_[37][13],_qT_),_qU_]} - function _pH_(_qR_) - {var _qS_=caml_call1(_p3_[25][13],_qR_);return _pz_([0,_pA_[1],_qS_])} - function _pI_(_qP_) - {var _qQ_=caml_call1(_p3_[25][14],_qP_);return _pz_([0,_pA_[1],_qQ_])} - function _pJ_(_qN_) - {var _qO_=caml_call1(_p3_[25][15],_qN_);return _pz_([0,_pA_[1],_qO_])} - function _pK_(_qL_,_qK_) - {var _qM_=caml_call2(_p3_[25][2],_qL_[2],_qK_[2]); - return _pz_([0,caml_call2(_p4_[37][2],_qL_[1],_qK_[1]),_qM_])} - function _pL_(_qI_,_qH_) - {var _qJ_=caml_call2(_p3_[25][3],_qI_[2],_qH_[2]); - return _pz_([0,caml_call2(_p4_[37][3],_qI_[1],_qH_[1]),_qJ_])} - function _pM_(_qF_) - {var _qG_=caml_call1(_p3_[25][4],_qF_[2]); - return _pz_([0,caml_call1(_p4_[37][4],_qF_[1]),_qG_])} - function _pN_(_qD_,_qC_) - {var _qE_=caml_call2(_p4_[37][6],_qD_[1],_qC_[1]); - return 0 === _qE_?caml_call2(_p3_[25][6],_qD_[2],_qC_[2]):_qE_} - function _pO_(_qA_,_qz_) - {var _qB_=caml_call2(_p4_[37][5],_qA_[1],_qz_[1]); - return _qB_?caml_call2(_p3_[25][5],_qA_[2],_qz_[2]):_qB_} - var _pP_=Stdlib_Hashtbl[28]; - function _pQ_(_qy_){return _qy_[1]} - function _pR_(_qx_){return [0,_qx_,_pA_[2]]} - function _pS_(_qw_){return [0,_pA_[1],_qw_]} - var _pT_=_p4_[37][14]; - function _pU_(_qs_,_qr_) - {var - _qt_=_qr_[2], - _qu_=caml_call1(_qs_,_qr_[1]) * 24 | 0, - _qv_=caml_call1(_p3_[25][13],_qu_); - return caml_call2(_p3_[25][2],_qv_,_qt_)} - function _pV_(_qq_){return _pU_(_p4_[37][15],_qq_)} - function _pW_(_qp_){return _pU_(_p4_[37][16],_qp_)} - function _pX_(_qm_) - {var - _qn_=caml_call1(_p4_[37][17],_qm_[1]), - _qo_=caml_call1(_p3_[25][16],_qm_[2]); - return [0,_qn_[1],_qn_[2],_qn_[3],_qo_]} - function _pY_(_qk_,_qj_) - {var _ql_=caml_call2(_p3_[26],_qk_[2],_qj_[2]); - return _oZ_(caml_call2(_p4_[38],_qk_[1],_qj_[1]),_ql_)} - function _pZ_(_qi_,_qh_){return _pY_(_qi_,_pM_(_qh_))} - function _p0_(_qf_,_qe_) - {var _qg_=caml_call2(_p3_[27],_qf_[2],_qe_[2]); - return _pz_([0,caml_call2(_p4_[39],_qf_[1],_qe_[1]),_qg_])} - function _p1_(_qc_,_qb_) - {var _qd_=caml_call2(_p3_[27],_qc_[2],_qb_[2]); - return _pz_([0,caml_call2(_p4_[40],_qc_[1],_qb_[1]),_qd_])} - function _p2_(_p__,_p9_) - {var switch$0=0; - if(529348384 <= _p9_) - {if(803994948 === _p9_)switch$0 = 1} - else - if(127686388 <= _p9_)switch$0 = 1; - if(switch$0) - {var _p$_=caml_call2(_p3_[29],_p__[2],_p9_); - return _oZ_(_p__[1],_p$_)} - var _qa_=_p__[2]; - return _oZ_(caml_call2(_p4_[42],_p__[1],_p9_),_qa_)} - return [0, - _p4_, - _p3_, - _o$_, - _pa_, - _o6_, - _pb_, - _pc_, - _pd_, - _o0_, - _o1_, - _o2_, - _pg_, - _ph_, - _pi_, - _pj_, - _pk_, - _pl_, - _pm_, - _pe_, - _pf_, - _pn_, - _po_, - _pp_, - _oW_, - _oX_, - _oY_, - _pu_, - _pv_, - _pw_, - _px_, - _py_, - _pr_, - _pq_, - _pt_, - _ps_, - _o3_, - _o4_, - _o5_, - [0, - _pA_, - _pK_, - _pL_, - _pM_, - _pO_, - _pN_, - _pP_, - _pB_, - _pC_, - _pD_, - _pE_, - _pF_, - _pG_, - _pH_, - _pI_, - _pJ_, - _pR_, - _pS_, - _pQ_, - _pT_, - _pV_, - _pW_, - _pX_], - _pY_, - _p0_, - _p1_, - _pZ_, - _p2_, - function(_p6_,_p5_) - {var switch$0=0; - if(529348384 <= _p5_) - {if(803994948 === _p5_)switch$0 = 1} - else - if(127686388 <= _p5_)switch$0 = 1; - if(switch$0) - {var _p7_=caml_call2(_p3_[30],_p6_[2],_p5_); - return _oZ_(_p6_[1],_p7_)} - var _p8_=_p6_[2]; - return _oZ_(caml_call2(_p4_[43],_p6_[1],_p5_),_p8_)}]} - var - CalendarLib_Calendar_builder= - [0, - function(_lJ_,_lI_) - {var _kF_=CalendarLib_Utils[2]; - function _kG_(_oV_,_oU_,_oT_) - {return _oV_ + caml_call2(CalendarLib_Time_Zone[3],_oU_,_oT_) / 24.} - function _kH_(_oS_) - {return _kG_(_oS_,caml_call1(CalendarLib_Time_Zone[1],0),0)} - function _kI_(_oR_) - {return _kG_(_oR_,0,caml_call1(CalendarLib_Time_Zone[1],0))} - function _kJ_(_oQ_){return _kH_(caml_call1(_lJ_[18],_oQ_)) - 0.5} - function _kK_(_oO_) - {var _oP_=_kI_(_oO_) + 0.5 | 0;return caml_call1(_lJ_[8],_oP_)} - function _kL_(_oL_) - {var _oM_=caml_modf_float(_kI_(_oL_) + 0.5)[1] * 86400.; - if(_oM_ < 86400.) - {var _oN_=caml_call1(_lI_[1][2],_oM_); - return caml_call1(_lI_[22],_oN_)} - throw [0,Assert_failure,_cE_]} - function _kM_(_oI_,_oH_) - {var - _oJ_=caml_call1(_lI_[14],_oH_), - _oK_=caml_call1(_lI_[1][4],_oJ_) / 86400.; - return _kH_(caml_call1(_lJ_[18],_oI_) + _oK_) - 0.5} - function _kN_(_oE_,_oD_,_oC_,_oB_,_oA_,_oz_) - {var - _oF_=caml_call3(_lI_[2],_oB_,_oA_,_oz_), - _oG_=_kM_(caml_call3(_lJ_[3],_oE_,_oD_,_oC_),_oF_), - _ox_=0. <= _oG_?1:0, - _oy_=_ox_?_oG_ < 2914695.?1:0:_ox_; - if(_oy_)return _oG_; - throw _lJ_[1]} - function _kO_(_or_,_oq_,_op_,_oo_,_on_,_om_,_ol_) - {var - _os_=_oq_?_oq_[1]:1, - _ot_=_op_?_op_[1]:1, - _ou_=_oo_?_oo_[1]:_oo_, - _ov_=_on_?_on_[1]:_on_, - _ow_=_om_?_om_[1]:caml_call1(_lI_[1][1],0); - return _kN_(_or_,_os_,_ot_,_ou_,_ov_,_ow_)} - function _kP_(_oh_) - {var - _oi_=caml_call1(Unix[101],0), - _oj_=caml_call1(Unix[102],_oi_), - _ok_=caml_call1(_lI_[1][2],_oj_[1] + caml_modf_float(_oi_)[1]); - return _kI_ - (_kN_ - (_oj_[6] + 1900 | 0, - _oj_[5] + 1 | 0, - _oj_[4], - _oj_[3], - _oj_[2], - _ok_))} - function _kQ_(_og_){return _kH_(_og_)} - function _kR_(_of_){return _kH_(_of_) + 2400000.5} - function _kS_(_oe_){return _kI_(_oe_)} - function _kT_(_od_){return _kI_(_od_) - 2400000.5} - function _kU_(_ob_) - {var _oc_=_kK_(_ob_);return caml_call1(_lJ_[11],_oc_)} - function _kV_(_n$_) - {var _oa_=_kK_(_n$_);return caml_call1(_lJ_[12],_oa_)} - function _kW_(_n9_) - {var _n__=_kK_(_n9_);return caml_call1(_lJ_[13],_n__)} - function _kX_(_n7_) - {var _n8_=_kK_(_n7_);return caml_call1(_lJ_[14],_n8_)} - function _kY_(_n5_) - {var _n6_=_kK_(_n5_);return caml_call1(_lJ_[15],_n6_)} - function _kZ_(_n3_) - {var _n4_=_kK_(_n3_);return caml_call1(_lJ_[16],_n4_)} - function _k0_(_n1_) - {var _n2_=_kK_(_n1_);return caml_call1(_lJ_[17],_n2_)} - function _k1_(_nZ_) - {var _n0_=_kL_(_nZ_);return caml_call1(_lI_[11],_n0_)} - function _k2_(_nX_) - {var _nY_=_kL_(_nX_);return caml_call1(_lI_[12],_nY_)} - function _k3_(_nV_) - {var _nW_=_kL_(_nV_);return caml_call1(_lI_[13],_nW_)} - function _k4_(_nT_) - {var _nU_=caml_call1(_lI_[1][1],_nT_[1]); - return _kN_ - (_nT_[6] + 1900 | 0, - _nT_[5] + 1 | 0, - _nT_[4], - _nT_[3], - _nT_[2], - _nU_)} - function _k5_(_nG_) - {var - _nH_=_kK_(_nG_), - _nI_=caml_call1(_lJ_[27],_nH_), - _nJ_=_kL_(_nG_), - _nK_=_nI_[9], - _nL_=_nI_[8], - _nM_=_nI_[7], - _nN_=_nI_[6], - _nO_=_nI_[5], - _nP_=_nI_[4], - _nQ_=caml_call1(_lI_[11],_nJ_), - _nR_=caml_call1(_lI_[12],_nJ_), - _nS_=caml_call1(_lI_[13],_nJ_); - return [0, - caml_call1(_lI_[1][3],_nS_), - _nR_, - _nQ_, - _nP_, - _nO_, - _nN_, - _nM_, - _nL_, - _nK_]} - function _k6_(_nF_){return _kH_(_nF_ / 86400. + 2440587.5)} - function _k7_(_nE_){return (_kI_(_nE_) - 2440587.5) * 86400.} - function _k8_(_nC_) - {var _nD_=_kK_(_nC_);return caml_call1(_lJ_[24],_nD_)} - function _k9_(_nA_) - {var _nB_=_kK_(_nA_);return caml_call1(_lJ_[25],_nB_)} - function _k__(_ny_) - {var _nz_=_kK_(_ny_);return caml_call1(_lJ_[26],_nz_)} - function _k$_(_nw_) - {var _nx_=_kL_(_nw_);return caml_call1(_lI_[20],_nx_)} - function _la_(_nu_) - {var _nv_=_kL_(_nu_);return caml_call1(_lI_[21],_nv_)} - function _lb_(_nr_) - {function _nh_(_ns_) - {if(_ns_ < 86400.)return [0,0,_ns_]; - var _nt_=_nh_(_ns_ - 86400.); - return [0,_nt_[1] + 1 | 0,_nt_[2]]} - var - _ni_=caml_call1(_lI_[25][8],_nr_[2]), - _nj_=caml_call1(_lI_[1][4],_ni_); - if(0. <= _nj_) - var _nk_=_nh_(_nj_),_nm_=_nk_[2],_nl_=_nk_[1]; - else - var - _nq_=_nh_(- _nj_), - _nm_=- _nq_[2] + 86400., - _nl_=- (_nq_[1] + 1 | 0) | 0; - if(0. <= _nm_ && _nm_ < 86400.) - {var - _nn_=caml_call1(_lI_[1][2],_nm_), - _no_=caml_call1(_lI_[25][15],_nn_), - _np_=caml_call1(_lJ_[37][13],_nl_); - return [0,caml_call2(_lJ_[37][2],_nr_[1],_np_),_no_]} - throw [0,Assert_failure,_cF_]} - var _lc_=[0,_lJ_[37][1],_lI_[25][1]]; - function _ld_(_nf_,_ne_,_nd_,_nc_,_nb_,_na_) - {var _ng_=caml_call3(_lI_[25][11],_nc_,_nb_,_na_); - return _lb_([0,caml_call3(_lJ_[37][8],_nf_,_ne_,_nd_),_ng_])} - function _le_(_m5_,_m4_,_m3_,_m2_,_m1_,_m0_,_mZ_) - {var - _m6_=_m5_?_m5_[1]:_m5_, - _m7_=_m4_?_m4_[1]:_m4_, - _m8_=_m3_?_m3_[1]:_m3_, - _m9_=_m2_?_m2_[1]:_m2_, - _m__=_m1_?_m1_[1]:_m1_, - _m$_=_m0_?_m0_[1]:caml_call1(_lI_[1][1],0); - return _ld_(_m6_,_m7_,_m8_,_m9_,_m__,_m$_)} - function _lf_(_mX_) - {var _mY_=_lc_[2];return [0,caml_call1(_lJ_[37][10],_mX_),_mY_]} - function _lg_(_mV_) - {var _mW_=_lc_[2];return [0,caml_call1(_lJ_[37][11],_mV_),_mW_]} - function _lh_(_mT_) - {var _mU_=_lc_[2];return [0,caml_call1(_lJ_[37][12],_mT_),_mU_]} - function _li_(_mR_) - {var _mS_=_lc_[2];return [0,caml_call1(_lJ_[37][13],_mR_),_mS_]} - function _lj_(_mP_) - {var _mQ_=caml_call1(_lI_[25][13],_mP_); - return _lb_([0,_lc_[1],_mQ_])} - function _lk_(_mN_) - {var _mO_=caml_call1(_lI_[25][14],_mN_); - return _lb_([0,_lc_[1],_mO_])} - function _ll_(_mL_) - {var _mM_=caml_call1(_lI_[25][15],_mL_); - return _lb_([0,_lc_[1],_mM_])} - function _lm_(_mJ_,_mI_) - {var _mK_=caml_call2(_lI_[25][2],_mJ_[2],_mI_[2]); - return _lb_([0,caml_call2(_lJ_[37][2],_mJ_[1],_mI_[1]),_mK_])} - function _ln_(_mG_,_mF_) - {var _mH_=caml_call2(_lI_[25][3],_mG_[2],_mF_[2]); - return _lb_([0,caml_call2(_lJ_[37][3],_mG_[1],_mF_[1]),_mH_])} - function _lo_(_mD_) - {var _mE_=caml_call1(_lI_[25][4],_mD_[2]); - return _lb_([0,caml_call1(_lJ_[37][4],_mD_[1]),_mE_])} - function _lp_(_mB_,_mA_) - {var _mC_=caml_call2(_lJ_[37][6],_mB_[1],_mA_[1]); - return 0 === _mC_?caml_call2(_lI_[25][6],_mB_[2],_mA_[2]):_mC_} - function _lq_(_my_,_mx_) - {var _mz_=caml_call2(_lJ_[37][5],_my_[1],_mx_[1]); - return _mz_?caml_call2(_lI_[25][5],_my_[2],_mx_[2]):_mz_} - var _lr_=Stdlib_Hashtbl[28]; - function _ls_(_mw_){return _mw_[1]} - function _lt_(_mv_){return [0,_mv_,_lc_[2]]} - function _lu_(_mu_){return [0,_lc_[1],_mu_]} - var _lv_=_lJ_[37][14]; - function _lw_(_mq_,_mp_) - {var - _mr_=_mp_[2], - _ms_=caml_call1(_mq_,_mp_[1]) * 24 | 0, - _mt_=caml_call1(_lI_[25][13],_ms_); - return caml_call2(_lI_[25][2],_mt_,_mr_)} - function _lx_(_mo_){return _lw_(_lJ_[37][15],_mo_)} - function _ly_(_mn_){return _lw_(_lJ_[37][16],_mn_)} - function _lz_(_mk_) - {var - _ml_=caml_call1(_lJ_[37][17],_mk_[1]), - _mm_=caml_call1(_lI_[25][16],_mk_[2]); - return [0,_ml_[1],_ml_[2],_ml_[3],_mm_]} - function _lA_(_mc_) - {var - _md_=caml_modf_float(_kI_(_mc_ + 0.5)), - _me_=_md_[2] | 0, - _mf_=_md_[1] * 86400.; - if(_mf_ < 0.) - var _mh_=_me_ - 1 | 0,_mg_=_mf_ + 86400.; - else - var _mh_=_me_,_mg_=_mf_; - if(0. <= _mg_ && _mg_ < 86400.) - {var - _mi_=caml_call1(_lI_[1][2],_mg_), - _mj_=caml_call1(_lI_[22],_mi_); - return [0,caml_call1(_lJ_[8],_mh_),_mj_]} - throw [0,Assert_failure,_cG_]} - function _lB_(_l$_,_l__) - {var - _ma_=caml_call1(_lI_[14],_l__), - _mb_=caml_call1(_lI_[1][4],_ma_) / 86400.; - return _kH_(caml_call1(_lJ_[18],_l$_) + _mb_) - 0.5} - function _lC_(_l7_,_l6_) - {var _l8_=_lA_(_l7_),_l9_=caml_call2(_lI_[26],_l8_[2],_l6_[2]); - return _lB_(caml_call2(_lJ_[38],_l8_[1],_l6_[1]),_l9_)} - function _lD_(_l5_,_l4_){return _lC_(_l5_,_lo_(_l4_))} - function _lE_(_l0_,_lZ_) - {var - _l1_=_lA_(_l0_), - _l2_=_lA_(_lZ_), - _l3_=caml_call2(_lI_[27],_l1_[2],_l2_[2]); - return _lb_([0,caml_call2(_lJ_[39],_l1_[1],_l2_[1]),_l3_])} - function _lF_(_lV_,_lU_) - {var - _lW_=_lA_(_lV_), - _lX_=_lA_(_lU_), - _lY_=caml_call2(_lI_[27],_lW_[2],_lX_[2]); - return _lb_([0,caml_call2(_lJ_[40],_lW_[1],_lX_[1]),_lY_])} - function _lG_(_lQ_,_lP_) - {var _lR_=_lA_(_lQ_),_lS_=_lR_[2],_lT_=_lR_[1],switch$0=0; - if(529348384 <= _lP_) - {if(803994948 === _lP_)switch$0 = 1} - else - if(127686388 <= _lP_)switch$0 = 1; - return switch$0 - ?_lB_(_lT_,caml_call2(_lI_[29],_lS_,_lP_)) - :_lB_(caml_call2(_lJ_[42],_lT_,_lP_),_lS_)} - function _lH_(_lL_,_lK_) - {var _lM_=_lA_(_lL_),_lN_=_lM_[2],_lO_=_lM_[1],switch$0=0; - if(529348384 <= _lK_) - {if(803994948 === _lK_)switch$0 = 1} - else - if(127686388 <= _lK_)switch$0 = 1; - return switch$0 - ?_lB_(_lO_,caml_call2(_lI_[30],_lN_,_lK_)) - :_lB_(caml_call2(_lJ_[43],_lO_,_lK_),_lN_)} - return [0, - _lJ_, - _lI_, - _kN_, - _kO_, - _kM_, - _kP_, - _kQ_, - _kR_, - _kG_, - _kH_, - _kI_, - _kU_, - _kV_, - _kW_, - _kX_, - _kY_, - _kZ_, - _k0_, - _kS_, - _kT_, - _k1_, - _k2_, - _k3_, - _kF_[1], - _kF_[2], - _kF_[3], - _k8_, - _k9_, - _k__, - _k$_, - _la_, - _k5_, - _k4_, - _k7_, - _k6_, - _kJ_, - _kK_, - _kL_, - [0, - _lc_, - _lm_, - _ln_, - _lo_, - _lq_, - _lp_, - _lr_, - _ld_, - _le_, - _lf_, - _lg_, - _lh_, - _li_, - _lj_, - _lk_, - _ll_, - _lt_, - _lu_, - _ls_, - _lv_, - _lx_, - _ly_, - _lz_], - _lC_, - _lE_, - _lF_, - _lD_, - _lG_, - _lH_]}, - _cI_]; - caml_register_global - (216,CalendarLib_Calendar_builder,"CalendarLib.Calendar_builder"); - var - _cJ_= - caml_call1 - (caml_call1(CalendarLib_Calendar_builder[1],CalendarLib_Date), - CalendarLib_Time), - _cK_=_cJ_[1], - _cL_=_cJ_[2], - _cM_=caml_call1(caml_call1(CalendarLib_Calendar_builder[2],_cK_),_cL_), - CalendarLib_Calendar= - [0, - _cK_, - _cL_, - _cJ_[3], - _cJ_[4], - _cJ_[5], - _cJ_[6], - _cJ_[7], - _cJ_[8], - _cJ_[9], - _cJ_[10], - _cJ_[11], - _cJ_[12], - _cJ_[13], - _cJ_[14], - _cJ_[15], - _cJ_[16], - _cJ_[17], - _cJ_[18], - _cJ_[19], - _cJ_[20], - _cJ_[21], - _cJ_[22], - _cJ_[23], - _cJ_[24], - _cJ_[25], - _cJ_[26], - _cJ_[27], - _cJ_[28], - _cJ_[29], - _cJ_[30], - _cJ_[31], - _cJ_[32], - _cJ_[33], - _cJ_[34], - _cJ_[35], - _cJ_[36], - _cJ_[37], - _cJ_[38], - _cJ_[39], - _cJ_[40], - _cJ_[41], - _cJ_[42], - _cJ_[43], - _cJ_[44], - _cJ_[45], - _cM_]; - caml_register_global(217,CalendarLib_Calendar,"CalendarLib.Calendar"); - var - _cN_= - caml_call1 - (caml_call1(CalendarLib_Calendar_builder[1],CalendarLib_Date), - CalendarLib_Ftime), - _cO_=_cN_[1], - _cP_= - caml_call1 - (caml_call1(CalendarLib_Calendar_builder[2],_cO_),CalendarLib_Ftime), - CalendarLib_Fcalendar= - [0, - _cO_, - _cN_[2], - _cN_[3], - _cN_[4], - _cN_[5], - _cN_[6], - _cN_[7], - _cN_[8], - _cN_[9], - _cN_[10], - _cN_[11], - _cN_[12], - _cN_[13], - _cN_[14], - _cN_[15], - _cN_[16], - _cN_[17], - _cN_[18], - _cN_[19], - _cN_[20], - _cN_[21], - _cN_[22], - _cN_[23], - _cN_[24], - _cN_[25], - _cN_[26], - _cN_[27], - _cN_[28], - _cN_[29], - _cN_[30], - _cN_[31], - _cN_[32], - _cN_[33], - _cN_[34], - _cN_[35], - _cN_[36], - _cN_[37], - _cN_[38], - _cN_[39], - _cN_[40], - _cN_[41], - _cN_[42], - _cN_[43], - _cN_[44], - _cN_[45], - _cP_]; - caml_register_global(218,CalendarLib_Fcalendar,"CalendarLib.Fcalendar"); - var - _cQ_= - [0, - function(_kE_) - {switch(_kE_) - {case 0:return cst_Sunday; - case 1:return cst_Monday; - case 2:return cst_Tuesday; - case 3:return cst_Wednesday; - case 4:return cst_Thursday; - case 5:return cst_Friday; - default:return cst_Saturday}}]; - function _cR_(_kD_){return caml_call1(_cQ_[1],_kD_)} - function _cS_(_kz_) - {var _kA_=_cR_(_kz_); - try - {var _kB_=caml_call3(Stdlib_String[15],_kA_,0,3);return _kB_} - catch(_kC_) - {_kC_ = caml_wrap_exception(_kC_); - if(_kC_[1] === Stdlib[6])return _kA_; - throw _kC_}} - var - _cT_= - [0, - function(_ky_) - {switch(_ky_) - {case 0:return cst_January; - case 1:return cst_February; - case 2:return cst_March; - case 3:return cst_April; - case 4:return cst_May; - case 5:return cst_June; - case 6:return cst_July; - case 7:return cst_August; - case 8:return cst_September; - case 9:return cst_October; - case 10:return cst_November; - default:return cst_December}}]; - function _cU_(_kx_){return caml_call1(_cT_[1],_kx_)} - function _cV_(_kt_) - {var _ku_=_cU_(_kt_); - try - {var _kv_=caml_call3(Stdlib_String[15],_ku_,0,3);return _kv_} - catch(_kw_) - {_kw_ = caml_wrap_exception(_kw_); - if(_kw_[1] === Stdlib[6])return _ku_; - throw _kw_}} - function _cW_(_kq_,_kp_,_ko_,_kn_) - {if(0 < _ko_) - {if(_kn_ < 0)caml_call2(Stdlib_Format[23],_kq_,45); - var _ks_=caml_call1(Stdlib[18],_kn_),_kr_=_ko_; - for(;;) - {if(1 === _kr_)return caml_call2(Stdlib_Format[19],_kq_,_ks_); - if(_ks_ < _kr_) - if(1 === _kp_) - caml_call2(Stdlib_Format[23],_kq_,32); - else - if(! _kp_)caml_call2(Stdlib_Format[19],_kq_,0); - var _kr_=_kr_ / 10 | 0; - continue}} - throw [0,Assert_failure,_cX_]} - function _cY_(_kl_) - {var _km_=caml_call2(Stdlib[28],cst_bad_format,_kl_); - throw [0,Stdlib[6],_km_]} - function _cZ_(_ki_,_kh_) - {var - _kj_=caml_call2(Stdlib[28],cst_does_not_match_the_format,_ki_), - _kk_=caml_call2(Stdlib[28],_kh_,_kj_); - throw [0,Stdlib[6],_kk_]} - function _c0_(_kf_,_ke_,_kd_) - {var _kg_=12; - for(;;) - {if(0 === _kg_)return _cZ_(_ke_,_kd_); - if - (caml_string_equal - (caml_call1(_kf_,caml_call1(CalendarLib_Date[36],_kg_)),_kd_)) - return _kg_; - var _kg_=_kg_ - 1 | 0; - continue}} - function _c1_(_kc_) - {var _kb_=7; - for(;;) - {if(0 === _kb_)return _cZ_(cst_A,_kc_); - if - (caml_string_equal(_cS_(caml_call1(CalendarLib_Date[34],_kb_)),_kc_)) - return _kb_; - var _kb_=_kb_ - 1 | 0; - continue}} - var _c2_=[0,caml_call1(Str[1],cst_a_zA_Z)]; - function _c3_(_ka_){_c2_[1] = _ka_;return 0} - function _c4_(_gs_) - {function _gt_(_j8_) - {var - _j9_=caml_obj_tag(_j8_), - _j__= - 250 === _j9_ - ?_j8_[1] - :246 === _j9_?caml_call1(CamlinternalLazy[2],_j8_):_j8_, - _j$_=_j__ % 12 | 0; - return 0 === _j$_?12:_j$_} - function _gu_(_iC_,_iB_,_iA_) - {var - _iD_=caml_ml_string_length(_iC_), - _iE_=[246,function(_j7_){return _cR_(caml_call1(_gs_[7],_iA_))}], - _iF_=[246,function(_j6_){return _cS_(caml_call1(_gs_[7],_iA_))}], - _iG_= - [246, - function(_j4_) - {var _j5_=caml_call1(_gs_[7],_iA_); - return caml_call1(CalendarLib_Date[33],_j5_)}], - _iH_=[246,function(_j3_){return _cU_(caml_call1(_gs_[11],_iA_))}], - _iI_=[246,function(_j2_){return _cV_(caml_call1(_gs_[11],_iA_))}], - _iJ_= - [246, - function(_j0_) - {var _j1_=caml_call1(_gs_[11],_iA_); - return caml_call1(CalendarLib_Date[35],_j1_)}], - _iK_=[246,function(_jZ_){return caml_call1(_gs_[8],_iA_)}], - _iL_=[246,function(_jY_){return caml_call1(_gs_[9],_iA_)}], - _iM_=[246,function(_jX_){return caml_call1(_gs_[10],_iA_)}], - _iN_=[246,function(_jW_){return caml_call1(_gs_[12],_iA_)}], - _iO_= - [246, - function(_jT_) - {var - _jU_=caml_obj_tag(_iN_), - _jV_= - 250 === _jU_ - ?_iN_[1] - :246 === _jU_?caml_call1(CamlinternalLazy[2],_iN_):_iN_; - return _jV_ % 100 | 0}], - _iP_=[246,function(_jS_){return caml_call1(_gs_[13],_iA_)}], - _iQ_=[246,function(_jR_){return caml_call1(_gs_[4],_iA_)}], - _iR_=[246,function(_jQ_){return _gt_(_iQ_)}], - _iS_=[246,function(_jP_){return caml_call1(_gs_[5],_iA_)}], - _iT_=[246,function(_jO_){return caml_call1(_gs_[6],_iA_)}], - _iU_= - [246, - function(_jL_) - {var - _jM_=caml_obj_tag(_iQ_), - _jN_= - 250 === _jM_ - ?_iQ_[1] - :246 === _jM_?caml_call1(CamlinternalLazy[2],_iQ_):_iQ_; - return 12 <= (_jN_ % 24 | 0)?cst_PM:cst_AM}], - _iV_= - [246,function(_jK_){return caml_call1(CalendarLib_Time_Zone[4],0)}], - _iW_=[246,function(_jJ_){return caml_call1(_gs_[14],_iA_)}]; - function _iX_(_jI_){return caml_call2(Stdlib_Format[23],_iB_,_jI_)} - function _iY_(_jF_,_jE_,_jD_) - {var - _jG_=caml_obj_tag(_jD_), - _jH_= - 250 === _jG_ - ?_jD_[1] - :246 === _jG_?caml_call1(CamlinternalLazy[2],_jD_):_jD_; - return _cW_(_iB_,_jF_,_jE_,_jH_)} - function _iZ_(_jz_,_jy_) - {var - _jA_=caml_obj_tag(_jy_), - _jB_= - 250 === _jA_ - ?_jy_[1] - :246 === _jA_?caml_call1(CamlinternalLazy[2],_jy_):_jy_, - _jC_=3 <= _jz_?caml_call1(Stdlib_String[45],_jB_):_jB_; - return caml_call2(Stdlib_Format[13],_iB_,_jC_)} - function _i0_(_jx_,_jw_) - {_iY_(_jx_,10,_jw_); - _iX_(58); - _iY_(_jx_,10,_iS_); - _iX_(58); - return _iY_(_jx_,10,_iT_)} - function _i2_(counter,_i__,_i9_) - {var _ja_=_i__,_i$_=_i9_; - for(;;) - {if(_ja_ <= _iD_) - {if(_ja_ === _iD_)_cY_(_iC_); - var _jb_=caml_string_get(_iC_,_ja_),switch$0=0; - if(49 <= _jb_) - if(94 === _jb_) - var _jc_=3; - else - if(95 === _jb_)var _jc_=1;else switch$0 = 1; - else - if(45 === _jb_) - var _jc_=2; - else - if(48 <= _jb_)var _jc_=0;else switch$0 = 1; - if(switch$0) - {var switch$1=0,_jd_=0; - if(123 <= _jb_) - switch$1 = 1; - else - switch(_jb_) - {case 37:_iX_(37);var _jf_=_jd_;break; - case 58: - try - {var - _jn_=caml_call1(Str[1],cst_z_z_z), - _jo_=caml_call3(Str[7],_jn_,_iC_,_ja_ + 1 | 0), - _jh_=_jo_} - catch(_jv_) - {_jv_ = caml_wrap_exception(_jv_); - if(_jv_ !== Stdlib[8])throw _jv_; - var _jh_=_cY_(_iC_)} - var _ji_=caml_call1(Str[10],_iC_); - if(_jh_ !== (_ja_ + 1 | 0))_cY_(_iC_); - var - _jj_=caml_obj_tag(_iV_), - _jk_= - 250 === _jj_ - ?_iV_[1] - :246 === _jj_?caml_call1(CamlinternalLazy[2],_iV_):_iV_; - if(0 <= _jk_)_iX_(43); - _iY_(_i$_,10,_iV_); - var - _jl_=function(_ju_){_iX_(58);return _cW_(_iB_,0,10,0)}, - _jm_=caml_ml_string_length(_ji_); - if(caml_string_notequal(_ji_,cst_z)) - if(caml_string_notequal(_ji_,cst_z$0)) - {if(caml_string_notequal(_ji_,cst_z$1)) - throw [0,Assert_failure,_c5_]; - _jl_(0)} - else - {_jl_(0);_jl_(0)} - var _jf_=_jm_; - break; - case 65:_iZ_(_i$_,_iE_);var _jf_=_jd_;break; - case 66:_iZ_(_i$_,_iH_);var _jf_=_jd_;break; - case 67:_iY_(_i$_,10,_iP_);var _jf_=_jd_;break; - case 68: - _iY_(_i$_,10,_iJ_); - _iX_(47); - _iY_(_i$_,10,_iK_); - _iX_(47); - _iY_(_i$_,10,_iO_); - var _jf_=_jd_; - break; - case 72:_iY_(_i$_,10,_iQ_);var _jf_=_jd_;break; - case 73:_cW_(_iB_,_i$_,10,_gt_(_iQ_));var _jf_=_jd_;break; - case 77:_iY_(_i$_,10,_iS_);var _jf_=_jd_;break; - case 80: - var - _jp_=caml_obj_tag(_iU_), - _jq_= - 250 === _jp_ - ?_iU_[1] - :246 === _jp_?caml_call1(CamlinternalLazy[2],_iU_):_iU_, - _jr_=caml_call1(Stdlib_String[46],_jq_); - caml_call2(Stdlib_Format[13],_iB_,_jr_); - var _jf_=_jd_; - break; - case 82: - _iY_(_i$_,10,_iQ_); - _iX_(58); - _iY_(_i$_,10,_iS_); - var _jf_=_jd_; - break; - case 83:_iY_(_i$_,10,_iT_);var _jf_=_jd_;break; - case 84:_i0_(_i$_,_iQ_);var _jf_=_jd_;break; - case 89:_iY_(_i$_,1000,_iN_);var _jf_=_jd_;break; - case 97:_iZ_(_i$_,_iF_);var _jf_=_jd_;break; - case 99: - _iZ_(_i$_,_iF_); - _iX_(32); - _iZ_(_i$_,_iI_); - _iX_(32); - _iY_(_i$_,10,_iK_); - _iX_(32); - _i0_(_i$_,_iQ_); - _iX_(32); - _iY_(_i$_,1000,_iN_); - var _jf_=_jd_; - break; - case 100:_iY_(_i$_,10,_iK_);var _jf_=_jd_;break; - case 101:_iY_(1,10,_iK_);var _jf_=_jd_;break; - case 106:_iY_(_i$_,100,_iL_);var _jf_=_jd_;break; - case 107:_iY_(1,10,_iQ_);var _jf_=_jd_;break; - case 108:_cW_(_iB_,1,10,_gt_(_iQ_));var _jf_=_jd_;break; - case 109:_iY_(_i$_,10,_iJ_);var _jf_=_jd_;break; - case 110:_iX_(10);var _jf_=_jd_;break; - case 112:_iZ_(_i$_,_iU_);var _jf_=_jd_;break; - case 114: - _i0_(_i$_,_iR_); - _iX_(32); - _iZ_(_i$_,_iU_); - var _jf_=_jd_; - break; - case 115:_iY_(_i$_,1,_iW_);var _jf_=_jd_;break; - case 116:_iX_(9);var _jf_=_jd_;break; - case 119:_iY_(2,1,_iG_);var _jf_=_jd_;break; - case 121:_iY_(_i$_,10,_iO_);var _jf_=_jd_;break; - case 122: - var - _js_=caml_obj_tag(_iV_), - _jt_= - 250 === _js_ - ?_iV_[1] - :246 === _js_?caml_call1(CamlinternalLazy[2],_iV_):_iV_; - if(0 <= _jt_)_iX_(43); - _iY_(_i$_,10,_iV_); - _cW_(_iB_,0,10,0); - var _jf_=_jd_; - break; - case 98: - case 104:_iZ_(_i$_,_iI_);var _jf_=_jd_;break; - case 70: - case 105: - _iY_(_i$_,1000,_iN_); - _iX_(45); - _iY_(_i$_,10,_iJ_); - _iX_(45); - _iY_(_i$_,10,_iK_); - var _jf_=_jd_; - break; - case 86: - case 87:_iY_(_i$_,10,_iM_);var _jf_=_jd_;break; - default:switch$1 = 1} - if(switch$1) - {var _je_=caml_call2(Stdlib_String[1],1,_jb_); - _cY_(caml_call2(Stdlib[28],cst,_je_)); - var _jf_=_jd_} - var _jg_=(_ja_ + 1 | 0) + _jf_ | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0;return _i1_(counter$0,_jg_)} - return caml_trampoline_return(_i1_,[0,_jg_])} - if(0 !== _i$_)_cY_(_iC_); - var _ja_=_ja_ + 1 | 0,_i$_=_jc_; - continue} - throw [0,Assert_failure,_c6_]}} - function _i1_(counter,_i4_) - {var _i5_=_i4_; - for(;;) - {if(_i5_ <= _iD_) - {if(_i5_ === _iD_)return 0; - var _i6_=caml_string_get(_iC_,_i5_); - if(37 === _i6_) - {var _i8_=_i5_ + 1 | 0,_i7_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return _i2_(counter$0,_i8_,_i7_)} - return caml_trampoline_return(_i2_,[0,_i8_,_i7_])} - caml_call2(Stdlib_Format[23],_iB_,_i6_); - var _i5_=_i5_ + 1 | 0; - continue} - throw [0,Assert_failure,_c7_]}} - (function(_i3_){return caml_trampoline(_i1_(0,_i3_))}(0)); - return caml_call2(Stdlib_Format[38],_iB_,0)} - function _gv_(_ix_) - {var _iy_=Stdlib_Format[109]; - return function(_iz_){return _gu_(_ix_,_iy_,_iz_)}} - var _gw_=_gv_(_gs_[3]); - function _gx_(_iv_,_iu_) - {var _iw_=caml_call1(Stdlib_Buffer[1],15); - _gu_(_iv_,caml_call1(Stdlib_Format[111],_iw_),_iu_); - return caml_call1(Stdlib_Buffer[2],_iw_)} - var _gy_=_gs_[3]; - function _gz_(_it_){return _gx_(_gy_,_it_)} - function _gA_(_gE_,_gD_) - {var - _gF_=[0,0], - _gG_=[0,Stdlib[20]], - _gH_=[0,Stdlib[20]], - _gI_=[0,Stdlib[20]], - _gJ_=[0,Stdlib[20]], - _gK_=[0,Stdlib[20]], - _gL_=[0,0], - _gM_=[0,Stdlib[20]], - _gN_=[0,Stdlib[20]], - _gO_=[0,Stdlib[20]], - _gP_=[0,0], - _gR_=[0,0], - _gS_=caml_ml_string_length(_gE_), - _gT_=caml_ml_string_length(_gD_); - function _gQ_(_in_) - {var _io_=-1 === _gG_[1]?1:0,_ip_=_io_ || (-1 === _gK_[1]?1:0); - if(_ip_) - _cY_(caml_call2(Stdlib[28],_gE_,cst_either_week_or_year_is_not)); - var - _iq_=caml_call1(CalendarLib_Date[34],_gH_[1]), - _ir_=caml_call3(_gs_[2],_gK_[1],_gG_[1],_iq_); - _gK_[1] = caml_call1(_gs_[12],_ir_); - var _is_=caml_call1(_gs_[11],_ir_); - _gJ_[1] = caml_call1(CalendarLib_Date[35],_is_); - _gI_[1] = caml_call1(_gs_[8],_ir_); - return 0} - function _gU_(_ik_) - {var - _il_=_gT_ <= _gR_[1]?1:0, - _im_=_il_ || (caml_string_get(_gD_,_gR_[1]) !== _ik_?1:0); - if(_im_)_cZ_(_gE_,_gD_); - _gR_[1]++; - return 0} - function _gV_(_if_) - {var _ig_=_gR_[1] + _if_ | 0; - if(_gT_ < _ig_)_cZ_(_gE_,_gD_); - try - {var - _ii_= - runtime.caml_int_of_string - (caml_call3(Stdlib_String[15],_gD_,_gR_[1],_if_)), - _ih_=_ii_} - catch(_ij_) - {_ij_ = caml_wrap_exception(_ij_); - if(_ij_[1] !== Stdlib[7])throw _ij_; - var _ih_=_cZ_(_gE_,_gD_)} - _gR_[1] = _ig_; - return _ih_} - function _gW_(_h$_,_h__) - {var _ia_=_h$_?_h$_[1]:_c2_[1]; - try - {var _id_=caml_call3(Str[7],_ia_,_gD_,_gR_[1]),_ib_=_id_} - catch(_ie_) - {_ie_ = caml_wrap_exception(_ie_); - if(_ie_ !== Stdlib[8])throw _ie_; - var _ib_=_cZ_(_gE_,_gD_)} - if(_ib_ !== _gR_[1])_cZ_(_gE_,_gD_); - var _ic_=caml_call1(Str[10],_gD_); - _gR_[1] = _ib_ + caml_ml_string_length(_ic_) | 0; - return _ic_} - var _gX_=caml_call1(Str[1],cst_0_9_0_9_0_9); - function _gY_(_h7_) - {try - {var _h8_=runtime.caml_float_of_string(_gW_([0,_gX_],0)); - return _h8_} - catch(_h9_) - {_h9_ = caml_wrap_exception(_h9_); - if(_h9_[1] === Stdlib[7])return _cZ_(_gE_,_gD_); - throw _h9_}} - function _gZ_(_h6_){_c1_(_gW_(0,0));return 0} - function _g0_(_h5_){_gJ_[1] = _c0_(_cV_,cst_B,_gW_(0,0));return 0} - function _g1_(_h4_){_gI_[1] = _gV_(2);return 0} - function _g2_(_h3_){_gO_[1] = _gV_(2);return 0} - function _g3_(_h2_){_gO_[1] = _gV_(2);return 0} - function _g4_(_h1_){_gJ_[1] = _gV_(2);return 0} - function _g5_(_h0_){_gN_[1] = _gV_(2);return 0} - function _g6_(_hZ_) - {return 0 === _gs_[1][0]?(_gM_[1] = _gV_(2),0):(_gM_[1] = _gY_(0),0)} - function _g7_(_hY_){_gK_[1] = _gV_(4);return 0} - function _g8_(_hV_) - {var _hW_=_gW_([0,caml_call1(Str[1],cst$0)],0); - if(caml_string_notequal(_hW_,cst$1)) - {if(caml_string_notequal(_hW_,cst$2))throw [0,Assert_failure,_c8_]; - var _hX_=1} - else - var _hX_=-1; - _gP_[1] = caml_mul(_hX_,_gV_(2)); - return 0} - function _he_(counter,_hn_) - {if(_hn_ <= _gS_) - {if(_hn_ === _gS_)_cY_(_gE_); - var _hp_=caml_string_get(_gE_,_hn_),switch$0=0,_ho_=0; - if(123 <= _hp_) - switch$0 = 2; - else - {var switch$1=0; - switch(_hp_) - {case 37:_gU_(37);var _hr_=_ho_;switch$1 = 3;break; - case 58: - var _hv_=1,_hu_=_hn_ + 1 | 0; - for(;;) - {var _hw_=caml_string_get(_gE_,_hu_); - if(58 === _hw_) - {if(3 !== _hv_) - {var _hv_=_hv_ + 1 | 0,_hu_=_hu_ + 1 | 0;continue} - var _hy_=_cY_(cst$4)} - else - if(122 === _hw_) - var _hy_=_hv_; - else - var - _hx_=caml_call2(Stdlib_String[1],1,_hw_), - _hy_=_cY_(caml_call2(Stdlib[28],cst$5,_hx_)); - var - _hz_=caml_call2(Stdlib_String[1],_hy_,58), - _hA_=caml_call2(Stdlib[28],_hz_,cst_z$2); - _g8_(0); - var _hB_=function(_hU_){_gU_(58);_gV_(2);return 0}; - if(caml_string_notequal(_hA_,cst_z$3)) - if(caml_string_notequal(_hA_,cst_z$4)) - {if(caml_string_notequal(_hA_,cst_z$5)) - throw [0,Assert_failure,_c9_]; - _hB_(0)} - else - {_hB_(0);_hB_(0)} - var _hr_=_hy_; - switch$1 = 3; - break} - break; - case 65:_c1_(_gW_(0,0));var _hr_=_ho_;switch$1 = 3;break; - case 66: - _gJ_[1] = _c0_(_cU_,cst_b,_gW_(0,0)); - var _hr_=_ho_; - switch$1 = 3; - break; - case 67:_gV_(2);var _hr_=_ho_;switch$1 = 3;break; - case 68:_g4_(0);_gU_(47);_g1_(0);_gU_(47);break; - case 72:_g2_(0);var _hr_=_ho_;switch$1 = 3;break; - case 73:_g3_(0);var _hr_=_ho_;switch$1 = 3;break; - case 77:_g5_(0);var _hr_=_ho_;switch$1 = 3;break; - case 80: - var _hC_=_gW_(0,0); - if(caml_string_notequal(_hC_,cst_am)) - if(caml_string_notequal(_hC_,cst_pm)) - {var _hD_=caml_call2(Stdlib[28],_hC_,cst$6); - _cZ_(cst_P,caml_call2(Stdlib[28],cst$7,_hD_))} - else - _gL_[1] = 12; - else - _gL_[1] = 0; - var _hr_=_ho_; - switch$1 = 3; - break; - case 82: - _g2_(0);_gU_(58);_g5_(0);var _hr_=_ho_;switch$1 = 3;break; - case 83:_g6_(0);var _hr_=_ho_;switch$1 = 3;break; - case 84: - _g2_(0); - _gU_(58); - _g5_(0); - _gU_(58); - _g6_(0); - var _hr_=_ho_; - switch$1 = 3; - break; - case 86:var _hE_=cst_V;switch$1 = 1;break; - case 87:var _hE_=cst_W;switch$1 = 1;break; - case 89:_g7_(0);var _hr_=_ho_;switch$1 = 3;break; - case 97:_gZ_(0);var _hr_=_ho_;switch$1 = 3;break; - case 99: - _gZ_(0); - _gU_(32); - _g0_(0); - _gU_(32); - _g1_(0); - _gU_(32); - _g2_(0); - _gU_(58); - _g5_(0); - _gU_(58); - _g6_(0); - _gU_(32); - _g7_(0); - var _hr_=_ho_; - switch$1 = 3; - break; - case 100:_g1_(0);var _hr_=_ho_;switch$1 = 3;break; - case 106: - var - _hI_=_gV_(3), - _hJ_=_hI_ < 1?1:0, - _hK_=_hJ_ || (366 < _hI_?1:0); - if(_hK_)_cZ_(cst_j,caml_call1(Stdlib[33],_hI_)); - var _hL_=_gF_[1]; - _gF_[1] - = - [0, - function(_hR_) - {if(-1 === _gK_[1])_cY_(cst_j_year_not_provided); - var - _hS_=caml_call2(CalendarLib_Date[10],_gK_[1],_hI_), - _hT_=caml_call1(CalendarLib_Date[16],_hS_); - _gJ_[1] = caml_call1(CalendarLib_Date[35],_hT_); - _gI_[1] = caml_call1(CalendarLib_Date[13],_hS_); - return 0}, - _hL_]; - var _hr_=_ho_; - switch$1 = 3; - break; - case 109:_g4_(0);var _hr_=_ho_;switch$1 = 3;break; - case 110:_gU_(10);var _hr_=_ho_;switch$1 = 3;break; - case 112:switch$1 = 2;break; - case 114: - _g3_(0); - _gU_(58); - _g5_(0); - _gU_(58); - _g6_(0); - _gU_(32); - switch$1 = 2; - break; - case 116:_gU_(9);var _hr_=_ho_;switch$1 = 3;break; - case 119: - var - _hO_=_gV_(1), - _hP_=_hO_ < 1?1:0, - _hQ_=_hP_ || (7 < _hO_?1:0); - if(_hQ_)_cZ_(cst_w,caml_call1(Stdlib[33],_hO_)); - _gH_[1] = _hO_; - _gF_[1] = [0,_gQ_,_gF_[1]]; - var _hr_=_ho_; - switch$1 = 3; - break; - case 121:break; - case 122:_g8_(0);_gV_(2);var _hr_=_ho_;switch$1 = 3;break; - case 98: - case 104:_g0_(0);var _hr_=_ho_;switch$1 = 3;break; - case 70: - case 105: - _g7_(0); - _gU_(45); - _g4_(0); - _gU_(45); - _g1_(0); - var _hr_=_ho_; - switch$1 = 3; - break; - default:switch$0 = 2;switch$1 = 3} - switch(switch$1) - {case 3:break; - case 0: - _gK_[1] = _gV_(2) + 1900 | 0; - var _hs_=_ho_; - switch$0 = 1; - break; - case 1: - var - _hF_=_gV_(2), - _hG_=_hF_ < 1?1:0, - _hH_=_hG_ || (53 < _hF_?1:0); - if(_hH_)_cZ_(_hE_,caml_call1(Stdlib[33],_hF_)); - _gG_[1] = _hF_; - var _hs_=_ho_; - switch$0 = 1; - break; - default: - var _hM_=_gW_(0,0); - if(caml_string_notequal(_hM_,cst_AM$0)) - if(caml_string_notequal(_hM_,cst_PM$0)) - {var _hN_=caml_call2(Stdlib[28],_hM_,cst$8); - _cZ_(cst_p,caml_call2(Stdlib[28],cst$9,_hN_))} - else - _gL_[1] = 12; - else - _gL_[1] = 0; - var _hs_=_ho_; - switch$0 = 1}} - var switch$2=0; - switch(switch$0) - {case 2: - var _hq_=caml_call2(Stdlib_String[1],1,_hp_); - _cY_(caml_call2(Stdlib[28],cst$3,_hq_)); - var _hr_=_ho_; - break; - case 0:break; - default:switch$2 = 1} - if(! switch$2)var _hs_=_hr_; - var _ht_=(_hn_ + 1 | 0) + _hs_ | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0;return _hd_(counter$0,_ht_)} - return caml_trampoline_return(_hd_,[0,_ht_])} - throw [0,Assert_failure,_c__]} - function _hd_(counter,_hi_) - {var _hj_=_hi_; - for(;;) - {if(_hj_ <= _gS_) - {if(_hj_ === _gS_) - {var _hk_=_gR_[1] !== _gT_?1:0; - return _hk_?_cZ_(_gE_,_gD_):_hk_} - var _hl_=caml_string_get(_gE_,_hj_); - if(37 === _hl_) - {var _hm_=_hj_ + 1 | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0;return _he_(counter$0,_hm_)} - return caml_trampoline_return(_he_,[0,_hm_])} - _gU_(_hl_); - var _hj_=_hj_ + 1 | 0; - continue} - throw [0,Assert_failure,_c$_]}} - (function(_hh_){return caml_trampoline(_hd_(0,_hh_))}(0)); - var _g9_=_gF_[1]; - function _g__(_hg_){return caml_call1(_hg_,0)} - caml_call2(Stdlib_List[17],_g__,_g9_); - function _g$_(_hf_) - {return caml_call5 - (_hf_, - _gK_[1], - _gJ_[1], - _gI_[1], - (_gO_[1] + _gL_[1] | 0) + _gP_[1] | 0, - _gN_[1])} - var _ha_=_gs_[1]; - if(0 === _ha_[0]) - {var _hb_=caml_call1(CalendarLib_Utils[2][5],_gM_[1]); - return caml_call1(_g$_(_ha_[1]),_hb_)} - var _hc_=_gM_[1]; - return caml_call1(_g$_(_ha_[1]),_hc_)} - var _gB_=_gs_[3]; - return [0, - _gt_, - _gu_, - _gv_, - _gw_, - _gx_, - _gz_, - _gA_, - function(_gC_){return _gA_(_gB_,_gC_)}]} - function _da_(_gm_,_gl_) - {var _gn_=Stdlib[20]; - function _go_(_gr_){return _gn_ === _gr_?1:0} - var _gp_=caml_call2(Stdlib_List[33],_go_,_gl_); - if(_gp_) - {var _gq_=caml_call2(Stdlib[28],cst_Cannot_create_the,_gm_); - throw [0,Stdlib[6],_gq_]} - return _gp_} - var - _dc_=CalendarLib_Date[17], - _db_=CalendarLib_Date[3], - _dd_=CalendarLib_Date[50], - _de_= - [0, - function(_gk_,_gj_,_gi_,_gh_,_gg_,_gf_) - {_da_(cst_date,[0,_gk_,[0,_gj_,[0,_gi_,0]]]); - return caml_call3(_db_,_gk_,_gj_,_gi_)}]; - function _df_(_ge_){return _cY_(cst_hour)} - function _dg_(_gd_){return _cY_(cst_minute)} - function _dh_(_gc_){return _cY_(cst_second)} - function _di_(_gb_){return caml_call1(_dd_,caml_call1(_dc_,_gb_))} - function _dj_(_ga_){return _cY_(cst_seconds_since_1970)} - var - _dk_= - _c4_ - ([0, - _de_, - CalendarLib_Date[32], - cst_i, - _df_, - _dg_, - _dh_, - CalendarLib_Date[12], - CalendarLib_Date[13], - CalendarLib_Date[14], - CalendarLib_Date[15], - CalendarLib_Date[16], - _dc_, - _di_, - _dj_]), - _dl_=CalendarLib_Time[2], - _dm_= - [0, - function(_f$_,_f__,_f9_,_f8_,_f7_,_f6_) - {_da_(cst_time,[0,_f8_,[0,_f7_,[0,_f6_,0]]]); - return caml_call3(_dl_,_f8_,_f7_,_f6_)}]; - function _dn_(_f5_,_f4_,_f3_){return _cY_(cst_from_business)} - function _do_(_f2_){return _cY_(cst_day_of_week)} - function _dp_(_f1_){return _cY_(cst_day_of_month)} - function _dq_(_f0_){return _cY_(cst_day_of_year)} - function _dr_(_fZ_){return _cY_(cst_week)} - function _ds_(_fY_){return _cY_(cst_month)} - function _dt_(_fX_){return _cY_(cst_year)} - function _du_(_fW_){return _cY_(cst_century)} - function _dv_(_fV_){return _cY_(cst_seconds_since_1970$0)} - var - _dw_= - _c4_ - ([0, - _dm_, - _dn_, - cst_T, - CalendarLib_Time[11], - CalendarLib_Time[12], - CalendarLib_Time[13], - _do_, - _dp_, - _dq_, - _dr_, - _ds_, - _dt_, - _du_, - _dv_]), - _dx_=CalendarLib_Ftime[1], - _dy_=CalendarLib_Ftime[2], - _dz_=CalendarLib_Ftime[13], - _dA_= - [1, - function(_fU_,_fT_,_fS_,_fR_,_fQ_,_fP_) - {_da_ - (cst_time$0, - [0,_fR_,[0,_fQ_,[0,caml_call1(CalendarLib_Utils[2][5],_fP_),0]]]); - return caml_call3(_dy_,_fR_,_fQ_,_fP_)}]; - function _dB_(_fN_) - {var _fO_=caml_call1(_dz_,_fN_);return caml_call1(_dx_[3],_fO_)} - function _dC_(_fM_,_fL_,_fK_){return _cY_(cst_from_business$0)} - function _dD_(_fJ_){return _cY_(cst_day_of_week$0)} - function _dE_(_fI_){return _cY_(cst_day_of_month$0)} - function _dF_(_fH_){return _cY_(cst_day_of_year$0)} - function _dG_(_fG_){return _cY_(cst_week$0)} - function _dH_(_fF_){return _cY_(cst_month$0)} - function _dI_(_fE_){return _cY_(cst_year$0)} - function _dJ_(_fD_){return _cY_(cst_century$0)} - function _dK_(_fC_){return _cY_(cst_seconds_since_1970$1)} - var - _dL_= - _c4_ - ([0, - _dA_, - _dC_, - cst_T$0, - CalendarLib_Ftime[11], - CalendarLib_Ftime[12], - _dB_, - _dD_, - _dE_, - _dF_, - _dG_, - _dH_, - _dI_, - _dJ_, - _dK_]), - _dM_=CalendarLib_Calendar[46], - _dN_=_dM_[1], - _dO_=_dM_[2], - _dQ_=_dM_[18], - _dP_=_dM_[3], - _dR_=_dM_[36], - _dS_=_dM_[39], - _dT_=_dM_[41]; - function _dU_(_fB_,_fA_,_fz_,_fy_,_fx_,_fw_) - {_da_ - (cst_calendar,[0,_fB_,[0,_fA_,[0,_fz_,[0,_fy_,[0,_fx_,[0,_fw_,0]]]]]]); - return caml_call6(_dP_,_fB_,_fA_,_fz_,_fy_,_fx_,_fw_)} - function _dV_(_fv_,_fu_,_ft_) - {return caml_call1(_dR_,caml_call3(_dN_[32],_fv_,_fu_,_ft_))} - function _dW_(_fr_) - {var _fs_=caml_call1(_dQ_,_fr_);return caml_call1(_dN_[50],_fs_)} - function _dX_(_fn_) - {var - _fo_=caml_call2(_dT_,_fn_,_dU_(1970,1,1,0,0,0)), - _fp_=caml_call1(_dS_[21],_fo_), - _fq_=caml_call1(_dO_[25][16],_fp_); - return caml_call1(_dO_[1][3],_fq_)} - var - _dY_= - _c4_ - ([0, - [0,_dU_], - _dV_, - cst_i_T, - _dM_[21], - _dM_[22], - _dM_[23], - _dM_[13], - _dM_[14], - _dM_[15], - _dM_[16], - _dM_[17], - _dQ_, - _dW_, - _dX_]), - _dZ_=CalendarLib_Calendar[1], - _d0_=CalendarLib_Calendar[2], - _d2_=CalendarLib_Calendar[18], - _d1_=CalendarLib_Calendar[3], - _d3_=CalendarLib_Calendar[36], - _d4_=CalendarLib_Calendar[39], - _d5_=CalendarLib_Calendar[41]; - function _d6_(_fm_,_fl_,_fk_,_fj_,_fi_,_fh_) - {_da_ - (cst_calendar$0, - [0,_fm_,[0,_fl_,[0,_fk_,[0,_fj_,[0,_fi_,[0,_fh_,0]]]]]]); - return caml_call6(_d1_,_fm_,_fl_,_fk_,_fj_,_fi_,_fh_)} - function _d7_(_fg_,_ff_,_fe_) - {return caml_call1(_d3_,caml_call3(_dZ_[32],_fg_,_ff_,_fe_))} - function _d8_(_fc_) - {var _fd_=caml_call1(_d2_,_fc_);return caml_call1(_dZ_[50],_fd_)} - function _d9_(_e__) - {var - _e$_=caml_call2(_d5_,_e__,_d6_(1970,1,1,0,0,0)), - _fa_=caml_call1(_d4_[21],_e$_), - _fb_=caml_call1(_d0_[25][16],_fa_); - return caml_call1(_d0_[1][3],_fb_)} - var - _d__= - _c4_ - ([0, - [0,_d6_], - _d7_, - cst_i_T$0, - CalendarLib_Calendar[21], - CalendarLib_Calendar[22], - CalendarLib_Calendar[23], - CalendarLib_Calendar[13], - CalendarLib_Calendar[14], - CalendarLib_Calendar[15], - CalendarLib_Calendar[16], - CalendarLib_Calendar[17], - _d2_, - _d8_, - _d9_]), - _d$_=CalendarLib_Fcalendar[46], - _ea_=_d$_[1], - _eb_=_d$_[2], - _ed_=_d$_[18], - _ec_=_d$_[3], - _ee_=_d$_[23], - _ef_=_d$_[36], - _eg_=_d$_[39], - _eh_=_d$_[41]; - function _ei_(_e9_,_e8_,_e7_,_e6_,_e5_,_e4_) - {_da_ - (cst_calendar$1, - [0, - _e9_, - [0, - _e8_, - [0, - _e7_, - [0,_e6_,[0,_e5_,[0,caml_call1(CalendarLib_Utils[2][5],_e4_),0]]]]]]); - return caml_call6(_ec_,_e9_,_e8_,_e7_,_e6_,_e5_,_e4_)} - function _ej_(_e3_,_e2_,_e1_) - {return caml_call1(_ef_,caml_call3(_ea_[32],_e3_,_e2_,_e1_))} - function _ek_(_eZ_) - {var _e0_=caml_call1(_ee_,_eZ_);return caml_call1(_eb_[1][3],_e0_)} - function _el_(_eX_) - {var _eY_=caml_call1(_ed_,_eX_);return caml_call1(_ea_[50],_eY_)} - function _em_(_eT_) - {var - _eU_=caml_call2(_eh_,_eT_,_ei_(1970,1,1,0,0,0.)), - _eV_=caml_call1(_eg_[21],_eU_), - _eW_=caml_call1(_eb_[25][16],_eV_); - return caml_call1(_eb_[1][3],_eW_)} - var - _en_= - _c4_ - ([0, - [1,_ei_], - _ej_, - cst_i_T$1, - _d$_[21], - _d$_[22], - _ek_, - _d$_[13], - _d$_[14], - _d$_[15], - _d$_[16], - _d$_[17], - _ed_, - _el_, - _em_]), - _eo_=CalendarLib_Fcalendar[1], - _ep_=CalendarLib_Fcalendar[2], - _er_=CalendarLib_Fcalendar[18], - _eq_=CalendarLib_Fcalendar[3], - _es_=CalendarLib_Fcalendar[23], - _et_=CalendarLib_Fcalendar[36], - _eu_=CalendarLib_Fcalendar[39], - _ev_=CalendarLib_Fcalendar[41]; - function _ew_(_eS_,_eR_,_eQ_,_eP_,_eO_,_eN_) - {_da_ - (cst_calendar$2, - [0, - _eS_, - [0, - _eR_, - [0, - _eQ_, - [0,_eP_,[0,_eO_,[0,caml_call1(CalendarLib_Utils[2][5],_eN_),0]]]]]]); - return caml_call6(_eq_,_eS_,_eR_,_eQ_,_eP_,_eO_,_eN_)} - function _ex_(_eM_,_eL_,_eK_) - {return caml_call1(_et_,caml_call3(_eo_[32],_eM_,_eL_,_eK_))} - function _ey_(_eI_) - {var _eJ_=caml_call1(_es_,_eI_);return caml_call1(_ep_[1][3],_eJ_)} - function _ez_(_eG_) - {var _eH_=caml_call1(_er_,_eG_);return caml_call1(_eo_[50],_eH_)} - function _eA_(_eC_) - {var - _eD_=caml_call2(_ev_,_eC_,_ew_(1970,1,1,0,0,0.)), - _eE_=caml_call1(_eu_[21],_eD_), - _eF_=caml_call1(_ep_[25][16],_eE_); - return caml_call1(_ep_[1][3],_eF_)} - var - _eB_= - _c4_ - ([0, - [1,_ew_], - _ex_, - cst_i_T$2, - CalendarLib_Fcalendar[21], - CalendarLib_Fcalendar[22], - _ey_, - CalendarLib_Fcalendar[13], - CalendarLib_Fcalendar[14], - CalendarLib_Fcalendar[15], - CalendarLib_Fcalendar[16], - CalendarLib_Fcalendar[17], - _er_, - _ez_, - _eA_]), - CalendarLib_Printer= - [0, - _cQ_, - _cR_, - _cS_, - _cT_, - _cU_, - _cV_, - _c3_, - [0,_dk_[2],_dk_[3],_dk_[4],_dk_[5],_dk_[6],_dk_[7],_dk_[8]], - [0,_dk_[2],_dk_[3],_dk_[4],_dk_[5],_dk_[6],_dk_[7],_dk_[8]], - [0,_dw_[2],_dw_[3],_dw_[4],_dw_[5],_dw_[6],_dw_[7],_dw_[8]], - [0,_dw_[2],_dw_[3],_dw_[4],_dw_[5],_dw_[6],_dw_[7],_dw_[8]], - [0,_dL_[2],_dL_[3],_dL_[4],_dL_[5],_dL_[6],_dL_[7],_dL_[8]], - [0,_dY_[2],_dY_[3],_dY_[4],_dY_[5],_dY_[6],_dY_[7],_dY_[8]], - [0,_d__[2],_d__[3],_d__[4],_d__[5],_d__[6],_d__[7],_d__[8]], - [0,_d__[2],_d__[3],_d__[4],_d__[5],_d__[6],_d__[7],_d__[8]], - [0,_en_[2],_en_[3],_en_[4],_en_[5],_en_[6],_en_[7],_en_[8]], - [0,_eB_[2],_eB_[3],_eB_[4],_eB_[5],_eB_[6],_eB_[7],_eB_[8]]]; - caml_register_global(225,CalendarLib_Printer,"CalendarLib.Printer"); - var CalendarLib_Version=[0,cst_2_04,cst_dim_15_mai_2022_16_04_18_C]; - caml_register_global(226,CalendarLib_Version,"CalendarLib.Version"); - var - CalendarLib= - [0, - 0, - 0, - 0, - 0, - CalendarLib_Utils, - CalendarLib_Time_Zone, - CalendarLib_Time, - CalendarLib_Ftime, - CalendarLib_Date, - CalendarLib_Calendar_builder, - CalendarLib_Calendar, - CalendarLib_Fcalendar, - CalendarLib_Printer, - CalendarLib_Version]; - caml_register_global(227,CalendarLib,"CalendarLib"); - return} - (globalThis)); - - -//# 1 "../../.js/zarith/zarith.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_div=runtime.caml_div, - caml_equal=runtime.caml_equal, - caml_int64_to_float=runtime.caml_int64_to_float, - caml_ldexp_float=runtime.caml_ldexp_float, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_mul=runtime.caml_mul, - caml_register_global=runtime.caml_register_global, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - var - global_data=runtime.caml_get_global_data(), - cst_1_12=caml_string_of_jsbytes("1.12"), - cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"), - cst_Z_log2=caml_string_of_jsbytes("Z.log2"), - cst_Z_signed_extract_negative_= - caml_string_of_jsbytes("Z.signed_extract: negative bit offset"), - cst_Z_signed_extract_nonpositi= - caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"), - cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"), - cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"), - cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"), - cst_d=caml_string_of_jsbytes("%d"), - cst$0=caml_string_of_jsbytes(""), - cst_inf$1=caml_string_of_jsbytes("+inf"), - cst_inf$2=caml_string_of_jsbytes("-inf"), - cst_inf$3=caml_string_of_jsbytes("inf"), - cst_undef$0=caml_string_of_jsbytes("undef"), - cst_Q_of_string_invalid_digit= - caml_string_of_jsbytes("Q.of_string: invalid digit"), - cst_impossible_case$0=caml_string_of_jsbytes("impossible case"), - cst_impossible_case=caml_string_of_jsbytes("impossible case"), - cst_0=caml_string_of_jsbytes("0"), - cst_inf=caml_string_of_jsbytes("+inf"), - cst_inf$0=caml_string_of_jsbytes("-inf"), - cst_undef=caml_string_of_jsbytes("undef"), - cst=caml_string_of_jsbytes("/"), - cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"), - cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"), - cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"), - cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"), - cst_power_big_int_positive_big= - caml_string_of_jsbytes("power_big_int_positive_big_int"), - cst_power_int_positive_big_int= - caml_string_of_jsbytes("power_int_positive_big_int"), - cst_power_big_int_positive_int= - caml_string_of_jsbytes("power_big_int_positive_int"), - cst_power_int_positive_int= - caml_string_of_jsbytes("power_int_positive_int"), - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib=global_data.Stdlib, - Stdlib_Sys=global_data.Stdlib__Sys, - Stdlib_Callback=global_data.Stdlib__Callback, - Stdlib_String=global_data.Stdlib__String, - Assert_failure=global_data.Assert_failure, - Zarith_version=[0,cst_1_12]; - caml_register_global(33,Zarith_version,"Zarith_version"); - var _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)]; - runtime.ml_z_init(0); - caml_call2(Stdlib_Callback[2],cst_ml_z_overflow,_a_); - var - _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _aV_=[0,caml_string_of_jsbytes("q.ml"),486,25]; - function _b_(_gZ_) - {if(typeof _gZ_ === "number" && _gZ_ !== Stdlib[20])return - _gZ_ | 0; - return runtime.ml_z_neg(_gZ_)} - function _c_(_gX_,_gW_) - {if(typeof _gX_ === "number" && typeof _gW_ === "number") - {var _gY_=_gX_ + _gW_ | 0; - return 0 <= ((_gY_ ^ _gX_) & (_gY_ ^ _gW_)) - ?_gY_ - :runtime.ml_z_add(_gX_,_gW_)} - return runtime.ml_z_add(_gX_,_gW_)} - function _d_(_gU_,_gT_) - {if(typeof _gU_ === "number" && typeof _gT_ === "number") - {var _gV_=_gU_ - _gT_ | 0; - return 0 <= ((_gU_ ^ _gT_) & (_gV_ ^ _gU_)) - ?_gV_ - :runtime.ml_z_sub(_gU_,_gT_)} - return runtime.ml_z_sub(_gU_,_gT_)} - function _e_(_gS_,_gR_) - {if - (typeof _gS_ - === - "number" - && - typeof _gR_ - === - "number" - && - ! - runtime.ml_z_mul_overflows(_gS_,_gR_)) - return caml_mul(_gS_,_gR_); - return runtime.ml_z_mul(_gS_,_gR_)} - function _f_(_gQ_,_gP_) - {return typeof _gP_ === "number" - ?-1 === _gP_ - ?_b_(_gQ_) - :typeof _gQ_ === "number" - ?caml_div(_gQ_,_gP_) - :runtime.ml_z_div(_gQ_,_gP_) - :runtime.ml_z_div(_gQ_,_gP_)} - function _g_(_gO_,_gN_) - {return typeof _gN_ === "number" - ?-1 === _gN_ - ?0 - :typeof _gO_ === "number" - ?runtime.caml_mod(_gO_,_gN_) - :runtime.ml_z_rem(_gO_,_gN_) - :runtime.ml_z_rem(_gO_,_gN_)} - function _h_(_gM_,_gL_) - {return typeof _gL_ === "number" - ?-1 === _gL_ - ?_b_(_gM_) - :typeof _gM_ === "number" - ?caml_div(_gM_,_gL_) - :runtime.ml_z_divexact(_gM_,_gL_) - :runtime.ml_z_divexact(_gM_,_gL_)} - function _i_(_gK_) - {if(typeof _gK_ === "number" && _gK_ !== Stdlib[19])return _gK_ + 1 | 0; - return runtime.ml_z_succ(_gK_)} - function _j_(_gJ_) - {if(typeof _gJ_ === "number" && _gJ_ !== Stdlib[20])return _gJ_ - 1 | 0; - return runtime.ml_z_pred(_gJ_)} - function _k_(_gI_) - {return typeof _gI_ === "number" - ?0 <= _gI_ - ?_gI_ - :_gI_ !== Stdlib[20]?- _gI_ | 0:runtime.ml_z_abs(_gI_) - :runtime.ml_z_abs(_gI_)} - function _l_(_gH_,_gG_) - {if(typeof _gH_ === "number" && typeof _gG_ === "number") - return _gH_ & _gG_; - return runtime.ml_z_logand(_gH_,_gG_)} - function _m_(_gF_,_gE_) - {if(typeof _gF_ === "number" && typeof _gE_ === "number") - return _gF_ | _gE_; - return runtime.ml_z_logor(_gF_,_gE_)} - function _n_(_gD_,_gC_) - {if(typeof _gD_ === "number" && typeof _gC_ === "number") - return _gD_ ^ _gC_; - return runtime.ml_z_logxor(_gD_,_gC_)} - function _o_(_gB_) - {return typeof _gB_ === "number"?_gB_ ^ -1:runtime.ml_z_lognot(_gB_)} - function _p_(_gz_,_gy_) - {if(typeof _gz_ === "number" && 0 <= _gy_ && _gy_ < Stdlib_Sys[9]) - {var _gA_=_gz_ << _gy_; - return _gA_ >> _gy_ === _gz_?_gA_:runtime.ml_z_shift_left(_gz_,_gy_)} - return runtime.ml_z_shift_left(_gz_,_gy_)} - function _q_(_gw_,_gv_) - {if(typeof _gw_ === "number" && 0 <= _gv_) - {var _gx_=_gv_ < Stdlib_Sys[9]?_gv_:Stdlib_Sys[9] - 1 | 0; - return _gw_ >> _gx_} - return runtime.ml_z_shift_right(_gw_,_gv_)} - function _r_(_gu_,_gt_) - {if(typeof _gu_ === "number" && 0 <= _gt_) - return Stdlib_Sys[9] <= _gt_ - ?0 - :0 <= _gu_?_gu_ >>> _gt_ | 0:- ((- _gu_ | 0) >>> _gt_ | 0) | 0; - return runtime.ml_z_shift_right_trunc(_gu_,_gt_)} - function _s_(_gs_) - {return typeof _gs_ === "number"?_gs_:runtime.ml_z_to_int(_gs_)} - var _t_=0,_u_=1,_v_=-1; - function _w_(_gr_,_gq_) - {return 0 < runtime.ml_z_compare(_gr_,_gq_)?_gq_:_gr_} - function _x_(_gp_,_go_) - {return 0 <= runtime.ml_z_compare(_gp_,_go_)?_gp_:_go_} - function _y_(_gn_,_gm_){return runtime.ml_z_compare(_gn_,_gm_) <= 0?1:0} - function _z_(_gl_,_gk_){return 0 <= runtime.ml_z_compare(_gl_,_gk_)?1:0} - function _A_(_gj_,_gi_){return runtime.ml_z_compare(_gj_,_gi_) < 0?1:0} - function _B_(_gh_,_gg_){return 0 < runtime.ml_z_compare(_gh_,_gg_)?1:0} - function _C_(_gf_){return runtime.ml_z_format(cst_d,_gf_)} - function _D_(_ge_) - {return runtime.ml_z_of_substring_base - (0,_ge_,0,caml_ml_string_length(_ge_))} - function _E_(_gb_,_gc_,_gd_) - {return runtime.ml_z_of_substring_base(0,_gb_,_gc_,_gd_)} - function _F_(_ga_,_f$_) - {return runtime.ml_z_of_substring_base - (_ga_,_f$_,0,caml_ml_string_length(_f$_))} - function _G_(_f5_,_f4_) - {var _f6_=runtime.ml_z_div_rem(_f5_,_f4_),_f7_=_f6_[2],_f8_=_f6_[1]; - if(0 <= runtime.ml_z_sign(_f7_))return [0,_f8_,_f7_]; - if(0 <= runtime.ml_z_sign(_f4_)) - {var _f9_=_c_(_f7_,_f4_);return [0,_j_(_f8_),_f9_]} - var _f__=_d_(_f7_,_f4_); - return [0,_i_(_f8_),_f__]} - function _H_(_f3_,_f2_) - {return 0 <= runtime.ml_z_sign(_f2_) - ?runtime.ml_z_fdiv(_f3_,_f2_) - :runtime.ml_z_cdiv(_f3_,_f2_)} - function _I_(_f0_,_fZ_) - {var _f1_=_g_(_f0_,_fZ_); - return 0 <= runtime.ml_z_sign(_f1_)?_f1_:_c_(_f1_,_k_(_fZ_))} - function _J_(_fR_,_fQ_) - {var - _fS_=runtime.ml_z_sign(_fR_), - _fT_=runtime.ml_z_sign(_fQ_), - _fU_=_fS_ + 1 | 0; - if(! (2 < _fU_ >>> 0)) - switch(_fU_) - {case 0:if(0 === _fT_)return [0,_b_(_fR_),_v_,_t_];break; - case 1: - var _fY_=_fT_ + 1 | 0; - if(! (2 < _fY_ >>> 0)) - switch(_fY_) - {case 0:return [0,_b_(_fQ_),_t_,_v_]; - case 1:return [0,_t_,_t_,_t_]; - default:return [0,_fQ_,_t_,_u_]} - break; - default:if(0 === _fT_)return [0,_fR_,_u_,_t_]} - var - _fV_=runtime.ml_z_gcdext_intern(_fR_,_fQ_), - _fW_=_fV_[2], - _fX_=_fV_[1]; - return _fV_[3] - ?[0,_fX_,_fW_,_f_(_d_(_fX_,_e_(_fR_,_fW_)),_fQ_)] - :[0,_fX_,_f_(_d_(_fX_,_e_(_fQ_,_fW_)),_fR_),_fW_]} - function _K_(_fP_,_fO_) - {if(! caml_equal(_fP_,_t_) && ! caml_equal(_fO_,_t_)) - return _k_(_e_(_h_(_fP_,runtime.ml_z_gcd(_fP_,_fO_)),_fO_)); - return _t_} - function _L_(_fN_,_fM_) - {return 0 <= _fM_ - ?runtime.ml_z_testbit(_fN_,_fM_) - :caml_call1(Stdlib[1],cst_Z_testbit)} - function _M_(_fL_){return runtime.ml_z_testbit(_fL_,0)} - function _N_(_fK_){return 1 - runtime.ml_z_testbit(_fK_,0)} - function _O_(_fJ_,_fI_,_fH_) - {if(_fI_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_); - if(_fH_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi); - return _L_(_fJ_,(_fI_ + _fH_ | 0) - 1 | 0) - ?_o_(runtime.ml_z_extract(_o_(_fJ_),_fI_,_fH_)) - :runtime.ml_z_extract(_fJ_,_fI_,_fH_)} - function _P_(_fG_) - {return 0 < runtime.ml_z_sign(_fG_) - ?runtime.ml_z_numbits(_fG_) - 1 | 0 - :caml_call1(Stdlib[1],cst_Z_log2)} - function _Q_(_fF_) - {return 0 < runtime.ml_z_sign(_fF_) - ?runtime.ml_z_numbits(_j_(_fF_)) - :caml_call1(Stdlib[1],cst_Z_log2up)} - function _R_(_fC_,_fB_) - {var - _fD_=runtime.ml_z_to_int64(_fC_), - _fE_=_fB_?_fD_:runtime.caml_int64_or(_fD_,_S_); - return caml_int64_to_float(_fE_)} - function _T_(_fx_) - {if(typeof _fx_ === "number")return _fx_; - var _fy_=runtime.ml_z_numbits(_fx_); - if(63 < _fy_) - {var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_); - return caml_ldexp_float - (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)} - return caml_int64_to_float(runtime.ml_z_to_int64(_fx_))} - function _U_(_fv_){var _fw_=_C_(_fv_);return caml_call1(Stdlib[42],_fw_)} - function _V_(_ft_,_fs_) - {var _fu_=_C_(_fs_);return caml_call2(Stdlib[66],_ft_,_fu_)} - function _W_(_fr_,_fq_){return _C_(_fq_)} - function _X_(_fo_,_fn_) - {var _fp_=_C_(_fn_);return caml_call2(Stdlib_Buffer[16],_fo_,_fp_)} - function _Y_(_fl_,_fk_) - {var _fm_=_C_(_fk_);return caml_call2(Stdlib_Format[13],_fl_,_fm_)} - function _Z_(_fj_){return _fj_} - function ___(_fi_,_fh_){return runtime.ml_z_equal(_fi_,_fh_)} - var - Z= - [0, - _a_, - _t_, - _u_, - _v_, - _D_, - _E_, - _F_, - _i_, - _j_, - _k_, - _b_, - _c_, - _d_, - _e_, - _f_, - _g_, - _G_, - _H_, - _I_, - _h_, - _l_, - _m_, - _n_, - _o_, - _p_, - _q_, - _r_, - _L_, - _s_, - _T_, - _C_, - _U_, - _V_, - _W_, - _X_, - _Y_, - _y_, - _z_, - _A_, - _B_, - _w_, - _x_, - _N_, - _M_, - _J_, - _K_, - _P_, - _Q_, - _O_, - _b_, - _Z_, - _c_, - _d_, - _e_, - _f_, - _h_, - _g_, - _l_, - _m_, - _n_, - _o_, - _p_, - _q_, - [0, - ___, - _A_, - _B_, - _y_, - _z_, - function(_fg_,_ff_){return 1 - runtime.ml_z_equal(_fg_,_ff_)}], - cst_1_12, - _R_]; - caml_register_global(39,Z,"Z"); - function _$_(_fc_,_fb_) - {if(_fc_ !== 0 && _fb_ !== 1) - {var _fd_=runtime.ml_z_gcd(_fc_,_fb_); - if(_fd_ === 1)return [0,_fc_,_fb_]; - var _fe_=_h_(_fb_,_fd_); - return [0,_h_(_fc_,_fd_),_fe_]} - return [0,_fc_,_u_]} - function _aa_(_e__,_e9_) - {var _e$_=runtime.ml_z_sign(_e9_); - if(0 === _e$_)return [0,runtime.ml_z_sign(_e__),_t_]; - if(0 < _e$_)return _$_(_e__,_e9_); - var _fa_=_b_(_e9_); - return _$_(_b_(_e__),_fa_)} - function _ab_(_e8_){return [0,_e8_,_u_]} - function _ac_(_e7_){return _ab_(_e7_)} - function _ad_(_e6_){return _ab_(runtime.ml_z_of_int32(_e6_))} - function _ae_(_e5_){return _ab_(runtime.ml_z_of_int64(_e5_))} - function _af_(_e4_){return _ab_(runtime.ml_z_of_nativeint(_e4_))} - function _ag_(_e3_,_e2_){return _aa_(_e3_,_e2_)} - var - _ah_=_ab_(_t_), - _ai_=_ab_(_u_), - _ak_=[0,_u_,_t_], - _al_=[0,_v_,_t_], - _am_=[0,_t_,_t_], - _aj_=_ab_(_v_); - function _an_(_eY_) - {if(_eY_ == Stdlib[22])return _ak_; - if(_eY_ == Stdlib[23])return _al_; - if(4 === runtime.caml_classify_float(_eY_))return _am_; - var - _eZ_=runtime.caml_frexp_float(_eY_), - _e0_=_eZ_[2] - 53 | 0, - _e1_=runtime.ml_z_of_float(caml_ldexp_float(_eZ_[1],53)); - return 0 <= _e0_?_ab_(_p_(_e1_,_e0_)):_$_(_e1_,_p_(_u_,- _e0_ | 0))} - function _ao_(_eW_) - {if(_eW_[2] === 0) - {var _eX_=runtime.ml_z_sign(_eW_[1]) + 1 | 0; - if(! (2 < _eX_ >>> 0)) - switch(_eX_){case 0:return 2;case 1:break;default:return 1} - return 3} - return _eW_[1] === 0?0:4} - function _ap_(_eV_){return _eV_[2] !== 0?1:0} - function _aq_(_eU_){return _eU_[1]} - function _ar_(_eT_){return _eT_[2]} - function _as_(_eS_){return runtime.ml_z_sign(_eS_[1])} - function _at_(_eO_,_eN_) - {var _eP_=runtime.ml_z_equal(_eO_[1],_eN_[1]); - if(_eP_) - var - _eQ_=runtime.ml_z_equal(_eO_[2],_eN_[2]), - _eR_=_eQ_?3 !== _ao_(_eO_)?1:0:_eQ_; - else - var _eR_=_eP_; - return _eR_} - function _au_(_eH_,_eG_) - {var _eI_=_ao_(_eH_),_eJ_=_ao_(_eG_),switch$0=0; - switch(_eI_) - {case 1: - var _eM_=_eJ_ - 1 | 0; - if(! (2 < _eM_ >>> 0)) - switch(_eM_) - {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} - break; - case 2: - if(1 === _eJ_) - switch$0 = 1; - else - if(_eJ_) - switch(_eJ_ - 2 | 0) - {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2} - break; - case 3:if(3 !== _eJ_)return -1;switch$0 = 2;break; - default:switch$0 = 1} - var switch$1=0; - switch(switch$0) - {case 1: - var _eK_=_eJ_ - 1 | 0; - if(! (2 < _eK_ >>> 0)) - switch(_eK_) - {case 0:switch$1 = 1;break;case 1:break;default:return 1} - break; - case 0:break; - default:return 0} - if(! switch$1) - {var switch$2=0; - if(! (4 <= _eI_)) - switch(_eI_) - {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2} - var switch$3=0; - switch(switch$2) - {case 0: - if(2 !== _eJ_) - {if(caml_equal(_eH_[2],_eG_[2])) - return runtime.ml_z_compare(_eH_[1],_eG_[1]); - var _eL_=_e_(_eG_[1],_eH_[2]); - return runtime.ml_z_compare(_e_(_eH_[1],_eG_[2]),_eL_)} - switch$3 = 1; - break; - case 1:break; - default:switch$3 = 1} - if(switch$3)return 1} - return -1} - function _av_(_eF_,_eE_){return 0 < _au_(_eF_,_eE_)?_eE_:_eF_} - function _aw_(_eD_,_eC_){return 0 <= _au_(_eD_,_eC_)?_eD_:_eC_} - function _ax_(_ex_,_ew_) - {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_); - if(3 !== _ey_) - {var _eA_=_ez_ - 1 | 0,switch$0=0; - if(! (2 < _eA_ >>> 0)) - switch(_eA_) - {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} - var switch$1=0; - switch(switch$0) - {case 0: - var switch$2=0; - if(! (4 <= _ey_)) - switch(_ey_) - {case 0:break; - case 2:switch$1 = 1;switch$2 = 2;break; - default:switch$2 = 1} - var switch$3=0; - switch(switch$2) - {case 2:switch$3 = 1;break; - case 0: - if(2 !== _ez_) - {if(caml_equal(_ex_[2],_ew_[2]))return _y_(_ex_[1],_ew_[1]); - var _eB_=_e_(_ew_[1],_ex_[2]); - return _y_(_e_(_ex_[1],_ew_[2]),_eB_)} - break - } - if(! switch$3)return 0; - break; - case 1:break; - default:switch$1 = 1} - if(switch$1)return 1} - return 0} - function _ay_(_es_,_er_) - {var _et_=_ao_(_es_),_eu_=_ao_(_er_); - if(3 !== _et_) - {var switch$0=0; - if(2 <= _eu_) - switch(_eu_ - 2 | 0) - {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2} - var switch$1=0; - switch(switch$0) - {case 0: - var switch$2=0; - if(! (4 <= _et_)) - switch(_et_) - {case 0:break; - case 1:switch$1 = 1;switch$2 = 2;break; - default:switch$2 = 1} - var switch$3=0; - switch(switch$2) - {case 2:switch$3 = 1;break; - case 0: - if(1 !== _eu_) - {if(caml_equal(_es_[2],_er_[2]))return _A_(_es_[1],_er_[1]); - var _ev_=_e_(_er_[1],_es_[2]); - return _A_(_e_(_es_[1],_er_[2]),_ev_)} - break - } - if(! switch$3)return 1; - break; - case 1:break; - default:switch$1 = 1} - if(switch$1)return 0} - return 0} - function _az_(_eq_,_ep_){return _ax_(_ep_,_eq_)} - function _aA_(_eo_,_en_){return _ay_(_en_,_eo_)} - function _aB_(_ej_) - {switch(_ao_(_ej_)) - {case 0:return cst_0; - case 1:return cst_inf; - case 2:return cst_inf$0; - case 3:return cst_undef; - default: - if(runtime.ml_z_equal(_ej_[2],1))return _C_(_ej_[1]); - var - _ek_=_C_(_ej_[2]), - _el_=caml_call2(Stdlib[28],cst,_ek_), - _em_=_C_(_ej_[1]); - return caml_call2(Stdlib[28],_em_,_el_)}} - function _aC_(_ei_){return _f_(_ei_[1],_ei_[2])} - function _aD_(_eh_){return _s_(_aC_(_eh_))} - function _aE_(_eg_){return runtime.ml_z_to_int32(_aC_(_eg_))} - function _aF_(_ef_){return runtime.ml_z_to_int64(_aC_(_ef_))} - function _aG_(_ee_){return runtime.ml_z_to_nativeint(_aC_(_ee_))} - function _aH_(_dZ_) - {switch(_ao_(_dZ_)) - {case 0:return 0.; - case 1:return Stdlib[22]; - case 2:return Stdlib[23]; - case 3:return Stdlib[24]; - default: - var - _d0_=_dZ_[1], - _d1_=_dZ_[2], - _d2_=runtime.ml_z_numbits(_d0_), - _d3_=runtime.ml_z_numbits(_d1_); - if(! (53 < _d2_) && ! (53 < _d3_)) - {var _ed_=caml_int64_to_float(runtime.ml_z_to_int64(_d1_)); - return caml_int64_to_float(runtime.ml_z_to_int64(_d0_)) / _ed_} - var _d4_=0 <= runtime.ml_z_sign(_d0_)?1:-1,_d5_=_d2_ - _d3_ | 0; - if(0 <= _d5_) - var _d7_=_p_(_d1_,_d5_),_d6_=_d0_; - else - var _d7_=_d1_,_d6_=_p_(_d0_,- _d5_ | 0); - if(_z_(_k_(_d6_),_d7_)) - var _d9_=_d5_,_d8_=_d6_; - else - var _d9_=_d5_ - 1 | 0,_d8_=_p_(_d6_,1); - var _d__=_G_(_p_(_d8_,54),_d7_); - if(-1080 < _d9_) - {var - _d$_=-1023 < _d9_?_t_:_p_(_d4_,55 + (-1023 - _d9_ | 0) | 0), - _ea_=_c_(_d$_,_d__[1]), - _eb_=0 === runtime.ml_z_sign(_d__[2])?_ea_:_m_(_u_,_ea_), - _ec_=_T_(_eb_); - return caml_ldexp_float(_ec_ - _T_(_d$_),_d9_ - 54 | 0)} - return caml_ldexp_float(_d4_,-1080)}} - function _aI_(_dX_){var _dY_=_dX_[2];return [0,_b_(_dX_[1]),_dY_]} - function _aJ_(_dV_){var _dW_=_dV_[2];return [0,_k_(_dV_[1]),_dW_]} - function _aK_(_dR_,_dQ_,_dP_) - {if(_dQ_[2] === _dP_[2]) - {var _dS_=_dQ_[2];return _$_(caml_call2(_dR_,_dQ_[1],_dP_[1]),_dS_)} - var _dT_=_e_(_dQ_[2],_dP_[2]),_dU_=_e_(_dP_[1],_dQ_[2]); - return _$_(caml_call2(_dR_,_e_(_dQ_[1],_dP_[2]),_dU_),_dT_)} - function _aL_(_dM_,_dL_) - {if(_dM_[2] !== 0 && _dL_[2] !== 0)return _aK_(_c_,_dM_,_dL_); - var _dN_=_ao_(_dM_),_dO_=_ao_(_dL_),switch$0=0; - switch(_dN_) - {case 0:return _dL_; - case 1: - switch(_dO_) - {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} - break; - case 2: - switch(_dO_) - {case 2:switch$0 = 2;break; - case 1:switch$0 = 3;break; - case 4:switch$0 = 4;break - } - break; - case 4: - switch(_dO_) - {case 4:return caml_call1(Stdlib[2],cst_impossible_case); - case 0: - case 3:break; - default:switch$0 = 2} - break - } - var switch$1=0; - switch(switch$0) - {case 0:if(3 === _dO_)switch$1 = 1;else if(! _dO_)return _dM_;break; - case 1:break; - case 2:switch$1 = 2 <= _dO_?3:2;break; - case 3:return _am_; - default:switch$1 = 3} - var switch$2=0; - switch(switch$1) - {case 0:if(! (3 <= _dN_))switch$2 = 1;break; - case 1:break; - case 2:switch$2 = 1;break; - default:return _al_} - return switch$2?_ak_:_am_} - function _aM_(_dI_,_dH_) - {if(_dI_[2] !== 0 && _dH_[2] !== 0)return _aK_(_d_,_dI_,_dH_); - var _dJ_=_ao_(_dI_),_dK_=_ao_(_dH_),switch$0=0; - switch(_dJ_) - {case 0:return _aI_(_dH_); - case 1: - switch(_dK_) - {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} - break; - case 2: - switch(_dK_) - {case 1:switch$0 = 2;break; - case 2:switch$0 = 3;break; - case 4:switch$0 = 4;break - } - break; - case 4: - switch(_dK_) - {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0); - case 0: - case 3:break; - default:switch$0 = 2} - break - } - var switch$1=0; - switch(switch$0) - {case 0:if(3 === _dK_)switch$1 = 1;else if(! _dK_)return _dI_;break; - case 1:break; - case 2:switch$1 = 2 <= _dK_?2:3;break; - case 3:return _am_; - default:switch$1 = 3} - var switch$2=0; - switch(switch$1) - {case 0:if(! (3 <= _dJ_))switch$2 = 1;break; - case 1:break; - case 2:switch$2 = 1;break; - default:return _al_} - return switch$2?_ak_:_am_} - function _aN_(_dE_,_dD_) - {if(_dE_[2] !== 0 && _dD_[2] !== 0) - {var _dG_=_e_(_dE_[2],_dD_[2]);return _$_(_e_(_dE_[1],_dD_[1]),_dG_)} - var _dF_=runtime.ml_z_sign(_dD_[1]); - return [0,caml_mul(runtime.ml_z_sign(_dE_[1]),_dF_),_t_]} - function _aO_(_dA_) - {var _dB_=runtime.ml_z_sign(_dA_[1]) + 1 | 0; - if(! (2 < _dB_ >>> 0)) - switch(_dB_) - {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_]; - case 1:break; - default:return [0,_dA_[2],_dA_[1]]} - return _dA_[2] === 0?_am_:_ak_} - function _aP_(_dy_,_dx_) - {if(0 <= runtime.ml_z_sign(_dx_[1])) - return _aN_(_dy_,[0,_dx_[2],_dx_[1]]); - var _dz_=_b_(_dx_[1]); - return _aN_(_dy_,[0,_b_(_dx_[2]),_dz_])} - function _aQ_(_dv_,_du_) - {if(_dv_[2] === 0)return _dv_; - var _dw_=_dv_[2]; - return _$_(_p_(_dv_[1],_du_),_dw_)} - function _aR_(_ds_,_dr_) - {if(_ds_[2] === 0)return _ds_; - var _dt_=_p_(_ds_[2],_dr_); - return _$_(_ds_[1],_dt_)} - function _aS_(_dq_) - {switch(_dq_) - {case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}} - function _aT_(_do_,_dn_,_dm_,_dl_) - {var _dp_=_dn_; - for(;;) - {if(_dm_ <= _dp_)return 0; - if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_]; - var _dp_=_dp_ + 1 | 0; - continue}} - function _aU_(_cy_) - {if(caml_string_notequal(_cy_,cst$0)) - {if(caml_string_notequal(_cy_,cst_inf$1)) - {if(! caml_string_notequal(_cy_,cst_inf$2))return _al_; - if(caml_string_notequal(_cy_,cst_inf$3)) - {if(caml_string_notequal(_cy_,cst_undef$0)) - try - {var - _dc_=caml_call2(Stdlib_String[35],_cy_,47), - _dd_= - runtime.ml_z_of_substring_base - (0, - _cy_, - _dc_ + 1 | 0, - (caml_ml_string_length(_cy_) - _dc_ | 0) - 1 | 0), - _de_=_aa_(runtime.ml_z_of_substring_base(0,_cy_,0,_dc_),_dd_); - return _de_} - catch(_df_) - {_df_ = caml_wrap_exception(_df_); - if(_df_ === Stdlib[8]) - {var _cA_=caml_ml_string_length(_cy_),_cz_=0; - if(_cA_ < 1) - var _cB_=[0,0,_cz_]; - else - {var _c$_=caml_string_get(_cy_,0) - 43 | 0,switch$0=0; - if(! (2 < _c$_ >>> 0)) - {var switch$1=0; - switch(_c$_) - {case 0:var _db_=[0,0,1];break; - case 1:switch$1 = 1;break; - default:var _db_=[0,1,1]} - if(! switch$1){var _da_=_db_;switch$0 = 1}} - if(! switch$0)var _da_=[0,0,_cz_]; - var _cB_=_da_} - var _cC_=_cB_[2]; - if(_cA_ < (_cC_ + 2 | 0)) - var _cD_=[0,2,_cC_]; - else - {var - _c8_=caml_string_get(_cy_,_cC_), - _c9_=caml_string_get(_cy_,_cC_ + 1 | 0), - switch$2=0; - if(48 === _c8_) - {var switch$3=0; - if(89 <= _c9_) - {if(98 === _c9_) - switch$3 = 2; - else - if(111 === _c9_) - switch$3 = 1; - else - if(120 !== _c9_){switch$2 = 1;switch$3 = 3}} - else - if(66 === _c9_) - switch$3 = 2; - else - if(79 === _c9_) - switch$3 = 1; - else - if(! (88 <= _c9_)){switch$2 = 1;switch$3 = 3} - switch(switch$3) - {case 3:break; - case 0:var _c__=[0,3,_cC_ + 2 | 0];break; - case 1:var _c__=[0,1,_cC_ + 2 | 0];break; - default:var _c__=[0,0,_cC_ + 2 | 0]}} - else - switch$2 = 1; - if(switch$2)var _c__=[0,2,_cC_]; - var _cD_=_c__} - var - _cE_=_cD_[2], - _cF_=_cD_[1], - _cG_= - 2 === _cF_ - ?function(_di_) - {if(69 !== _di_ && 101 !== _di_)return 0;return 1} - :3 <= _cF_ - ?function(_dj_) - {if(80 !== _dj_ && 112 !== _dj_)return 0;return 1} - :function(_dk_){return 0}, - _cH_=_aT_(_cy_,_cE_,_cA_,_cG_); - if(_cH_) - var - _cI_=_cH_[1], - _cJ_=_cI_ + 1 | 0, - _cL_=_cI_, - _cK_= - _s_ - (runtime.ml_z_of_substring_base - (10,_cy_,_cJ_,_cA_ - _cJ_ | 0)); - else - var _cL_=_cA_,_cK_=0; - if(2 <= _cF_) - {var - _cM_= - _aT_(_cy_,_cE_,_cL_,function(_dh_){return 46 === _dh_?1:0}); - if(_cM_) - {var _cN_=_cM_[1]; - if(2 === _cF_) - var _cO_=1; - else - {if(! (3 <= _cF_))throw [0,Assert_failure,_aV_];var _cO_=4} - var _cQ_=_cN_ + 1 | 0,_cR_=_cL_ - 1 | 0,_cP_=0; - if(_cR_ < _cQ_) - var _cS_=_cP_; - else - {var _c4_=_cQ_,_c3_=_cP_; - for(;;) - {var _c5_=caml_string_get(_cy_,_c4_),switch$4=0; - if(71 <= _c5_) - {if(97 <= _c5_) - {if(! (103 <= _c5_))switch$4 = 1} - else - if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}} - else - if(58 <= _c5_) - {if(65 <= _c5_)switch$4 = 1} - else - if(48 <= _c5_)switch$4 = 1; - switch(switch$4) - {case 0: - caml_call1(Stdlib[1],cst_Q_of_string_invalid_digit); - var _c6_=_c3_; - break; - case 1:var _c6_=_c3_ + 1 | 0;break - } - var _c7_=_c4_ + 1 | 0; - if(_cR_ !== _c4_){var _c4_=_c7_,_c3_=_c6_;continue} - var _cS_=_c6_; - break}} - var - _cT_= - _aT_ - (_cy_, - _cN_ + 1 | 0, - _cL_, - function(_dg_){return 95 !== _dg_?1:0}), - _cU_=_cT_?_cT_[1]:_cL_, - _cV_=caml_call3(Stdlib_String[15],_cy_,_cU_,_cL_ - _cU_ | 0), - _cW_=caml_call3(Stdlib_String[15],_cy_,_cE_,_cN_ - _cE_ | 0), - _cX_=caml_call2(Stdlib[28],_cW_,_cV_), - _cZ_=caml_mul(_cS_,_cO_), - _cY_=_F_(_aS_(_cF_),_cX_)} - else - var - _cZ_=0, - _cY_= - runtime.ml_z_of_substring_base - (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0)} - else - var - _cZ_=0, - _cY_= - runtime.ml_z_of_substring_base - (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0); - var - _c0_=_cK_ - _cZ_ | 0, - _c1_=2 === _cF_?10:3 <= _cF_?2:1, - _c2_= - 0 <= _c0_ - ?_ab_(_e_(_cY_,runtime.ml_z_pow(_c1_,_c0_))) - :_aa_(_cY_,runtime.ml_z_pow(_c1_,- _c0_ | 0)); - return _cB_[1]?_aI_(_c2_):_c2_} - throw _df_} - return _am_}} - return _ak_} - return _ah_} - function _aW_(_cw_) - {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)} - function _aX_(_cu_,_ct_) - {var _cv_=_aB_(_ct_);return caml_call2(Stdlib[66],_cu_,_cv_)} - function _aY_(_cs_,_cr_){return _aB_(_cr_)} - function _aZ_(_cp_,_co_) - {var _cq_=_aB_(_co_);return caml_call2(Stdlib_Buffer[16],_cp_,_cq_)} - function _a0_(_cm_,_cl_) - {var _cn_=_aB_(_cl_);return caml_call2(Stdlib_Format[13],_cm_,_cn_)} - function _a1_(_ck_){return _ck_} - var - Q= - [0, - _aa_, - _ah_, - _ai_, - _aj_, - _ak_, - _al_, - _am_, - _ab_, - _ac_, - _ad_, - _ae_, - _af_, - _ag_, - _an_, - _aU_, - _aq_, - _ar_, - _ao_, - _ap_, - _as_, - _au_, - _at_, - _av_, - _aw_, - _ax_, - _az_, - _ay_, - _aA_, - _aC_, - _aD_, - _aE_, - _aF_, - _aG_, - _aB_, - _aH_, - _aI_, - _aJ_, - _aL_, - _aM_, - _aN_, - _aO_, - _aP_, - _aQ_, - _aR_, - _aW_, - _aX_, - _aY_, - _aZ_, - _a0_, - _aI_, - _a1_, - _aL_, - _aM_, - _aN_, - _aP_, - _aQ_, - _aR_, - _ac_, - _ag_, - _ab_, - _aa_, - _at_, - _ay_, - _aA_, - _ax_, - _az_, - function(_cj_,_ci_){return 1 - _at_(_cj_,_ci_)}]; - caml_register_global(42,Q,"Q"); - function _a2_(_ch_,_cg_){return _c_(_ch_,_cg_)} - function _a3_(_cf_,_ce_){return _e_(_cf_,_ce_)} - function _a4_(_cd_){return _e_(_cd_,_cd_)} - function _a5_(_cc_){return runtime.ml_z_sqrt(_cc_)} - function _a6_(_cb_,_ca_){return runtime.ml_z_gcd(_cb_,_ca_)} - function _a7_(_b$_,_b__){return runtime.ml_z_pow(_b$_,_b__)} - function _a8_(_b9_,_b8_){return runtime.ml_z_pow(_b9_,_s_(_b8_))} - function _a9_(_b7_,_b6_) - {if(_b6_ < 0)throw [0,Stdlib[6],cst_power_int_positive_int]; - return runtime.ml_z_pow(_b7_,_b6_)} - function _a__(_b5_,_b4_) - {if(_b4_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int]; - return runtime.ml_z_pow(_b5_,_b4_)} - function _a$_(_b3_,_b2_) - {if(runtime.ml_z_sign(_b2_) < 0) - throw [0,Stdlib[6],cst_power_int_positive_big_int]; - return _a8_(_b3_,_b2_)} - function _ba_(_b1_,_b0_) - {if(runtime.ml_z_sign(_b0_) < 0) - throw [0,Stdlib[6],cst_power_big_int_positive_big]; - return _a8_(_b1_,_b0_)} - function _bb_(_bZ_){return runtime.ml_z_sign(_bZ_)} - function _bc_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_)} - function _bd_(_bW_,_bV_){return runtime.ml_z_equal(_bW_,_bV_)} - function _be_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) <= 0?1:0} - function _bf_(_bS_,_bR_){return 0 <= runtime.ml_z_compare(_bS_,_bR_)?1:0} - function _bg_(_bQ_,_bP_){return runtime.ml_z_compare(_bQ_,_bP_) < 0?1:0} - function _bh_(_bO_,_bN_){return 0 < runtime.ml_z_compare(_bO_,_bN_)?1:0} - function _bi_(_bM_){return runtime.ml_z_size(_bM_)} - function _bj_(_bL_){return _bL_} - function _bk_(_bK_){return runtime.ml_z_fits_int(_bK_)} - function _bl_(_bH_) - {try - {var _bI_=_s_(_bH_);return _bI_} - catch(_bJ_) - {_bJ_ = caml_wrap_exception(_bJ_); - if(_bJ_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int); - throw _bJ_}} - function _bm_(_bG_){return runtime.ml_z_of_int32(_bG_)} - function _bn_(_bF_){return runtime.ml_z_of_nativeint(_bF_)} - function _bo_(_bE_){return runtime.ml_z_of_int64(_bE_)} - function _bp_(_bB_) - {try - {var _bC_=runtime.ml_z_to_int32(_bB_);return _bC_} - catch(_bD_) - {_bD_ = caml_wrap_exception(_bD_); - if(_bD_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int); - throw _bD_}} - function _bq_(_by_) - {try - {var _bz_=runtime.ml_z_to_nativeint(_by_);return _bz_} - catch(_bA_) - {_bA_ = caml_wrap_exception(_bA_); - if(_bA_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int); - throw _bA_}} - function _br_(_bv_) - {try - {var _bw_=runtime.ml_z_to_int64(_bv_);return _bw_} - catch(_bx_) - {_bx_ = caml_wrap_exception(_bx_); - if(_bx_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int); - throw _bx_}} - var - Big_int_Z= - [0, - _t_, - _u_, - _b_, - _k_, - _c_, - _i_, - _a2_, - _d_, - _j_, - _e_, - _a3_, - _a4_, - _a5_, - _G_, - _H_, - _I_, - _a6_, - _a7_, - _a8_, - _a9_, - _a__, - _a$_, - _ba_, - _bb_, - _bc_, - _bd_, - _be_, - _bf_, - _bg_, - _bh_, - _x_, - _w_, - _bi_, - _C_, - _D_, - _bj_, - _bk_, - _bl_, - _bm_, - _bn_, - _bo_, - _bp_, - _bq_, - _br_, - _T_, - _l_, - _m_, - _n_, - _p_, - _q_, - _r_, - function(_bu_,_bt_,_bs_){return runtime.ml_z_extract(_bu_,_bt_,_bs_)}]; - caml_register_global(43,Big_int_Z,"Big_int_Z"); - return} - (globalThis)); - - -//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" -(function(globalThis) - {"use strict"; - var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; - runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js"); - return} - (globalThis)); - - -//# 1 "../../.js/easy-format/easy_format.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - var - global_data=runtime.caml_get_global_data(), - cst$1=caml_string_of_jsbytes(" "), - cst$2=caml_string_of_jsbytes(" "), - cst$3=caml_string_of_jsbytes(" "), - cst$4=caml_string_of_jsbytes(" "), - cst$5=caml_string_of_jsbytes(" "), - cst$6=caml_string_of_jsbytes(" "), - cst$7=caml_string_of_jsbytes(" "), - cst$8=caml_string_of_jsbytes(" "), - cst$0=caml_string_of_jsbytes(""), - cst=caml_string_of_jsbytes(""), - atom=[0,0], - list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0], - label=[0,726666127,1,2,0], - list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0], - list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0], - label_true=[0,726666127,1,2,0], - label_false=[0,726666127,0,2,0], - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib=global_data.Stdlib, - Stdlib_String=global_data.Stdlib__String, - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")], - _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")]; - function set_escape(fmt,escape) - {var - match=caml_call2(Stdlib_Format[98],fmt,0), - flush0=match[2], - print0=match[1], - tagf0=caml_call2(Stdlib_Format[153],fmt,0), - is_tag=[0,0]; - function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)} - function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)} - function print(s,p,n) - {return is_tag[1] - ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0) - :caml_call4(escape,print0,s,p,n)} - var tagf=[0,mot,mct,tagf0[3],tagf0[4]]; - caml_call3(Stdlib_Format[96],fmt,print,flush0); - return caml_call2(Stdlib_Format[151],fmt,tagf)} - function define_styles(fmt,escape$0,l) - {if(0 !== l) - {caml_call2(Stdlib_Format[84],fmt,1); - var - _R_=2 * caml_call1(Stdlib_List[1],l) | 0, - tbl1=caml_call2(Stdlib_Hashtbl[1],0,_R_), - _S_=2 * caml_call1(Stdlib_List[1],l) | 0, - tbl2=caml_call2(Stdlib_Hashtbl[1],0,_S_), - _T_= - function(param) - {var style=param[2],style_name=param[1]; - caml_call3(Stdlib_Hashtbl[5],tbl1,style_name,style[1]); - return caml_call3(Stdlib_Hashtbl[5],tbl2,style_name,style[2])}; - caml_call2(Stdlib_List[17],_T_,l); - var - mark_open_tag= - function(style_name) - {try - {var _X_=caml_call2(Stdlib_Hashtbl[6],tbl1,style_name); - return _X_} - catch(_Y_) - {_Y_ = caml_wrap_exception(_Y_); - if(_Y_ === Stdlib[8])return cst; - throw _Y_}}, - mark_close_tag= - function(style_name) - {try - {var _V_=caml_call2(Stdlib_Hashtbl[6],tbl2,style_name); - return _V_} - catch(_W_) - {_W_ = caml_wrap_exception(_W_); - if(_W_ === Stdlib[8])return cst$0; - throw _W_}}, - _U_=caml_call2(Stdlib_Format[153],fmt,0), - tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]]; - caml_call2(Stdlib_Format[151],fmt,tagf)} - if(typeof escape$0 === "number")return 0; - if(258914209 <= escape$0[1]) - {var esc=escape$0[2];return set_escape(fmt,esc)} - var esc$0=escape$0[2]; - function escape(print,s,p,n) - {var s0=caml_call3(Stdlib_String[15],s,p,n),s1=caml_call1(esc$0,s0); - return caml_call3(print,s1,0,caml_ml_string_length(s1))} - return set_escape(fmt,escape)} - function pp_open_xbox(fmt,p,indent) - {var _Q_=p[8]; - if(451368025 <= _Q_) - {if(! (736550845 <= _Q_))return caml_call2(Stdlib_Format[7],fmt,indent)} - else - if(379096626 <= _Q_)return caml_call2(Stdlib_Format[5],fmt,0); - return caml_call2(Stdlib_Format[9],fmt,indent)} - function extra_box(p,l) - {var _M_=p[8]; - if(379096626 <= _M_) - var wrap=922275930 <= _M_?1:0; - else - var - _P_=function(param){return 0 === param[0]?1:0}, - wrap=caml_call2(Stdlib_List[32],_P_,l); - if(wrap) - {var _N_=function(fmt){return caml_call2(Stdlib_Format[3],fmt,0)}; - return [0, - function(fmt){return caml_call2(Stdlib_Format[11],fmt,0)}, - _N_]} - function _O_(param){return 0} - return [0,function(param){return 0},_O_]} - function open_tag(fmt,param) - {if(param){var s=param[1];return caml_call2(Stdlib_Format[147],fmt,s)} - return 0} - function close_tag(fmt,param) - {return param?caml_call2(Stdlib_Format[149],fmt,0):0} - function tag_string(fmt,o,s) - {if(o) - {var tag=o[1]; - caml_call2(Stdlib_Format[147],fmt,tag); - caml_call2(Stdlib_Format[13],fmt,s); - return caml_call2(Stdlib_Format[149],fmt,0)} - return caml_call2(Stdlib_Format[13],fmt,s)} - function fprint_opt_label(fmt,param) - {if(param) - {var match=param[1],lp=match[2],lab=match[1]; - open_tag(fmt,lp[4]); - fprint_t(fmt,lab); - close_tag(fmt,lp[4]); - var _L_=lp[2]; - return _L_?caml_call2(Stdlib_Format[13],fmt,cst$3):_L_} - return 0} - function fprint_list_body_stick_left(fmt,p,sep,hd,tl) - {open_tag(fmt,p[12]); - fprint_t(fmt,hd); - function _K_(x) - {if(p[3])caml_call2(Stdlib_Format[13],fmt,cst$1); - tag_string(fmt,p[13],sep); - if(p[2]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - return fprint_t(fmt,x)} - caml_call2(Stdlib_List[17],_K_,tl); - return close_tag(fmt,p[12])} - function fprint_t(fmt,param) - {switch(param[0]) - {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s); - case 1: - var l=param[2],param$0=param[1],p$0=param$0[4]; - open_tag(fmt,p$0[10]); - if(p$0[7]) - fprint_list(fmt,0,param$0,l); - else - {var _C_=param$0[4],_D_=param$0[3],_E_=param$0[2],_F_=param$0[1]; - if(l) - {var tl=l[2],hd=l[1]; - tag_string(fmt,_C_[11],_F_); - if(_C_[1])caml_call2(Stdlib_Format[13],fmt,cst$6); - var _z_=_C_[8],indent=0; - if(379096626 === _z_) - caml_call2(Stdlib_Format[5],fmt,0); - else - if(736550845 <= _z_) - if(922275930 <= _z_) - caml_call2(Stdlib_Format[11],fmt,indent); - else - caml_call2(Stdlib_Format[9],fmt,indent); - else - if(-921200850 <= _z_) - caml_call2(Stdlib_Format[7],fmt,indent); - else - {var _A_=function(param){return 0 === param[0]?1:0}; - if(caml_call2(Stdlib_List[32],_A_,l)) - caml_call2(Stdlib_Format[11],fmt,indent); - else - caml_call2(Stdlib_Format[9],fmt,indent)} - if(_C_[4]) - fprint_list_body_stick_left(fmt,_C_,_E_,hd,tl); - else - {open_tag(fmt,_C_[12]); - fprint_t(fmt,hd); - var - _B_= - function(x) - {if(_C_[3]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - tag_string(fmt,_C_[13],_E_); - if(_C_[2])caml_call2(Stdlib_Format[13],fmt,cst$2); - return fprint_t(fmt,x)}; - caml_call2(Stdlib_List[17],_B_,tl); - close_tag(fmt,_C_[12])} - caml_call2(Stdlib_Format[3],fmt,0); - if(_C_[5])caml_call2(Stdlib_Format[13],fmt,cst$7); - tag_string(fmt,_C_[14],_D_)} - else - {tag_string(fmt,_C_[11],_F_); - var _G_=_C_[1],_H_=_G_ || _C_[5]; - if(_H_)caml_call2(Stdlib_Format[13],fmt,cst$8); - tag_string(fmt,_C_[14],_D_)}} - return close_tag(fmt,p$0[10]); - case 2: - var x=param[2],label=param[1],lp=label[2],lab=label[1]; - if(1 === x[0]) - {var - l$0=x[2], - match=x[1], - p$1=match[4], - cl=match[3], - sep=match[2], - op=match[1]; - if(p$1[6] && p$1[7]) - return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)} - var indent$0=lp[3]; - caml_call2(Stdlib_Format[9],fmt,0); - open_tag(fmt,lp[4]); - fprint_t(fmt,lab); - close_tag(fmt,lp[4]); - var _I_=lp[1]; - if(726666127 === _I_) - if(lp[2]) - caml_call3(Stdlib_Format[31],fmt,1,indent$0); - else - caml_call3(Stdlib_Format[31],fmt,0,indent$0); - else - if(744337004 <= _I_) - {if(lp[2])caml_call2(Stdlib_Format[23],fmt,32)} - else - {caml_call2(Stdlib_Format[34],fmt,0); - var _J_=caml_call2(Stdlib_String[1],indent$0,32); - caml_call2(Stdlib_Format[13],fmt,_J_)} - fprint_t(fmt,x); - return caml_call2(Stdlib_Format[3],fmt,0); - default:var f=param[1];return caml_call1(f,fmt)}} - function fprint_list(fmt,label,param,l) - {var _s_=param[4],_t_=param[3],_u_=param[1]; - if(l) - {var tl=l[2],hd=l[1]; - if(0 !== tl && ! _s_[4]) - {var - p$0=param[4], - cl$0=param[3], - sep$0=param[2], - op$0=param[1], - base_indent=p$0[9], - _x_=p$0[2]?1:0, - sep_indent=caml_ml_string_length(sep$0) + _x_ | 0, - indent$0=base_indent + sep_indent | 0; - pp_open_xbox(fmt,p$0,indent$0); - fprint_opt_label(fmt,label); - tag_string(fmt,p$0[11],op$0); - if(p$0[1]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - var - match$0=extra_box(p$0,l), - close_extra$0=match$0[2], - open_extra$0=match$0[1]; - caml_call1(open_extra$0,fmt); - fprint_t(fmt,hd); - var - _y_= - function(x) - {if(p$0[3]) - caml_call3(Stdlib_Format[31],fmt,1,- sep_indent | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- sep_indent | 0); - tag_string(fmt,p$0[13],sep$0); - if(p$0[2])caml_call2(Stdlib_Format[13],fmt,cst$5); - return fprint_t(fmt,x)}; - caml_call2(Stdlib_List[17],_y_,tl); - caml_call1(close_extra$0,fmt); - if(p$0[5]) - caml_call3(Stdlib_Format[31],fmt,1,- indent$0 | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- indent$0 | 0); - tag_string(fmt,p$0[14],cl$0); - return caml_call2(Stdlib_Format[3],fmt,0)} - var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9]; - pp_open_xbox(fmt,p,indent); - fprint_opt_label(fmt,label); - tag_string(fmt,p[11],op); - if(p[1]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - var match=extra_box(p,l),close_extra=match[2],open_extra=match[1]; - caml_call1(open_extra,fmt); - fprint_list_body_stick_left(fmt,p,sep,hd,tl); - caml_call1(close_extra,fmt); - if(p[5]) - caml_call3(Stdlib_Format[31],fmt,1,- indent | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- indent | 0); - tag_string(fmt,p[14],cl); - return caml_call2(Stdlib_Format[3],fmt,0)} - fprint_opt_label(fmt,label); - tag_string(fmt,_s_[11],_u_); - var _v_=_s_[1],_w_=_v_ || _s_[5]; - if(_w_)caml_call2(Stdlib_Format[13],fmt,cst$4); - return tag_string(fmt,_s_[14],_t_)} - function to_formatter(fmt,x) - {function init_acc(param) - {var switch$0=0; - switch(param[0]) - {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break; - case 2:if(3884224 === param[1][2][1])switch$0 = 1;break - } - return switch$0?1:0} - function merge_acc(force_breaks1,force_breaks2) - {var force_breaks1$0=force_breaks1 || force_breaks2; - return force_breaks1$0} - function map_node(x,force_breaks) - {switch(x[0]) - {case 1: - var - _j_=x[1], - _k_=_j_[4], - _l_=_k_[8], - _m_=_j_[3], - _n_=_j_[2], - _o_=_j_[1]; - if(379096626 !== _l_) - {if(451368025 === _l_)return [0,x,1]; - if(610243080 === _l_)return [0,x,force_breaks]; - var children=x[2]; - if(force_breaks) - {var - p= - [0, - _k_[1], - _k_[2], - _k_[3], - _k_[4], - _k_[5], - _k_[6], - _k_[7], - 610243080, - _k_[9], - _k_[10], - _k_[11], - _k_[12], - _k_[13], - _k_[14]]; - return [0,[1,[0,_o_,_n_,_m_,p],children],1]} - return [0,x,0]} - break; - case 2: - var _p_=x[1],_q_=_p_[2],_r_=_p_[1]; - if(726666127 === _q_[1]) - {var b=x[2]; - if(force_breaks) - {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]]; - return [0,[2,[0,_r_,lp],b],1]} - return [0,x,0]} - break - } - return [0,x,force_breaks]} - function aux(x$0) - {switch(x$0[0]) - {case 0:var acc=init_acc(x$0);return map_node(x$0,acc); - case 1: - var - children=x$0[2], - param$1=x$0[1], - param$2=caml_call2(Stdlib_List[21],aux,children), - new_children=0, - accs=0, - param=param$2; - for(;;) - {if(param) - {var - param$0=param[2], - match=param[1], - y=match[2], - x=match[1], - ys=[0,y,accs], - xs=[0,x,new_children], - new_children=xs, - accs=ys, - param=param$0; - continue} - var - _i_=init_acc(x$0), - acc$0=caml_call3(Stdlib_List[25],merge_acc,_i_,accs); - return map_node([1,param$1,new_children],acc$0)} - case 2: - var - x2=x$0[2], - match$0=x$0[1], - param$3=match$0[2], - x1=match$0[1], - acc0=init_acc(x$0), - match$1=aux(x1), - acc1=match$1[2], - new_x1=match$1[1], - match$2=aux(x2), - acc2=match$2[2], - new_x2=match$2[1], - acc$1=merge_acc(merge_acc(acc0,acc1),acc2); - return map_node([2,[0,new_x1,param$3],new_x2],acc$1); - default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}} - var match=aux(x),new_x=match[1]; - fprint_t(fmt,new_x); - return caml_call2(Stdlib_Format[38],fmt,0)} - function to_buffer(opt,_h_,buf,x) - {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; - if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0; - var fmt=caml_call1(Stdlib_Format[111],buf); - define_styles(fmt,escape,styles); - return to_formatter(fmt,x)} - function to_string(escape,styles,x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer(escape,styles,buf,x); - return caml_call1(Stdlib_Buffer[2],buf)} - function to_channel(opt,_g_,oc,x) - {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; - if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0; - var fmt=caml_call1(Stdlib_Format[108],oc); - define_styles(fmt,escape,styles); - return to_formatter(fmt,x)} - function to_stdout(escape,styles,x) - {return to_channel(escape,styles,Stdlib[39],x)} - function to_stderr(escape,styles,x) - {return to_channel(escape,styles,Stdlib[40],x)} - function fprint_t$0(buf,param) - {var param$0=param; - for(;;) - switch(param$0[0]) - {case 0:var s=param$0[1];return caml_call2(Stdlib_Buffer[16],buf,s); - case 1: - var - l=param$0[2], - param$1=param$0[1], - _c_=param$1[3], - _e_=param$1[1], - _d_=param$1[2]; - if(l) - {var tl=l[2],x$0=l[1]; - caml_call2(Stdlib_Buffer[16],buf,_e_); - fprint_t$0(buf,x$0); - var - _f_= - function(x) - {caml_call2(Stdlib_Buffer[16],buf,_d_); - return fprint_t$0(buf,x)}; - caml_call2(Stdlib_List[17],_f_,tl); - return caml_call2(Stdlib_Buffer[16],buf,_c_)} - return caml_call4(Stdlib_Printf[5],buf,_a_,_e_,_c_); - case 2: - var x=param$0[2],label=param$0[1],label$0=label[1]; - fprint_t$0(buf,label$0); - var param$0=x; - continue; - default: - var f=param$0[1],fmt=caml_call1(Stdlib_Format[111],buf); - caml_call1(f,fmt); - return caml_call2(Stdlib_Format[38],fmt,0)}} - function to_buffer$0(buf,x){return fprint_t$0(buf,x)} - function to_string$0(x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer$0(buf,x); - return caml_call1(Stdlib_Buffer[2],buf)} - function to_formatter$0(fmt,x) - {var s=to_string$0(x); - caml_call3(Stdlib_Format[129],fmt,_b_,s); - return caml_call2(Stdlib_Format[38],fmt,0)} - function to_channel$0(oc,x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer$0(buf,x); - return caml_call2(Stdlib_Buffer[10],oc,buf)} - function to_stdout$0(x){return to_channel$0(Stdlib[39],x)} - function to_stderr$0(x){return to_channel$0(Stdlib[40],x)} - var - Easy_format= - [0, - atom, - list, - label, - [0, - define_styles, - to_formatter, - to_buffer, - to_string, - to_channel, - to_stdout, - to_stderr], - [0, - to_buffer$0, - to_string$0, - to_channel$0, - to_stdout$0, - to_stderr$0, - to_formatter$0], - [0,list_true,label_true,list_false,label_false]]; - runtime.caml_register_global(26,Easy_format,"Easy_format"); - return} - (globalThis)); - - -//# 1 "../../.js/biniou/biniou.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_set=runtime.caml_bytes_set, - caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, - caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, - caml_check_bound=runtime.caml_check_bound, - caml_create_bytes=runtime.caml_create_bytes, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_make_vect=runtime.caml_make_vect, - caml_ml_bytes_length=runtime.caml_ml_bytes_length, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_obj_tag=runtime.caml_obj_tag, - caml_register_global=runtime.caml_register_global, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_unsafe_get=runtime.caml_string_unsafe_get, - caml_sys_getenv=runtime.caml_sys_getenv, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - var - global_data=runtime.caml_get_global_data(), - cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"), - cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"), - cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"), - cst_Corrupted_data_invalid_ref= - caml_string_of_jsbytes("Corrupted data (invalid reference)"), - cst_Bi_share_Rd_poly_create_ty= - caml_string_of_jsbytes - ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"), - cst_Bi_inbuf_refill_from_chann= - caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"), - cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"), - cst_Buf_extend_reached_Sys_max= - caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"), - cst_Junk_input_after_end_of_vi= - caml_string_of_jsbytes("Junk input after end of vint"), - cst_Unterminated_vint_or_vint_= - caml_string_of_jsbytes - ("Unterminated vint or vint exceeding range of OCaml ints"), - cst_Vint_exceeding_range_of_OC= - caml_string_of_jsbytes("Vint exceeding range of OCaml ints"), - cst$0=caml_string_of_jsbytes(""), - cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"), - cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"), - cst=caml_string_of_jsbytes("\0\0\0\0"), - cst_Corrupted_stream_excessive= - caml_string_of_jsbytes("Corrupted stream: excessive chunk length"), - cst_Chunk_length_exceeds_suppo$0= - caml_string_of_jsbytes - ("Chunk length exceeds supported range on this platform"), - cst_Chunk_length_exceeds_suppo= - caml_string_of_jsbytes - ("Chunk length exceeds supported range on this platform"), - cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "), - cst_Bi_io_write_t_Malformed_Ta= - caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"), - cst_Corrupted_data_invalid_tag$0= - caml_string_of_jsbytes("Corrupted data (invalid tag)"), - cst_unit=caml_string_of_jsbytes("unit"), - cst$1=caml_string_of_jsbytes("]"), - cst$2=caml_string_of_jsbytes(","), - cst$3=caml_string_of_jsbytes("["), - cst$4=caml_string_of_jsbytes("[]"), - cst$5=caml_string_of_jsbytes("}"), - cst$6=caml_string_of_jsbytes(","), - cst$7=caml_string_of_jsbytes("{"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst$8=caml_string_of_jsbytes(")"), - cst$9=caml_string_of_jsbytes(","), - cst$10=caml_string_of_jsbytes("("), - cst$11=caml_string_of_jsbytes(":"), - cst$12=caml_string_of_jsbytes(">"), - cst$13=caml_string_of_jsbytes(""), - cst$14=caml_string_of_jsbytes("<"), - cst$15=caml_string_of_jsbytes(">"), - cst$16=caml_string_of_jsbytes("<"), - cst$17=caml_string_of_jsbytes("[]"), - cst$18=caml_string_of_jsbytes(""), - cst_Some=caml_string_of_jsbytes("Some"), - cst_None=caml_string_of_jsbytes("None"), - cst_Corrupted_data_invalid_tag= - caml_string_of_jsbytes("Corrupted data (invalid tag)"), - cst_Corrupted_data_string= - caml_string_of_jsbytes("Corrupted data (string)"), - cst_Corrupted_data_bool_value= - caml_string_of_jsbytes("Corrupted data (bool value)"), - cst_Corrupted_data_unit_value= - caml_string_of_jsbytes("Corrupted data (unit value)"), - s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"), - cst_Corrupted_data_invalid_num= - caml_string_of_jsbytes("Corrupted data (invalid numtag)"), - cst_Corrupted_data_invalid_fie= - caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"), - cst_Cygwin=caml_string_of_jsbytes("Cygwin"), - cst_Unix=caml_string_of_jsbytes("Unix"), - cst_Win32=caml_string_of_jsbytes("Win32"), - cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"), - cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"), - cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"), - cst_HOME=caml_string_of_jsbytes("HOME"), - cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"), - cst_HOME$0=caml_string_of_jsbytes("HOME"), - Stdlib=global_data.Stdlib, - Stdlib_Bytes=global_data.Stdlib__Bytes, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - Stdlib_Sys=global_data.Stdlib__Sys, - Stdlib_String=global_data.Stdlib__String, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Array=global_data.Stdlib__Array, - Assert_failure=global_data.Assert_failure, - Stdlib_Stream=global_data.Stdlib__Stream, - Easy_format=global_data.Easy_format, - CamlinternalLazy=global_data.CamlinternalLazy, - Stdlib_Obj=global_data.Stdlib__Obj, - Stdlib_Printexc=global_data.Stdlib__Printexc, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Filename=global_data.Stdlib__Filename, - Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)], - _g_= - [0, - [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]], - caml_string_of_jsbytes("Corrupted stream: %C")], - _f_= - [0, - [11, - caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("), - [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]], - caml_string_of_jsbytes - ("Corrupted stream: excessive chunk length (%i bytes)")], - _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22], - _j_=[0,2], - _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20], - _e_= - [0, - [11, - caml_string_of_jsbytes("unsupported word size ("), - [4,3,0,0,[12,41,0]]], - caml_string_of_jsbytes("unsupported word size (%i)")], - _d_= - [0, - [11, - caml_string_of_jsbytes("unsupported word size ("), - [4,3,0,0,[12,41,0]]], - caml_string_of_jsbytes("unsupported word size (%i)")], - _s_= - [0, - [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]], - caml_string_of_jsbytes("0x%02x")], - _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], - _v_= - [0, - [11, - caml_string_of_jsbytes("shared"), - [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]], - caml_string_of_jsbytes("shared%i ->")], - _w_= - [0, - [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]], - caml_string_of_jsbytes("shared%i")], - _x_= - [0, - [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]], - caml_string_of_jsbytes("0x%016Lx")], - _y_= - [0, - [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]], - caml_string_of_jsbytes("0x%08lx")], - _z_= - [0, - [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]], - caml_string_of_jsbytes("0x%04x")], - _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], - _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], - _p_=[0,951901561,0], - _q_=[0,504440814,0], - _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4], - _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4], - _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11], - _k_= - [0, - [11, - caml_string_of_jsbytes("Bi_io.make_unhash: "), - [3, - 0, - [11, - caml_string_of_jsbytes(" and "), - [3, - 0, - [11, - caml_string_of_jsbytes - (" have the same hash, please pick another name"), - 0]]]]], - caml_string_of_jsbytes - ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")], - _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13], - _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2], - _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _E_= - [0, - [11, - caml_string_of_jsbytes("Cannot load dictionary from "), - [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]], - caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")]; - function error(s){throw [0,Error,s]} - function string8_of_int(x) - {var s=caml_create_bytes(8),i=0; - for(;;) - {caml_bytes_set - (s, - 7 - i | 0, - caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); - var _c4_=i + 1 | 0; - if(7 !== i){var i=_c4_;continue} - return caml_call1(Stdlib_Bytes[6],s)}} - function string4_of_int(x) - {var s=caml_create_bytes(4),i=0; - for(;;) - {caml_bytes_set - (s, - 3 - i | 0, - caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); - var _c3_=i + 1 | 0; - if(3 !== i){var i=_c3_;continue} - return caml_call1(Stdlib_Bytes[6],s)}} - function print_bits(opt,len,s) - {if(opt)var sth=opt[1],pos=sth;else var pos=0; - var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0; - if(_cT_) - var _cU_=_cT_; - else - var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_; - if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits); - if(len) - var - len$0=len[1], - _cV_= - (slen - pos | 0) < len$0 - ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0) - :len$0, - len$1=_cV_; - else - var len$1=slen - pos | 0; - var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0; - if(! (_cX_ < 0)) - {var i=_cW_; - a: - for(;;) - {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0; - for(;;) - {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49; - caml_bytes_set(r,k + j | 0,_c0_); - var _c1_=j + 1 | 0; - if(7 !== j){var j=_c1_;continue} - var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32; - caml_bytes_set(r,k + 8 | 0,_cY_); - var _cZ_=i + 1 | 0; - if(_cX_ !== i){var i=_cZ_;continue a} - break} - break}} - return caml_call1(Stdlib_Bytes[6],r)} - var c=[0,0],r=[0,-1]; - for(;;) - {if(0 === r[1]) - {var - int_size=c[1], - Bi_util= - [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size]; - caml_register_global(101,Bi_util,"Bi_util"); - var - n=[0,0], - dummy_type_id=0, - create_type_id= - function(param) - {n[1]++; - return 0 <= n[1] - ?n[1] - :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)}, - equal= - function(param,_cQ_) - {var - t2=_cQ_[2], - x2=_cQ_[1], - t1=param[2], - x1=param[1], - _cR_=x1 === x2?1:0, - _cS_=_cR_?t1 === t2?1:0:_cR_; - return _cS_}, - hash=Stdlib_Hashtbl[28], - H=caml_call1(Stdlib_Hashtbl[26],[0,equal,hash]), - create=H[1], - clear= - function(tbl) - {var _cP_=0 < caml_call1(H[15],tbl)?1:0; - return _cP_?caml_call1(H[2],tbl):_cP_}, - put= - function(tbl,k,pos) - {try - {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_} - catch(_cO_) - {_cO_ = caml_wrap_exception(_cO_); - if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0} - throw _cO_}}, - create$0=function(n){return caml_call2(Stdlib_Hashtbl[1],0,n)}, - clear$0=Stdlib_Hashtbl[2], - put$0= - function(tbl,pos,x){return caml_call3(Stdlib_Hashtbl[5],tbl,pos,x)}, - get= - function(tbl,pos) - {try - {var _cL_=caml_call2(Stdlib_Hashtbl[6],tbl,pos);return _cL_} - catch(_cM_) - {_cM_ = caml_wrap_exception(_cM_); - if(_cM_ === Stdlib[8]) - return error(cst_Corrupted_data_invalid_ref); - throw _cM_}}, - Rd=[0,create$0,clear$0,put$0,get], - _a_=[0,create,clear,put], - Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd]; - caml_register_global(103,Bi_share,"Bi_share"); - var - End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)], - try_preread= - function(ib,n) - {return (ib[3] - ib[2] | 0) < n - ?(caml_call2(ib[6],ib,n), - caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n)) - :n}, - read= - function(ib,n) - {var pos=ib[2]; - if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos} - if(n <= try_preread(ib,n)) - {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0} - throw End_of_input}, - read_char= - function(ib) - {var pos=ib[2]; - if(0 < (ib[3] - pos | 0)) - {var c=caml_bytes_unsafe_get(ib[1],pos); - ib[2] = pos + 1 | 0; - return c} - if(0 < try_preread(ib,1)) - {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0); - ib[2] = pos$0 + 1 | 0; - return c$0} - throw End_of_input}, - peek= - function(ib) - {var pos=ib[2]; - if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos); - if(0 < try_preread(ib,1)) - return caml_bytes_unsafe_get(ib[1],ib[2]); - throw End_of_input}, - from_bytes= - function(opt,_cJ_,s) - {if(opt)var sth=opt[1],pos=sth;else var pos=0; - if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16; - var _cK_=caml_call1(Rd[1],shrlen); - return [0, - s, - pos, - caml_ml_bytes_length(s), - - pos | 0, - caml_ml_bytes_length(s), - function(ib,n){return 0}, - _cK_]}, - from_string= - function(pos,shrlen,s) - {return from_bytes(pos,shrlen,caml_call1(Stdlib_Bytes[5],s))}, - from_channel= - function(opt,_cF_,ic) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16; - var _cG_=caml_call1(Rd[1],shrlen); - return [0, - caml_create_bytes(len), - 0, - 0, - 0, - len, - function(ib,n$0) - {if(ib[5] < n$0) - return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann); - var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0; - if(_cH_) - {var s=ib[1]; - caml_call5(Stdlib_Bytes[11],s,ib[2],s,0,pos$1); - var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0; - for(;;) - {var n=caml_call4(Stdlib[84],ic,s,pos,len); - if(n < len && 0 < n) - {var - accu$0=accu + n | 0, - len$0=len - n | 0, - pos$0=pos + n | 0, - pos=pos$0, - len=len$0, - accu=accu$0; - continue} - var really_read=accu + n | 0; - ib[4] = ib[4] + ib[2] | 0; - ib[2] = 0; - ib[3] = pos$1 + really_read | 0; - var _cI_=0; - break}} - else - var _cI_=_cH_; - return _cI_}, - _cG_]}, - Bi_inbuf= - [0, - End_of_input, - try_preread, - read, - read_char, - peek, - from_string, - from_bytes, - from_channel]; - caml_register_global(104,Bi_inbuf,"Bi_inbuf"); - var - really_extend= - function(b,n) - {var - slen0=b[2], - reqlen=b[3] + n | 0, - x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0), - slen= - x <= Stdlib_Sys[12] - ?x - :Stdlib_Sys[12] < reqlen - ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max) - :Stdlib_Sys[12], - s=caml_create_bytes(slen); - caml_call5(Stdlib_Bytes[11],b[1],0,s,0,b[3]); - b[1] = s; - b[2] = slen; - return 0}, - flush_to_output= - function(abstract_output,b,n) - {var _cD_=b[3]; - caml_call3 - (abstract_output,caml_call1(Stdlib_Bytes[6],b[1]),0,_cD_); - b[4] = b[4] + b[3] | 0; - b[3] = 0; - var _cE_=b[2] < n?1:0; - return _cE_?really_extend(b,n):_cE_}, - flush_to_channel= - function(oc) - {var _cA_=caml_call1(Stdlib[69],oc); - return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}}, - create$1= - function(opt,_cz_,n) - {if(opt) - var sth=opt[1],make_room=sth; - else - var make_room=really_extend; - if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16; - return [0, - caml_create_bytes(n), - n, - 0, - 0, - n, - make_room, - caml_call1(_a_[1],shrlen), - shrlen]}, - create_channel_writer= - function(opt,shrlen,oc) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - return create$1([0,flush_to_channel(oc)],shrlen,len)}, - flush_output_writer=function(b){return caml_call2(b[6],b,0)}, - create_output_writer= - function(opt,shrlen,out) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - var - _cw_= - caml_call1(runtime.caml_get_public_method(out,209784577,1),out); - return create$1 - ([0, - function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}], - shrlen, - len)}, - extend= - function(b,n) - {var _cv_=b[2] < (b[3] + n | 0)?1:0; - return _cv_?caml_call2(b[6],b,n):_cv_}, - alloc= - function(b,n) - {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos}, - add_sub= - function(blit,b,s,pos,len) - {extend(b,len); - caml_call5(blit,s,pos,b[1],b[3],len); - b[3] = b[3] + len | 0; - return 0}, - _b_=Stdlib_String[42], - add_substring= - function(_cr_,_cs_,_ct_,_cu_) - {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)}, - _c_=Stdlib_Bytes[11], - add_subbytes= - function(_cn_,_co_,_cp_,_cq_) - {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)}, - add_string= - function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))}, - add_bytes= - function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))}, - add_char= - function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)}, - unsafe_add_char= - function(b,c) - {var len=b[3]; - caml_bytes_set(b[1],len,c); - b[3] = len + 1 | 0; - return 0}, - add_char2= - function(b,c1,c2) - {var pos=alloc(b,2),s=b[1]; - caml_bytes_unsafe_set(s,pos,c1); - caml_bytes_unsafe_set(s,pos + 1 | 0,c2); - return 0}, - add_char4= - function(b,c1,c2,c3,c4) - {var pos=alloc(b,4),s=b[1]; - caml_bytes_unsafe_set(s,pos,c1); - caml_bytes_unsafe_set(s,pos + 1 | 0,c2); - caml_bytes_unsafe_set(s,pos + 2 | 0,c3); - caml_bytes_unsafe_set(s,pos + 3 | 0,c4); - return 0}, - clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])}, - reset= - function(b) - {if(caml_ml_bytes_length(b[1]) !== b[5]) - b[1] = caml_create_bytes(b[5]); - b[4] = 0; - b[3] = 0; - b[7] = caml_call1(_a_[1],b[8]); - return 0}, - contents=function(b){return caml_call3(Stdlib_Bytes[8],b[1],0,b[3])}, - Bi_outbuf= - [0, - really_extend, - flush_to_channel, - create$1, - contents, - create_channel_writer, - flush_output_writer, - create_output_writer, - flush_output_writer, - extend, - alloc, - add_bytes, - add_subbytes, - add_string, - add_substring, - add_char, - add_char2, - add_char4, - unsafe_add_char, - clear$1, - reset]; - caml_register_global(107,Bi_outbuf,"Bi_outbuf"); - if(0 === (int_size % 7 | 0)) - var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m; - else - var - m$0=(int_size / 7 | 0) + 1 | 0, - h=(1 << (int_size % 7 | 0)) - 1 | 0, - max_highest_byte=h, - max_vint_bytes=m$0; - var - check_highest_byte= - function(x) - {var _cm_=max_highest_byte < x?1:0; - return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_}, - unsigned_of_signed= - function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1}, - write_untagged_uvint= - function(buf,i) - {extend(buf,max_vint_bytes); - var x=[0,i]; - for(;;) - {if(0 === (x[1] >>> 7 | 0)) - return unsafe_add_char(buf,caml_call1(Stdlib_Char[1],x[1])); - var byte$0=128 | x[1] & 127; - unsafe_add_char(buf,caml_call1(Stdlib_Char[1],byte$0)); - x[1] = x[1] >>> 7 | 0; - continue}}, - write_untagged_svint= - function(buf,i) - {return write_untagged_uvint(buf,unsigned_of_signed(i))}, - uvint_of_uint= - function(buf,i) - {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10); - clear$1(buffer); - write_untagged_uvint(buffer,i); - return contents(buffer)}, - svint_of_int= - function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))}, - read_untagged_uvint= - function(ib) - {var - avail=try_preread(ib,max_vint_bytes), - s=ib[1], - pos=ib[2], - x=[0,0]; - try - {var _cj_=avail - 1 | 0,_ci_=0; - if(! (_cj_ < 0)) - {var i=_ci_; - for(;;) - {var b=caml_bytes_get(s,pos + i | 0); - x[1] = (b & 127) << (7 * i | 0) | x[1]; - if(b < 128) - {ib[2] = (pos + i | 0) + 1 | 0; - if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b); - throw Stdlib[3]} - var _ck_=i + 1 | 0; - if(_cj_ !== i){var i=_ck_;continue} - break}} - error(cst_Unterminated_vint_or_vint_)} - catch(_cl_) - {_cl_ = caml_wrap_exception(_cl_); - if(_cl_ !== Stdlib[3])throw _cl_} - return x[1]}, - read_untagged_svint= - function(ib) - {var i=read_untagged_uvint(ib); - return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0}, - check_end_of_input= - function(ib) - {var _ch_=0 < try_preread(ib,1)?1:0; - return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_}, - uint_of_uvint= - function(s) - {var ib=from_string(0,0,s),x=read_untagged_uvint(ib); - check_end_of_input(ib); - return x}, - int_of_svint= - function(s) - {var ib=from_string(0,0,s),x=read_untagged_svint(ib); - check_end_of_input(ib); - return x}, - Bi_vint= - [0, - uvint_of_uint, - svint_of_int, - uint_of_uvint, - int_of_svint, - write_untagged_uvint, - write_untagged_svint, - read_untagged_uvint, - read_untagged_svint]; - caml_register_global(110,Bi_vint,"Bi_vint"); - var - error$0= - function(s) - {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s); - return caml_call1(Stdlib[2],_cg_)}, - read_stream= - function(of_string,ic) - {function _b__(i$2) - {var c=caml_call1(Stdlib[82],ic); - if(1 === c) - {var _ca_=Stdlib_Sys[9]; - if(32 === _ca_) - {var i$0=1; - for(;;) - {if(0 !== caml_call1(Stdlib[87],ic)) - error$0(cst_Chunk_length_exceeds_suppo$0); - var _cd_=i$0 + 1 | 0; - if(4 !== i$0){var i$0=_cd_;continue} - var n=[0,0],i=1; - for(;;) - {var _cb_=caml_call1(Stdlib[87],ic); - n[1] = n[1] << 8 | _cb_; - var _cc_=i + 1 | 0; - if(4 !== i){var i=_cc_;continue} - if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo); - var len=n[1]; - break} - break}} - else - if(64 === _ca_) - {var n$0=[0,0],i$1=1; - for(;;) - {var _ce_=caml_call1(Stdlib[87],ic); - n$0[1] = n$0[1] << 8 | _ce_; - var _cf_=i$1 + 1 | 0; - if(8 !== i$1){var i$1=_cf_;continue} - if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive); - var len=n$0[1]; - break}} - else - var len=error$0(caml_call2(Stdlib_Printf[4],_d_,_ca_)); - if(Stdlib_Sys[12] < len) - error$0(caml_call2(Stdlib_Printf[4],_f_,len)); - var s=caml_create_bytes(len); - caml_call4(Stdlib[85],ic,s,0,len); - return [0,caml_call1(of_string,caml_call1(Stdlib_Bytes[6],s))]} - return c?error$0(caml_call2(Stdlib_Printf[4],_g_,c)):0} - var st=caml_call1(Stdlib_Stream[3],_b__),a=[0,[0]],pos=[0,0]; - function next(i) - {for(;;) - {if(a[1].length - 1 <= pos[1]) - {var match=caml_call1(Stdlib_Stream[11],st); - if(match) - {var a$0=match[1]; - caml_call1(Stdlib_Stream[12],st); - a[1] = a$0; - pos[1] = 0; - continue} - return 0} - var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_]; - pos[1]++; - return [0,x]}} - return caml_call1(Stdlib_Stream[3],next)}, - write_stream= - function(opt,to_string,oc,st) - {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024; - var n=[0,0],acc=[0,0]; - function flush_chunk(param) - {var _b9_=acc[1]; - if(_b9_) - {var - tl=_b9_[2], - x=_b9_[1], - r=[0,tl], - len=caml_call1(Stdlib_List[1],_b9_), - a=caml_make_vect(len,x), - _b6_=len - 2 | 0; - if(! (_b6_ < 0)) - {var i$1=_b6_; - for(;;) - {var _b7_=r[1]; - if(! _b7_)throw [0,Assert_failure,_h_]; - var tl$0=_b7_[2],hd=_b7_[1]; - caml_check_bound(a,i$1)[1 + i$1] = hd; - r[1] = tl$0; - var _b8_=i$1 - 1 | 0; - if(0 !== i$1){var i$1=_b8_;continue} - break}} - var a$0=a} - else - var a$0=[0]; - acc[1] = 0; - n[1] = 0; - var s=caml_call1(to_string,a$0); - caml_call2(Stdlib[65],oc,1); - var n$2=caml_ml_string_length(s),_b1_=Stdlib_Sys[9]; - if(32 === _b1_) - {caml_call2(Stdlib[66],oc,cst); - var n$0=[0,n$2],i=1; - for(;;) - {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0); - caml_call2(Stdlib[65],oc,_b2_); - n$0[1] = n$0[1] << 8; - var _b3_=i + 1 | 0; - if(4 !== i){var i=_b3_;continue} - break}} - else - if(64 === _b1_) - {var n$1=[0,n$2],i$0=1; - for(;;) - {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0); - caml_call2(Stdlib[65],oc,_b4_); - n$1[1] = n$1[1] << 8; - var _b5_=i$0 + 1 | 0; - if(8 !== i$0){var i$0=_b5_;continue} - break}} - else - error$0(caml_call2(Stdlib_Printf[4],_e_,_b1_)); - return caml_call2(Stdlib[66],oc,s)} - function _bZ_(x) - {n[1]++; - acc[1] = [0,x,acc[1]]; - var _b0_=chunk_len <= n[1]?1:0; - return _b0_?flush_chunk(0):_b0_} - caml_call2(Stdlib_Stream[8],_bZ_,st); - if(0 < n[1])flush_chunk(0); - return caml_call2(Stdlib[65],oc,0)}, - test= - function(l) - {function _bT_(x) - {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]} - caml_call2(Stdlib_List[17],_bT_,l); - function to_string(a) - {var - _bX_=caml_call1(Stdlib_Array[11],a), - _bY_=caml_call2(Stdlib_List[19],Stdlib[33],_bX_); - return caml_call2(Stdlib_String[6],cst$0,_bY_)} - function of_string(s) - {function _bV_(i) - {var _bW_=caml_string_get(s,i); - return runtime.caml_int_of_string - (caml_call2(Stdlib_String[1],1,_bW_))} - return caml_call2(Stdlib_Array[2],caml_ml_string_length(s),_bV_)} - var - st=caml_call1(Stdlib_Stream[4],l), - oc=caml_call1(Stdlib[60],cst_test_stream_dat); - write_stream(_j_,to_string,oc,st); - caml_call1(Stdlib[76],oc); - var - ic=caml_call1(Stdlib[79],cst_test_stream_dat$0), - st$0=read_stream(of_string,ic), - l$0=[0,0]; - function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0} - caml_call2(Stdlib_Stream[8],_bU_,st$0); - caml_call1(Stdlib[93],ic); - return runtime.caml_equal(l,caml_call1(Stdlib_List[9],l$0[1]))}, - Bi_stream=[0,read_stream,write_stream,test]; - caml_register_global(114,Bi_stream,"Bi_stream"); - var - bool_tag=0, - int8_tag=1, - int16_tag=2, - int32_tag=3, - int64_tag=4, - float32_tag=11, - float64_tag=12, - uvint_tag=16, - svint_tag=17, - string_tag=18, - array_tag=19, - tuple_tag=20, - record_tag=21, - num_variant_tag=22, - variant_tag=23, - unit_tag=24, - table_tag=25, - shared_tag=26, - make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x}, - hash_name= - function(s) - {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0; - if(! (_bQ_ < 0)) - {var i=_bP_; - for(;;) - {var _bR_=caml_string_get(s,i); - accu[1] = (223 * accu[1] | 0) + _bR_ | 0; - var _bS_=i + 1 | 0; - if(_bQ_ !== i){var i=_bS_;continue} - break}} - accu[1] = accu[1] & 2147483647; - return make_signed(accu[1])}, - n$0=int_size - 31 | 0; - if(0 <= n$0) - {var - write_hashtag= - function(ob,h$0,has_arg) - {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1]; - caml_bytes_unsafe_set - (s,pos + 3 | 0,caml_call1(Stdlib_Char[1],h & 255)); - var h$1=h >>> 8 | 0; - caml_bytes_unsafe_set - (s,pos + 2 | 0,caml_call1(Stdlib_Char[1],h$1 & 255)); - var h$2=h$1 >>> 8 | 0; - caml_bytes_unsafe_set - (s,pos + 1 | 0,caml_call1(Stdlib_Char[1],h$2 & 255)); - var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3; - caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_Char[1],_bO_)); - return 0}, - string_of_hashtag= - function(h,has_arg) - {var ob=create$1(0,0,4); - write_hashtag(ob,h,has_arg); - return contents(ob)}, - read_hashtag= - function(ib,cont) - {var - i=read(ib,4), - s=ib[1], - x0=caml_bytes_get(s,i), - has_arg=128 <= x0?1:0, - x1=(x0 & 127) << 24, - x2=caml_bytes_get(s,i + 1 | 0) << 16, - x3=caml_bytes_get(s,i + 2 | 0) << 8, - x4=caml_bytes_get(s,i + 3 | 0), - h=make_signed(x1 | x2 | x3 | x4); - return caml_call3(cont,ib,h,has_arg)}, - read_field_hashtag= - function(ib) - {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i); - if(x0 < 128)error(cst_Corrupted_data_invalid_fie); - var - x1=(x0 & 127) << 24, - x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16, - x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8, - x4=caml_bytes_unsafe_get(s,i + 3 | 0); - return make_signed(x1 | x2 | x3 | x4)}, - write_numtag= - function(ob,i,has_arg) - {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0); - if(_bN_)error(cst_Corrupted_data_invalid_num); - var x=has_arg?i | 128:i; - return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - read_numtag= - function(ib,cont) - {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0; - return caml_call3(cont,ib,x & 127,has_arg)}, - make_unhash= - function(l) - {var - _bE_=4 * caml_call1(Stdlib_List[1],l) | 0, - tbl=caml_call2(Stdlib_Hashtbl[1],0,_bE_); - function _bF_(s) - {var h=hash_name(s); - try - {var match=caml_call2(Stdlib_Hashtbl[6],tbl,h); - if(match) - {var s$0=match[1],_bI_=caml_string_notequal(s,s$0); - if(_bI_) - var - _bJ_=caml_call3(Stdlib_Printf[4],_k_,s,s$0), - _bK_=caml_call1(Stdlib[2],_bJ_); - else - var _bK_=_bI_; - return _bK_} - throw [0,Assert_failure,_l_]} - catch(_bL_) - {_bL_ = caml_wrap_exception(_bL_); - if(_bL_ === Stdlib[8]) - return caml_call3(Stdlib_Hashtbl[5],tbl,h,[0,s]); - throw _bL_}} - caml_call2(Stdlib_List[17],_bF_,l); - return function(h) - {try - {var _bG_=caml_call2(Stdlib_Hashtbl[6],tbl,h);return _bG_} - catch(_bH_) - {_bH_ = caml_wrap_exception(_bH_); - if(_bH_ === Stdlib[8])return 0; - throw _bH_}}}, - write_tag= - function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - write_untagged_unit=function(ob,param){return add_char(ob,0)}, - write_untagged_bool= - function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)}, - write_untagged_char=function(ob,x){return add_char(ob,x)}, - write_untagged_int8= - function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - write_untagged_int16= - function(ob,x) - {add_char(ob,caml_call1(Stdlib_Char[1],x >>> 8 | 0)); - return add_char(ob,caml_call1(Stdlib_Char[1],x & 255))}, - write_untagged_int32= - function(ob,low) - {var high=low >>> 16 | 0; - add_char(ob,caml_call1(Stdlib_Char[1],high >>> 8 | 0)); - add_char(ob,caml_call1(Stdlib_Char[1],high & 255)); - add_char(ob,caml_call1(Stdlib_Char[1],(low >>> 8 | 0) & 255)); - return add_char(ob,caml_call1(Stdlib_Char[1],low & 255))}, - write_untagged_float32= - function(ob,x) - {return write_untagged_int32 - (ob,runtime.caml_int32_bits_of_float(x))}, - float_endianness= - [246, - function(_bC_) - {var match=caml_string_unsafe_get(1.,0); - if(63 === match)return 3305632; - if(match)throw [0,Assert_failure,_m_]; - return 624392470}], - read_untagged_float64= - function(ib) - {var - i=read(ib,8), - s=ib[1], - x=runtime.caml_obj_block(Stdlib_Obj[14],8), - _by_=caml_obj_tag(float_endianness), - _bz_= - 250 === _by_ - ?float_endianness[1] - :246 === _by_ - ?caml_call1(CamlinternalLazy[2],float_endianness) - :float_endianness; - if(624392470 <= _bz_) - {var j=0; - for(;;) - {caml_bytes_unsafe_set - (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0)); - var _bA_=j + 1 | 0; - if(7 !== j){var j=_bA_;continue} - break}} - else - {var j$0=0; - for(;;) - {caml_bytes_unsafe_set - (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0)); - var _bB_=j$0 + 1 | 0; - if(7 !== j$0){var j$0=_bB_;continue} - break}} - return x}, - write_untagged_float64= - function(ob,x) - {var - i=alloc(ob,8), - s=ob[1], - _bu_=caml_obj_tag(float_endianness), - _bv_= - 250 === _bu_ - ?float_endianness[1] - :246 === _bu_ - ?caml_call1(CamlinternalLazy[2],float_endianness) - :float_endianness; - if(624392470 <= _bv_) - {var j=0; - for(;;) - {caml_bytes_unsafe_set - (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0)); - var _bw_=j + 1 | 0; - if(7 !== j){var j=_bw_;continue} - return 0}} - var j$0=0; - for(;;) - {caml_bytes_unsafe_set - (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0)); - var _bx_=j$0 + 1 | 0; - if(7 !== j$0){var j$0=_bx_;continue} - return 0}}, - write_untagged_int64= - function(ob,x) - {return write_untagged_float64 - (ob,runtime.caml_int64_float_of_bits(x))}, - safety_test= - function(param) - {var - y=read_untagged_float64(from_string(0,0,s)), - x=1.00146962706651288; - if(1.00146962706651288 != y)throw [0,Assert_failure,_n_]; - var ob=create$1(0,0,8); - write_untagged_float64(ob,x); - var _bt_=caml_string_notequal(contents(ob),s); - if(_bt_)throw [0,Assert_failure,_o_]; - return _bt_}, - write_untagged_string= - function(ob,s) - {write_untagged_uvint(ob,caml_ml_string_length(s)); - return add_string(ob,s)}, - write_unit= - function(ob,param) - {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)}, - write_bool= - function(ob,x) - {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)}, - write_char= - function(ob,x) - {write_tag(ob,int8_tag);return write_untagged_char(ob,x)}, - write_int8= - function(ob,x) - {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)}, - write_int16= - function(ob,x) - {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)}, - write_int32= - function(ob,x) - {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)}, - write_int64= - function(ob,x) - {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)}, - write_float32= - function(ob,x) - {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)}, - write_float64= - function(ob,x) - {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)}, - write_string= - function(ob,x) - {write_tag(ob,string_tag);return write_untagged_string(ob,x)}, - write_uvint= - function(ob,x) - {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)}, - write_svint= - function(ob,x) - {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)}, - write_t= - function(ob,tagged,x) - {var tagged$0=tagged,x$0=x; - for(;;) - {if(typeof x$0 === "number") - {if(tagged$0)write_tag(ob,unit_tag); - return write_untagged_unit(ob,0)} - var _a__=x$0[1]; - if(708012133 <= _a__) - {if(847309489 <= _a__) - {if(928626971 === _a__) - {var x$1=x$0[2]; - if(tagged$0)write_tag(ob,float32_tag); - return write_untagged_float32(ob,x$1)} - if(951901561 <= _a__) - {if(1063160078 <= _a__) - {var x$2=x$0[2]; - if(tagged$0)write_tag(ob,uvint_tag); - return write_untagged_uvint(ob,x$2)} - var o=x$0[2]; - if(tagged$0)write_tag(ob,array_tag); - if(o) - {var - match=o[1], - a=match[2], - node_tag=match[1], - len=a.length - 1; - write_untagged_uvint(ob,len); - var _a$_=0 < len?1:0; - if(_a$_) - {write_tag(ob,node_tag); - var - _ba_=0, - _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)}; - return caml_call2(Stdlib_Array[13],_bb_,a)} - return _a$_} - return write_untagged_uvint(ob,0)} - if(928627642 <= _a__) - {var x$3=x$0[2]; - if(tagged$0)write_tag(ob,float64_tag); - return write_untagged_float64(ob,x$3)} - var a$0=x$0[2]; - if(tagged$0)write_tag(ob,record_tag); - write_untagged_uvint(ob,a$0.length - 1); - var - _bc_= - function(param) - {var x=param[3],h=param[2]; - write_hashtag(ob,h,1); - return write_t(ob,1,x)}; - return caml_call2(Stdlib_Array[13],_bc_,a$0)} - if(737456202 <= _a__) - {if(815034505 <= _a__) - {var x$4=x$0[2]; - if(tagged$0)write_tag(ob,int8_tag); - return write_untagged_char(ob,x$4)} - var x$5=x$0[2]; - if(tagged$0)write_tag(ob,bool_tag); - return write_untagged_bool(ob,x$5)} - if(726928360 <= _a__) - {var a$1=x$0[2]; - if(tagged$0)write_tag(ob,tuple_tag); - write_untagged_uvint(ob,a$1.length - 1); - var - _bd_=1, - _be_=function(_br_){return write_t(ob,_bd_,_br_)}; - return caml_call2(Stdlib_Array[13],_be_,a$1)} - var match$0=x$0[2],x$6=match$0[3],h=match$0[2]; - if(tagged$0)write_tag(ob,variant_tag); - write_hashtag(ob,h,0 !== x$6?1:0); - if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue} - return 0} - if(-775957819 <= _a__) - {if(412180492 <= _a__) - {if(504440814 <= _a__) - {var o$0=x$0[2]; - if(tagged$0)write_tag(ob,table_tag); - if(o$0) - {var - match$1=o$0[1], - a$2=match$1[2], - fields=match$1[1], - row_num=a$2.length - 1; - write_untagged_uvint(ob,row_num); - var _bf_=0 < row_num?1:0; - if(_bf_) - {var col_num=fields.length - 1; - write_untagged_uvint(ob,col_num); - var - _bg_= - function(param) - {var tag=param[3],h=param[2]; - write_hashtag(ob,h,1); - return write_tag(ob,tag)}; - caml_call2(Stdlib_Array[13],_bg_,fields); - var _bh_=0 < row_num?1:0; - if(_bh_) - {var _bj_=row_num - 1 | 0,_bi_=0; - if(! (_bj_ < 0)) - {var i=_bi_; - for(;;) - {var ai=caml_check_bound(a$2,i)[1 + i]; - if(ai.length - 1 !== col_num) - caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta); - var _bn_=col_num - 1 | 0,_bm_=0; - if(! (_bn_ < 0)) - {var j=_bm_; - for(;;) - {write_t(ob,0,caml_check_bound(ai,j)[1 + j]); - var _bp_=j + 1 | 0; - if(_bn_ !== j){var j=_bp_;continue} - break}} - var _bo_=i + 1 | 0; - if(_bj_ !== i){var i=_bo_;continue} - break}} - var _bk_=0} - else - var _bk_=_bh_; - var _bl_=_bk_} - else - var _bl_=_bf_; - return _bl_} - return write_untagged_uvint(ob,0)} - var x$8=x$0[2]; - if(tagged$0)write_tag(ob,svint_tag); - return write_untagged_svint(ob,x$8)} - if(221365804 <= _a__) - {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1]; - if(tagged$0)write_tag(ob,num_variant_tag); - write_numtag(ob,i$0,0 !== x$9?1:0); - if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue} - return 0} - var x$11=x$0[2]; - if(tagged$0)write_tag(ob,shared_tag); - var - offset= - caml_call3 - (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0); - write_untagged_uvint(ob,offset); - var _bq_=0 === offset?1:0; - if(_bq_){var tagged$0=1,x$0=x$11;continue} - return _bq_} - if(-783416530 <= _a__) - {if(-783415859 <= _a__) - {var x$12=x$0[2]; - if(tagged$0)write_tag(ob,int64_tag); - return write_untagged_int64(ob,x$12)} - var x$13=x$0[2]; - if(tagged$0)write_tag(ob,int32_tag); - return write_untagged_int32(ob,x$13)} - if(-783416972 <= _a__) - {var x$14=x$0[2]; - if(tagged$0)write_tag(ob,int16_tag); - return write_untagged_int16(ob,x$14)} - var s=x$0[2]; - if(tagged$0)write_tag(ob,string_tag); - return write_untagged_string(ob,s)}}, - write_tree=function(ob,x){return write_t(ob,1,x)}, - string_of_tree= - function(x) - {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)}, - tag_of_tree= - function(x) - {if(typeof x === "number")return unit_tag; - var _a9_=x[1]; - return 708012133 <= _a9_ - ?847309489 <= _a9_ - ?928626971 === _a9_ - ?float32_tag - :951901561 <= _a9_ - ?1063160078 <= _a9_?uvint_tag:array_tag - :928627642 <= _a9_?float64_tag:record_tag - :737456202 <= _a9_ - ?815034505 <= _a9_?int8_tag:bool_tag - :726928360 <= _a9_?tuple_tag:variant_tag - :-775957819 <= _a9_ - ?412180492 <= _a9_ - ?504440814 <= _a9_?table_tag:svint_tag - :221365804 <= _a9_?num_variant_tag:shared_tag - :-783416530 <= _a9_ - ?-783415859 <= _a9_?int64_tag:int32_tag - :-783416972 <= _a9_?int16_tag:string_tag}, - read_tag=function(ib){return read_char(ib)}, - read_untagged_unit= - function(ib) - {var match=read_char(ib); - return match?error(cst_Corrupted_data_unit_value):0}, - read_untagged_bool= - function(ib) - {var match=read_char(ib); - return 1 === match - ?1 - :match?error(cst_Corrupted_data_bool_value):0}, - read_untagged_char=function(ib){return read_char(ib)}, - read_untagged_int8=function(ib){return read_char(ib)}, - read_untagged_int16= - function(ib) - {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0); - return caml_bytes_get(s,i) << 8 | _a8_}, - read_untagged_int32= - function(ib) - {var - i=read(ib,4), - s=ib[1], - _a6_=caml_bytes_get(s,i + 1 | 0), - x1=caml_bytes_get(s,i) << 8 | _a6_, - _a7_=caml_bytes_get(s,i + 3 | 0), - x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_; - return x1 << 16 | x2}, - read_untagged_float32= - function(ib) - {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))}, - read_untagged_int64= - function(ib) - {return runtime.caml_int64_bits_of_float - (read_untagged_float64(ib))}, - read_untagged_string= - function(ib) - {var - len=read_untagged_uvint(ib), - str=caml_create_bytes(len), - pos=[0,0], - rem=[0,len]; - for(;;) - {if(0 < rem[1]) - {var bytes_read=try_preread(ib,rem[1]); - if(0 === bytes_read) - error(cst_Corrupted_data_string); - else - {caml_call5 - (Stdlib_Bytes[11],ib[1],ib[2],str,pos[1],bytes_read); - ib[2] = ib[2] + bytes_read | 0; - pos[1] = pos[1] + bytes_read | 0; - rem[1] = rem[1] - bytes_read | 0} - continue} - return caml_call1(Stdlib_Bytes[6],str)}}, - read_unit=function(ib){read_untagged_unit(ib);return 948106916}, - read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]}, - read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]}, - read_int16= - function(ib){return [0,-783416972,read_untagged_int16(ib)]}, - read_int32= - function(ib){return [0,-783416530,read_untagged_int32(ib)]}, - read_int64= - function(ib){return [0,-783415859,read_untagged_int64(ib)]}, - read_float32= - function(ib){return [0,928626971,read_untagged_float32(ib)]}, - read_float64= - function(ib){return [0,928627642,read_untagged_float64(ib)]}, - read_uvint= - function(ib){return [0,1063160078,read_untagged_uvint(ib)]}, - read_svint= - function(ib){return [0,412180492,read_untagged_svint(ib)]}, - read_string= - function(ib){return [0,-976970511,read_untagged_string(ib)]}, - read_tree= - function(opt,ib) - {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0); - function read_array(ib) - {var len=read_untagged_uvint(ib); - if(0 === len)return _p_; - var tag=read_tag(ib),read=reader_of_tag(tag); - function _a5_(param){return caml_call1(read,ib)} - return [0, - 951901561, - [0,[0,tag,caml_call2(Stdlib_Array[2],len,_a5_)]]]} - function reader_of_tag(param) - {if(! (26 < param >>> 0)) - switch(param) - {case 0:return read_bool; - case 1:return read_int8; - case 2:return read_int16; - case 3:return read_int32; - case 4:return read_int64; - case 11:return read_float32; - case 12:return read_float64; - case 16:return read_uvint; - case 17:return read_svint; - case 18:return read_string; - case 19:return read_array; - case 20:return read_tuple; - case 21:return read_record; - case 22:return read_num_variant; - case 23:return read_variant; - case 24:return read_unit; - case 25:return read_table; - case 26:return read_shared - } - return error(cst_Corrupted_data_invalid_tag)} - function read_tree(ib) - {return caml_call1(reader_of_tag(read_tag(ib)),ib)} - function read_tuple(ib) - {var len=read_untagged_uvint(ib); - function _a4_(param){return read_tree(ib)} - return [0,726928360,caml_call2(Stdlib_Array[2],len,_a4_)]} - function read_record(ib) - {var len=read_untagged_uvint(ib); - function _a3_(param) - {var - h=read_field_hashtag(ib), - name=caml_call1(unhash,h), - x=read_tree(ib); - return [0,name,h,x]} - return [0,847309489,caml_call2(Stdlib_Array[2],len,_a3_)]} - function read_num_variant_cont(ib,i,has_arg) - {var x=has_arg?[0,read_tree(ib)]:0; - return [0,221365804,[0,i,x]]} - function read_num_variant(ib) - {return read_numtag(ib,read_num_variant_cont)} - function read_variant_cont(ib,h,has_arg) - {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0; - return [0,708012133,[0,name,h,x]]} - function read_variant(ib) - {return read_hashtag(ib,read_variant_cont)} - function read_table(ib) - {var row_num=read_untagged_uvint(ib); - if(0 === row_num)return _q_; - var col_num=read_untagged_uvint(ib); - function _aZ_(param) - {var - h=read_field_hashtag(ib), - name=caml_call1(unhash,h), - tag=read_tag(ib); - return [0,name,h,tag]} - var fields=caml_call2(Stdlib_Array[2],col_num,_aZ_); - function _a0_(param) - {var tag=param[3];return reader_of_tag(tag)} - var readers=caml_call2(Stdlib_Array[15],_a0_,fields); - function _a1_(param) - {function _a2_(j) - {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)} - return caml_call2(Stdlib_Array[2],col_num,_a2_)} - var a=caml_call2(Stdlib_Array[2],row_num,_a1_); - return [0,504440814,[0,[0,fields,a]]]} - function read_shared(ib) - {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib); - if(0 === offset) - {var r=[]; - runtime.caml_update_dummy(r,[0,-775957819,r]); - caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r); - var x=read_tree(ib); - r[2] = x; - return r} - return caml_call2 - (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])} - return read_tree(ib)}, - tree_of_string= - function(unhash,s){return read_tree(unhash,from_string(0,0,s))}, - skip_bytes=function(ib,n){read(ib,n);return 0}, - skip_unit=function(ib){return skip_bytes(ib,1)}, - skip_bool=function(ib){return skip_bytes(ib,1)}, - skip_int8=function(ib){return skip_bytes(ib,1)}, - skip_int16=function(ib){return skip_bytes(ib,2)}, - skip_int32=function(ib){return skip_bytes(ib,4)}, - skip_int64=function(ib){return skip_bytes(ib,8)}, - skip_float32=function(ib){return skip_bytes(ib,4)}, - skip_float64=function(ib){return skip_bytes(ib,8)}, - skip_uvint=function(ib){read_untagged_uvint(ib);return 0}, - skip_svint=function(ib){read_untagged_svint(ib);return 0}, - skip_string= - function(ib) - {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)}, - skipper_of_tag= - function(param) - {if(! (25 < param >>> 0)) - switch(param) - {case 0:return skip_bool; - case 1:return skip_int8; - case 2:return skip_int16; - case 3:return skip_int32; - case 4:return skip_int64; - case 11:return skip_float32; - case 12:return skip_float64; - case 16:return skip_uvint; - case 17:return skip_svint; - case 18:return skip_string; - case 19:return skip_array; - case 20:return skip_tuple; - case 21:return skip_record; - case 22:return skip_num_variant; - case 23:return skip_variant; - case 24:return skip_unit; - case 25:return skip_table - } - return error(cst_Corrupted_data_invalid_tag$0)}, - skip_array= - function(ib) - {var len=read_untagged_uvint(ib); - if(0 === len)return 0; - var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1; - if(! (len < 1)) - {var i=_aX_; - for(;;) - {caml_call1(read,ib); - var _aY_=i + 1 | 0; - if(len !== i){var i=_aY_;continue} - break}} - return 0}, - skip= - function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)}, - skip_tuple= - function(ib) - {var len=read_untagged_uvint(ib),_aV_=1; - if(! (len < 1)) - {var i=_aV_; - for(;;) - {skip(ib); - var _aW_=i + 1 | 0; - if(len !== i){var i=_aW_;continue} - break}} - return 0}, - skip_record= - function(ib) - {var len=read_untagged_uvint(ib),_aT_=1; - if(! (len < 1)) - {var i=_aT_; - for(;;) - {read_field_hashtag(ib); - skip(ib); - var _aU_=i + 1 | 0; - if(len !== i){var i=_aU_;continue} - break}} - return 0}, - skip_num_variant_cont= - function(ib,i,has_arg){return has_arg?skip(ib):has_arg}, - skip_num_variant= - function(ib){return read_numtag(ib,skip_num_variant_cont)}, - skip_variant_cont= - function(ib,h,has_arg){return has_arg?skip(ib):has_arg}, - skip_variant= - function(ib){return read_hashtag(ib,skip_variant_cont)}, - skip_table= - function(ib) - {var row_num=read_untagged_uvint(ib); - if(0 === row_num)return 0; - var col_num=read_untagged_uvint(ib); - function _aO_(param) - {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))} - var readers=caml_call2(Stdlib_Array[2],col_num,_aO_),_aP_=1; - if(! (row_num < 1)) - {var i=_aP_; - for(;;) - {var _aQ_=1; - if(! (col_num < 1)) - {var j=_aQ_; - for(;;) - {caml_call1(caml_check_bound(readers,j)[1 + j],ib); - var _aS_=j + 1 | 0; - if(col_num !== j){var j=_aS_;continue} - break}} - var _aR_=i + 1 | 0; - if(row_num !== i){var i=_aR_;continue} - break}} - return 0}, - array=Easy_format[2], - record=Easy_format[2], - _r_=Easy_format[2], - tuple= - [0, - 0, - _r_[2], - _r_[3], - _r_[4], - 0, - _r_[6], - 0, - _r_[8], - _r_[9], - _r_[10], - _r_[11], - _r_[12], - _r_[13], - _r_[14]], - map= - function(f,a) - {var len=a.length - 1; - if(0 === len) - var _aN_=[0]; - else - {var - r=caml_make_vect(len,caml_call1(f,a[1])), - _aL_=len - 1 | 0, - _aK_=1; - if(! (_aL_ < 1)) - {var i=_aK_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _aM_=i + 1 | 0; - if(_aL_ !== i){var i=_aM_;continue} - break}} - var _aN_=r} - return caml_call1(Stdlib_Array[11],_aN_)}, - format= - function(shared,x) - {var x$0=x; - for(;;) - {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]]; - var _ad_=x$0[1]; - if(708012133 <= _ad_) - {if(847309489 <= _ad_) - {if(928626971 === _ad_) - {var x$1=x$0[2],_ae_=Easy_format[1]; - return [0,caml_call1(Stdlib[35],x$1),_ae_]} - if(951901561 <= _ad_) - {if(1063160078 <= _ad_) - {var x$2=x$0[2],_af_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$2),_af_]} - var _ag_=x$0[2]; - if(_ag_) - {var match=_ag_[1],a=match[2]; - return [1, - [0,cst$3,cst$2,cst$1,array], - map(function(_aJ_){return format(shared,_aJ_)},a)]} - return [0,cst$4,Easy_format[1]]} - if(928627642 <= _ad_) - {var x$3=x$0[2],_ah_=Easy_format[1]; - return [0,caml_call1(Stdlib[35],x$3),_ah_]} - var a$0=x$0[2]; - return [1, - [0,cst$7,cst$6,cst$5,record], - map - (function(param) - {var x=param[3],h=param[2],o=param[1]; - if(o) - var s=o[1],s$0=caml_call2(Stdlib_Printf[4],_B_,s); - else - var s$0=caml_call2(Stdlib_Printf[4],_D_,h); - var - _aG_=format(shared,x), - _aH_=Easy_format[3], - _aI_=Easy_format[1]; - return [2, - [0,[0,caml_call2(Stdlib_Printf[4],_C_,s$0),_aI_],_aH_], - _aG_]}, - a$0)]} - if(737456202 <= _ad_) - {if(815034505 <= _ad_) - {var x$4=x$0[2],_ai_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_s_,x$4),_ai_]} - var - x$5=x$0[2], - _aj_=Easy_format[1], - _ak_=x$5?cst_true:cst_false; - return [0,_ak_,_aj_]} - if(726928360 <= _ad_) - {var a$1=x$0[2]; - return [1, - [0,cst$10,cst$9,cst$8,tuple], - map(function(_aF_){return format(shared,_aF_)},a$1)]} - var - match$0=x$0[2], - o=match$0[3], - h=match$0[2], - opt_name=match$0[1]; - if(opt_name) - var s=opt_name[1],name=caml_call2(Stdlib_Printf[4],_t_,s); - else - var name=caml_call2(Stdlib_Printf[4],_u_,h); - if(o) - {var - x$6=o[1], - _al_=format(shared,x$6), - _am_=Easy_format[3], - _an_=Easy_format[1]; - return [1, - [0,cst$14,cst$13,cst$12,tuple], - [0, - [2, - [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_], - _al_], - 0]]} - var - _ao_=Easy_format[1], - _ap_=caml_call2(Stdlib[28],name,cst$15); - return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]} - if(-775957819 <= _ad_) - {if(412180492 <= _ad_) - {if(504440814 <= _ad_) - {var _aq_=x$0[2]; - if(_aq_) - {var - match$1=_aq_[1], - aa=match$1[2], - header=match$1[1], - _ar_= - function(header) - {return function(a) - {function _aE_(i,x) - {var - match=caml_check_bound(header,i)[1 + i], - h=match[2], - s=match[1]; - return [0,s,h,x]} - return [0,847309489,caml_call2(Stdlib_Array[16],_aE_,a)]}} - (header), - x$7= - [0, - 951901561, - [0,[0,record_tag,caml_call2(Stdlib_Array[15],_ar_,aa)]]], - x$0=x$7; - continue} - return [0,cst$17,Easy_format[1]]} - var x$8=x$0[2],_as_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$8),_as_]} - if(221365804 <= _ad_) - {var - match$2=x$0[2], - o$0=match$2[2], - i=match$2[1], - suffix=0 === i?cst$18:caml_call1(Stdlib[33],i); - if(o$0) - {var - x$9=o$0[1], - _at_=Easy_format[1], - cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_], - _au_=format(shared,x$9); - return [2,[0,cons,Easy_format[3]],_au_]} - var _av_=Easy_format[1]; - return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]} - var x$10=x$0[2],p=shared[2],tbl=shared[1]; - p[1]++; - var - pos=p[1], - offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos); - if(0 === offset) - {var - _aw_=format(shared,x$10), - _ax_=Easy_format[3], - _ay_=Easy_format[1]; - return [2, - [0,[0,caml_call2(Stdlib_Printf[4],_v_,pos),_ay_],_ax_], - _aw_]} - var _az_=Easy_format[1]; - return [0, - caml_call2(Stdlib_Printf[4],_w_,pos - offset | 0), - _az_]} - if(-783416530 <= _ad_) - {if(-783415859 <= _ad_) - {var x$11=x$0[2],_aA_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_x_,x$11),_aA_]} - var x$12=x$0[2],_aB_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_y_,x$12),_aB_]} - if(-783416972 <= _ad_) - {var x$13=x$0[2],_aC_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_z_,x$13),_aC_]} - var s$0=x$0[2],_aD_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_A_,s$0),_aD_]}}, - init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]}, - view_of_tree= - function(t) - {var _ac_=format(init(0),t); - return caml_call3(Easy_format[4][4],0,0,_ac_)}, - print_view_of_tree= - function(t) - {var _ab_=format(init(0),t); - return caml_call3(Easy_format[4][6],0,0,_ab_)}, - output_view_of_tree= - function(oc,t) - {var _aa_=format(init(0),t); - return caml_call4(Easy_format[4][5],0,0,oc,_aa_)}, - view= - function(unhash,s){return view_of_tree(tree_of_string(unhash,s))}, - print_view= - function(unhash,s) - {return print_view_of_tree(tree_of_string(unhash,s))}, - output_view= - function(unhash,oc,s) - {return output_view_of_tree(oc,tree_of_string(unhash,s))}, - Bi_io= - [0, - bool_tag, - int8_tag, - int16_tag, - int32_tag, - int64_tag, - float32_tag, - float64_tag, - uvint_tag, - svint_tag, - string_tag, - array_tag, - tuple_tag, - record_tag, - num_variant_tag, - variant_tag, - unit_tag, - table_tag, - shared_tag, - write_tag, - read_tag, - hash_name, - write_hashtag, - string_of_hashtag, - read_hashtag, - read_field_hashtag, - make_unhash, - write_numtag, - read_numtag, - write_untagged_unit, - write_untagged_bool, - write_untagged_char, - write_untagged_int8, - write_untagged_int16, - write_untagged_int32, - write_untagged_int64, - write_untagged_float32, - write_untagged_float64, - write_untagged_string, - write_untagged_uvint, - write_untagged_svint, - write_unit, - write_bool, - write_char, - write_int8, - write_int16, - write_int32, - write_int64, - write_float32, - write_float64, - write_string, - write_uvint, - write_svint, - read_untagged_unit, - read_untagged_bool, - read_untagged_char, - read_untagged_int8, - read_untagged_int16, - read_untagged_int32, - read_untagged_int64, - read_untagged_float32, - read_untagged_float64, - read_untagged_string, - read_untagged_uvint, - read_untagged_svint, - skip, - write_tree, - string_of_tree, - read_tree, - tree_of_string, - tag_of_tree, - view_of_tree, - view, - print_view_of_tree, - print_view, - output_view_of_tree, - output_view, - safety_test]; - caml_register_global(118,Bi_io,"Bi_io"); - var - split= - function(s) - {var - acc=[0,0], - stop=[0,caml_ml_string_length(s)], - _Y_=stop[1] - 1 | 0; - if(! (_Y_ < 0)) - {var i=_Y_; - for(;;) - {if(44 === caml_string_get(s,i)) - {var start=i + 1 | 0,___=acc[1]; - acc[1] - = - [0, - caml_call3(Stdlib_String[15],s,start,stop[1] - start | 0), - ___]; - stop[1] = i} - var _$_=i - 1 | 0; - if(0 !== i){var i=_$_;continue} - break}} - var _Z_=acc[1]; - return [0,caml_call3(Stdlib_String[15],s,0,stop[1]),_Z_]}, - load_lines= - function(accu,s) - {var ic=caml_call1(Stdlib[79],s),l=[0,accu]; - try - {for(;;) - {var _W_=caml_call1(Stdlib_List[9],l[1]); - l[1] = [0,caml_call1(Stdlib[83],ic),_W_]; - continue}} - catch(_X_) - {_X_ = caml_wrap_exception(_X_); - if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]} - throw _X_}}, - load= - function(ic) - {var buf=caml_call1(Stdlib_Buffer[1],1000); - try - {for(;;) - {var _U_=caml_call1(Stdlib[82],ic); - caml_call2(Stdlib_Buffer[12],buf,_U_); - continue}} - catch(_V_) - {_V_ = caml_wrap_exception(_V_); - if(_V_ === Stdlib[12])return caml_call1(Stdlib_Buffer[2],buf); - throw _V_}}, - symbol=Stdlib_Filename[4], - default_dict_path= - function(param) - {try - {var - _R_=Stdlib_Sys[4], - _S_= - caml_string_notequal(_R_,cst_Cygwin) - ?caml_string_notequal(_R_,cst_Unix) - ?caml_string_notequal(_R_,cst_Win32) - ?0 - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)] - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)] - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)]; - return _S_} - catch(_T_) - {_T_ = caml_wrap_exception(_T_); - if(_T_ === Stdlib[8])return 0; - throw _T_}}, - load_dictionary= - function(dic_file,accu) - {if(dic_file) - {var fn=dic_file[1]; - if(runtime.caml_sys_file_exists(fn)) - try - {var _Q_=load_lines(accu,fn);return _Q_} - catch(e) - {e = caml_wrap_exception(e); - var - _O_=caml_call1(Stdlib_Printexc[1],e), - _P_=caml_call3(Stdlib_Printf[4],_E_,fn,_O_); - return caml_call1(Stdlib[2],_P_)} - return accu} - return accu}, - write_uniq= - function(oc,a) - {var _J_=0 < a.length - 1?1:0; - if(_J_) - {var _K_=caml_check_bound(a,0)[1]; - caml_call3(Stdlib_Printf[1],oc,_F_,_K_); - var - _L_=caml_check_bound(a,0)[1], - _M_= - function(last,x) - {if(caml_string_notequal(last,x)) - caml_call3(Stdlib_Printf[1],oc,_G_,x); - return x}; - caml_call3(Stdlib_Array[17],_M_,_L_,a); - var _N_=0} - else - var _N_=_J_; - return _N_}, - save_dictionary= - function(dic_file,l) - {if(dic_file) - {var fn=dic_file[1],a=caml_call1(Stdlib_Array[12],l); - caml_call2(Stdlib_Array[32],Stdlib_String[9],a); - var - oc=caml_call1(Stdlib[60],fn), - finally$0=function(param){return caml_call1(Stdlib[77],oc)}; - try - {write_uniq(oc,a);var _I_=finally$0(0);return _I_} - catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}} - return 0}, - Bi_dump= - [0, - split, - load_lines, - load, - symbol, - default_dict_path, - load_dictionary, - write_uniq, - save_dictionary]; - caml_register_global(122,Bi_dump,"Bi_dump"); - return} - throw [0,Assert_failure,_H_]} - r[1] = r[1] >>> 1 | 0; - c[1]++; - continue}} - (globalThis)); - - -//# 1 "../../.js/yojson/yojson.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_set=runtime.caml_bytes_set, - caml_check_bound=runtime.caml_check_bound, - caml_classify_float=runtime.caml_classify_float, - caml_create_bytes=runtime.caml_create_bytes, - caml_equal=runtime.caml_equal, - caml_float_of_string=runtime.caml_float_of_string, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int64_of_string=runtime.caml_int64_of_string, - caml_int_of_string=runtime.caml_int_of_string, - caml_lex_engine=runtime.caml_lex_engine, - caml_make_vect=runtime.caml_make_vect, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_register_global=runtime.caml_register_global, - caml_string_equal=runtime.caml_string_equal, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - var - global_data=runtime.caml_get_global_data(), - cst_Cannot_convert_heterogenou= - caml_string_of_jsbytes("Cannot convert heterogenous array to biniou"), - cst_Cannot_convert_big_int_to_= - caml_string_of_jsbytes("Cannot convert big int to biniou"), - cst_Cannot_convert_hashed_fiel= - caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), - cst_Cannot_convert_uvint_to_JS= - caml_string_of_jsbytes("Cannot convert uvint to JSON"), - cst_Cannot_convert_int8_to_JSO= - caml_string_of_jsbytes("Cannot convert int8 to JSON"), - cst_Cannot_convert_hashed_vari= - caml_string_of_jsbytes("Cannot convert hashed variant name to JSON"), - cst_Cannot_convert_num_variant= - caml_string_of_jsbytes("Cannot convert num_variant to JSON"), - cst_Cannot_convert_shared_node= - caml_string_of_jsbytes("Cannot convert shared node to JSON"), - cst_Cannot_convert_int64_to_JS= - caml_string_of_jsbytes("Cannot convert int64 to JSON"), - cst_Cannot_convert_int32_to_JS= - caml_string_of_jsbytes("Cannot convert int32 to JSON"), - cst_Cannot_convert_int16_to_JS= - caml_string_of_jsbytes("Cannot convert int16 to JSON"), - cst_Malformed_biniou_table= - caml_string_of_jsbytes("Malformed biniou table"), - cst_Cannot_convert_hashed_fiel$0= - caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), - cst_Null=caml_string_of_jsbytes("`Null"), - cst_Some=caml_string_of_jsbytes("(Some "), - cst$1=caml_string_of_jsbytes(")"), - cst_None=caml_string_of_jsbytes("None"), - cst_Null$2=caml_string_of_jsbytes("`Null"), - cst_Some$1=caml_string_of_jsbytes("(Some "), - cst$33=caml_string_of_jsbytes(")"), - cst_None$1=caml_string_of_jsbytes("None"), - cst_Unexpected_end_of_input$92= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$93= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$94= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence$1= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$95= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_$1= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re$1= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$96= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal$5= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$97= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$29= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$98= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$30= - caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$99= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$31= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$100= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$32= - caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$101= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$30= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$102= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found$1= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$103= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but$1= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$104= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo$1= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found$1= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$105= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun$1= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found$1= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$106= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun$1= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found$1= - caml_string_of_jsbytes("Expected int64 but found"), - cst_Unexpected_end_of_input$107= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$21=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$22=caml_string_of_jsbytes("Infinity"), - cst_NaN$10=caml_string_of_jsbytes("NaN"), - cst_Expected_a_number_but_foun$1= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found$1= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$108= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$33= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$109= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$7= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$110= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$8= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$111= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$34= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$112= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$35= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$113= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$31= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$114= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$36= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$115= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$32= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$33= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$34= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$116= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$35= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$36= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$37= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$117= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$37= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$118= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$38= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$119= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$38= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$120= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$39= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$121= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$39= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$122= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$40= - caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$123= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$41= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$124= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$42= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$125= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$43= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$126= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$127= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$6= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$128= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$40= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$129= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$9= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$130= - caml_string_of_jsbytes("Unexpected end of input"), - cst$34=caml_string_of_jsbytes("/*"), - cst_Unexpected_end_of_input$131= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$7= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$132= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$41= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$133= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$10= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$134= - caml_string_of_jsbytes("Unexpected end of input"), - cst$35=caml_string_of_jsbytes("/*"), - cst_Expected_or_but_found$42= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$135= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$43= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$136= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$44= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$137= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$44= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$138= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$45= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$139= - caml_string_of_jsbytes("Unexpected end of input"), - cst$36=caml_string_of_jsbytes("*/"), - cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"), - stream$1=[0,1], - cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"), - cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val$1= - caml_string_of_jsbytes("Junk after end of JSON value:"), - cst_Int8_overflow$1=caml_string_of_jsbytes("Int8 overflow"), - cst_Line$1=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$3= - caml_string_of_jsbytes("Root is not an object or array"), - cst_true$3=caml_string_of_jsbytes("true"), - cst_false$3=caml_string_of_jsbytes("false"), - cst_null$5=caml_string_of_jsbytes("null"), - cst_b$2=caml_string_of_jsbytes("\\b"), - cst_t$2=caml_string_of_jsbytes("\\t"), - cst_n$2=caml_string_of_jsbytes("\\n"), - cst_f$2=caml_string_of_jsbytes("\\f"), - cst_r$2=caml_string_of_jsbytes("\\r"), - cst$32=caml_string_of_jsbytes('\\"'), - cst$31=caml_string_of_jsbytes("\\\\"), - cst_u00$2=caml_string_of_jsbytes("\\u00"), - cst_Null$1=caml_string_of_jsbytes("`Null"), - cst_Some$0=caml_string_of_jsbytes("(Some "), - cst$27=caml_string_of_jsbytes(")"), - cst_None$0=caml_string_of_jsbytes("None"), - cst_Unexpected_end_of_input$44= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$45= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$46= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence$0= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$47= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_$0= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re$0= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$48= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal$2= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$49= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$13= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$50= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$14= - caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$51= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$15= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$52= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$16= - caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$53= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$14= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$54= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found$0= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$55= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but$0= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$56= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo$0= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found$0= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$57= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun$0= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found$0= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$58= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun$0= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found$0= - caml_string_of_jsbytes("Expected int64 but found"), - cst_Unexpected_end_of_input$59= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$19=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$20=caml_string_of_jsbytes("Infinity"), - cst_NaN$9=caml_string_of_jsbytes("NaN"), - cst_Expected_a_number_but_foun$0= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found$0= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$60= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$17= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$61= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$3= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$62= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$4= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$63= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$18= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$64= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$19= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$65= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$15= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$66= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$20= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$67= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$16= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$17= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$18= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$68= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$19= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$20= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$21= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$69= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$21= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$70= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$22= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$71= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$22= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$72= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$23= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$73= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$23= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$74= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$24= - caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$75= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$25= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$76= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$26= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$77= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$27= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$78= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$79= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$3= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$80= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$24= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$81= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$5= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$82= - caml_string_of_jsbytes("Unexpected end of input"), - cst$28=caml_string_of_jsbytes("/*"), - cst_Unexpected_end_of_input$83= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$4= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$84= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$25= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$85= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$6= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$86= - caml_string_of_jsbytes("Unexpected end of input"), - cst$29=caml_string_of_jsbytes("/*"), - cst_Expected_or_but_found$26= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$87= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$27= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$88= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$28= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$89= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$28= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$90= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$29= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$91= - caml_string_of_jsbytes("Unexpected end of input"), - cst$30=caml_string_of_jsbytes("*/"), - cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_two_objects_check$0= - caml_string_of_jsbytes("Expected two objects, check inputs"), - cst_Can_t_convert_each_element$0= - caml_string_of_jsbytes("Can't convert each element of non-array type "), - cst_Expected_string_or_null_go$0= - caml_string_of_jsbytes("Expected string or null, got "), - cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "), - cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "), - cst_Expected_int_or_null_got$0= - caml_string_of_jsbytes("Expected int or null, got "), - cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "), - cst_Expected_float_or_null_got$0= - caml_string_of_jsbytes("Expected float or null, got "), - cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "), - cst_Expected_number_or_null_go$0= - caml_string_of_jsbytes("Expected number or null, got "), - cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "), - cst_Expected_bool_or_null_got$0= - caml_string_of_jsbytes("Expected bool or null, got "), - cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "), - cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "), - cst_Can_t_map_function_over_no$0= - caml_string_of_jsbytes("Can't map function over non-array type "), - cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"), - cst_Index$0=caml_string_of_jsbytes("Index "), - cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "), - cst_Can_t_get_index$0=caml_string_of_jsbytes("Can't get index "), - cst_of_non_object_type$0=caml_string_of_jsbytes("' of non-object type "), - cst_Can_t_get_member$0=caml_string_of_jsbytes("Can't get member '"), - cst_null$4=caml_string_of_jsbytes("null"), - cst_object$0=caml_string_of_jsbytes("object"), - cst_array$0=caml_string_of_jsbytes("array"), - cst_bool$0=caml_string_of_jsbytes("bool"), - cst_variant$0=caml_string_of_jsbytes("variant"), - cst_tuple$0=caml_string_of_jsbytes("tuple"), - cst_float$0=caml_string_of_jsbytes("float"), - cst_int$0=caml_string_of_jsbytes("int"), - cst_intlit$0=caml_string_of_jsbytes("intlit"), - cst_string$0=caml_string_of_jsbytes("string"), - stream$0=[0,1], - cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"), - cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val$0= - caml_string_of_jsbytes("Junk after end of JSON value:"), - cst_Int8_overflow$0=caml_string_of_jsbytes("Int8 overflow"), - cst_Line$0=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$2= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$7= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$15= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$16= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$6= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$13=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$13= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$14= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$5= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$12=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$11= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$12= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$8=caml_string_of_jsbytes("NaN"), - cst_Infinity$17=caml_string_of_jsbytes("Infinity"), - cst_Infinity$18=caml_string_of_jsbytes("-Infinity"), - cst_0$11=caml_string_of_jsbytes(".0"), - cst_NaN$7=caml_string_of_jsbytes("NaN"), - cst_0$10=caml_string_of_jsbytes(".0"), - cst_Infinity$15=caml_string_of_jsbytes("Infinity"), - cst_Infinity$16=caml_string_of_jsbytes("-Infinity"), - cst_NaN$6=caml_string_of_jsbytes("NaN"), - cst_0$9=caml_string_of_jsbytes(".0"), - cst_Infinity$13=caml_string_of_jsbytes("Infinity"), - cst_Infinity$14=caml_string_of_jsbytes("-Infinity"), - cst_true$2=caml_string_of_jsbytes("true"), - cst_false$2=caml_string_of_jsbytes("false"), - cst_null$3=caml_string_of_jsbytes("null"), - cst_b$1=caml_string_of_jsbytes("\\b"), - cst_t$1=caml_string_of_jsbytes("\\t"), - cst_n$1=caml_string_of_jsbytes("\\n"), - cst_f$1=caml_string_of_jsbytes("\\f"), - cst_r$1=caml_string_of_jsbytes("\\r"), - cst$26=caml_string_of_jsbytes('\\"'), - cst$25=caml_string_of_jsbytes("\\\\"), - cst_u00$1=caml_string_of_jsbytes("\\u00"), - cst_Null$0=caml_string_of_jsbytes("`Null"), - cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$0= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$1= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$2= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$3= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$4= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$5= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$6= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$7= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$8= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$0= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$9= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$10= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$11= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$12= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$13= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found= - caml_string_of_jsbytes("Expected int64 but found"), - cst_Unexpected_end_of_input$14= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$11=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$12=caml_string_of_jsbytes("Infinity"), - cst_NaN$5=caml_string_of_jsbytes("NaN"), - cst_Expected_a_number_but_foun= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$15= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$2= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$16= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$17= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$0= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$18= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$19= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$20= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$1= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$21= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"), - cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$22= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$2= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$3= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$4= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$23= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$5= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$6= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$7= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$24= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$25= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$26= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$8= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$27= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$28= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$9= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$29= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$30= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$10= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$31= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$11= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$32= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$12= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$33= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$34= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$0= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$35= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$10= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$36= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$1= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$37= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$6=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_token$7=caml_string_of_jsbytes("Invalid token"), - cst$22=caml_string_of_jsbytes("/*"), - cst_Unexpected_end_of_input$38= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$1= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$39= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$2= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$40= - caml_string_of_jsbytes("Unexpected end of input"), - cst$23=caml_string_of_jsbytes("/*"), - cst_Expected_or_but_found$11= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$41= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$12= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$42= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$13= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$43= - caml_string_of_jsbytes("Unexpected end of input"), - cst$24=caml_string_of_jsbytes("*/"), - cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_two_objects_check= - caml_string_of_jsbytes("Expected two objects, check inputs"), - cst_Can_t_convert_each_element= - caml_string_of_jsbytes("Can't convert each element of non-array type "), - cst_Expected_string_or_null_go= - caml_string_of_jsbytes("Expected string or null, got "), - cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "), - cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "), - cst_Expected_int_or_null_got= - caml_string_of_jsbytes("Expected int or null, got "), - cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "), - cst_Expected_float_or_null_got= - caml_string_of_jsbytes("Expected float or null, got "), - cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "), - cst_Expected_number_or_null_go= - caml_string_of_jsbytes("Expected number or null, got "), - cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "), - cst_Expected_bool_or_null_got= - caml_string_of_jsbytes("Expected bool or null, got "), - cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "), - cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "), - cst_Can_t_map_function_over_no= - caml_string_of_jsbytes("Can't map function over non-array type "), - cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"), - cst_Index=caml_string_of_jsbytes("Index "), - cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "), - cst_Can_t_get_index=caml_string_of_jsbytes("Can't get index "), - cst_of_non_object_type=caml_string_of_jsbytes("' of non-object type "), - cst_Can_t_get_member=caml_string_of_jsbytes("Can't get member '"), - cst_null$2=caml_string_of_jsbytes("null"), - cst_object=caml_string_of_jsbytes("object"), - cst_array=caml_string_of_jsbytes("array"), - cst_bool=caml_string_of_jsbytes("bool"), - cst_variant=caml_string_of_jsbytes("variant"), - cst_tuple=caml_string_of_jsbytes("tuple"), - cst_float=caml_string_of_jsbytes("float"), - cst_int=caml_string_of_jsbytes("int"), - cst_intlit=caml_string_of_jsbytes("intlit"), - cst_string=caml_string_of_jsbytes("string"), - stream=[0,1], - cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"), - cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val= - caml_string_of_jsbytes("Junk after end of JSON value:"), - cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"), - cst_Int_overflow$0=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow=caml_string_of_jsbytes("Int overflow"), - cst_Line=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$1= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$4= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$9= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$10= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$3= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$8=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$7= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$8= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$2= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$7=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$5= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$6= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$4=caml_string_of_jsbytes("NaN"), - cst_Infinity$9=caml_string_of_jsbytes("Infinity"), - cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), - cst_0$6=caml_string_of_jsbytes(".0"), - cst_NaN$3=caml_string_of_jsbytes("NaN"), - cst_0$5=caml_string_of_jsbytes(".0"), - cst_Infinity$7=caml_string_of_jsbytes("Infinity"), - cst_Infinity$8=caml_string_of_jsbytes("-Infinity"), - cst_NaN$2=caml_string_of_jsbytes("NaN"), - cst_0$4=caml_string_of_jsbytes(".0"), - cst_Infinity$5=caml_string_of_jsbytes("Infinity"), - cst_Infinity$6=caml_string_of_jsbytes("-Infinity"), - cst_true$1=caml_string_of_jsbytes("true"), - cst_false$1=caml_string_of_jsbytes("false"), - cst_null$1=caml_string_of_jsbytes("null"), - cst_b$0=caml_string_of_jsbytes("\\b"), - cst_t$0=caml_string_of_jsbytes("\\t"), - cst_n$0=caml_string_of_jsbytes("\\n"), - cst_f$0=caml_string_of_jsbytes("\\f"), - cst_r$0=caml_string_of_jsbytes("\\r"), - cst$21=caml_string_of_jsbytes('\\"'), - cst$20=caml_string_of_jsbytes("\\\\"), - cst_u00$0=caml_string_of_jsbytes("\\u00"), - cst_null$0=caml_string_of_jsbytes("null"), - cst$2=caml_string_of_jsbytes("}"), - cst$3=caml_string_of_jsbytes(","), - cst$4=caml_string_of_jsbytes("{"), - cst$5=caml_string_of_jsbytes("{}"), - cst$6=caml_string_of_jsbytes("]"), - cst$7=caml_string_of_jsbytes(","), - cst$8=caml_string_of_jsbytes("["), - cst$9=caml_string_of_jsbytes("[]"), - cst$10=caml_string_of_jsbytes("()"), - cst$11=caml_string_of_jsbytes(")"), - cst$12=caml_string_of_jsbytes(","), - cst$13=caml_string_of_jsbytes("("), - cst_true$0=caml_string_of_jsbytes("true"), - cst_false$0=caml_string_of_jsbytes("false"), - cst$14=caml_string_of_jsbytes(":"), - cst$15=caml_string_of_jsbytes("<"), - cst$16=caml_string_of_jsbytes(">"), - cst$17=caml_string_of_jsbytes(""), - cst$18=caml_string_of_jsbytes(">"), - cst$19=caml_string_of_jsbytes("<"), - cst_Root_is_not_an_object_or_a$0= - caml_string_of_jsbytes - ("Root is not an object or array as requested by the JSON standard"), - cst_Root_is_not_an_object_or_a= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$1= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$3= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$4= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$0= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$3=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$1= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$2= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$2=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$0= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$1=caml_string_of_jsbytes("NaN"), - cst_Infinity$3=caml_string_of_jsbytes("Infinity"), - cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), - cst_0$1=caml_string_of_jsbytes(".0"), - cst_NaN$0=caml_string_of_jsbytes("NaN"), - cst_0$0=caml_string_of_jsbytes(".0"), - cst_Infinity$1=caml_string_of_jsbytes("Infinity"), - cst_Infinity$2=caml_string_of_jsbytes("-Infinity"), - cst_NaN=caml_string_of_jsbytes("NaN"), - cst_0=caml_string_of_jsbytes(".0"), - cst_Infinity=caml_string_of_jsbytes("Infinity"), - cst_Infinity$0=caml_string_of_jsbytes("-Infinity"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst_null=caml_string_of_jsbytes("null"), - cst_b=caml_string_of_jsbytes("\\b"), - cst_t=caml_string_of_jsbytes("\\t"), - cst_n=caml_string_of_jsbytes("\\n"), - cst_f=caml_string_of_jsbytes("\\f"), - cst_r=caml_string_of_jsbytes("\\r"), - cst$0=caml_string_of_jsbytes('\\"'), - cst=caml_string_of_jsbytes("\\\\"), - cst_u00=caml_string_of_jsbytes("\\u00"), - version=caml_string_of_jsbytes("1.7.0"), - cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"), - cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"), - cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"), - cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"), - cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"), - cst_Yojson_Basic_Int_overflow= - caml_string_of_jsbytes("Yojson.Basic.Int_overflow"), - ocaml_lex_tables= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes("")], - cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"), - cst_Yojson_Basic_Util_Type_err= - caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"), - cst_Yojson_Basic_Util_Undefine= - caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"), - cst_Yojson_Safe_Int_overflow= - caml_string_of_jsbytes("Yojson.Safe.Int_overflow"), - ocaml_lex_tables$0= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes("")], - cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"), - cst_Yojson_Safe_Util_Type_erro= - caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"), - cst_Yojson_Safe_Util_Undefined= - caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"), - cst_Yojson_Raw_Int_overflow= - caml_string_of_jsbytes("Yojson.Raw.Int_overflow"), - ocaml_lex_tables$1= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes("")], - cst_Yojson_Raw_Finally=caml_string_of_jsbytes("Yojson.Raw.Finally"), - Bi_io=global_data.Bi_io, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib=global_data.Stdlib, - Bi_outbuf=global_data.Bi_outbuf, - Stdlib_String=global_data.Stdlib__String, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Format=global_data.Stdlib__Format, - Assert_failure=global_data.Assert_failure, - Stdlib_Bytes=global_data.Stdlib__Bytes, - Stdlib_Stream=global_data.Stdlib__Stream, - Stdlib_Printf=global_data.Stdlib__Printf, - Easy_format=global_data.Easy_format, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib_Lexing=global_data.Stdlib__Lexing, - _a_=[0,951901561,0], - _b_=[0,848054398,0], - _c_=[0,848054398,0], - ___= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _S_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _G_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _H_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _J_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _E_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _F_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _L_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _N_= - [0, - [11, - caml_string_of_jsbytes("`Floatlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Floatlit (@[")], - _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _Q_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _R_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _T_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _V_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Bool (@[")], - _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _Y_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _Z_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _$_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ab_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _ac_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ae_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ak_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Float (@[")], - _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _an_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Int (@[")], - _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _aq_= - [0, - [11, - caml_string_of_jsbytes("`Stringlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Stringlit (@[")], - _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _at_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`String (@[")], - _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ah_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Intlit (@[")], - _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _de_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _c8_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cW_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cX_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cZ_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cU_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _cV_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _c1_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c3_= - [0, - [11, - caml_string_of_jsbytes("`Floatlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Floatlit (@[")], - _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c6_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _c7_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _c9_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c$_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Bool (@[")], - _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dc_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _dd_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _df_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dh_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _di_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dk_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dn_= - [0, - [11, - caml_string_of_jsbytes("`Stringlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Stringlit (@[")], - _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dq_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Intlit (@[")], - _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dE_=[0,737456202,1], - _dF_=[0,737456202,0], - _dG_=[0,928231259,caml_string_of_jsbytes("NaN")], - _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")], - _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")], - _dB_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], - caml_string_of_jsbytes("%s '%s%s'")], - _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _dz_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _dv_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _dw_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _dy_= - [0, - [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], - caml_string_of_jsbytes("bytes %i-%i")], - _dx_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], - caml_string_of_jsbytes("%s %i, %s:\n%s")], - _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _dt_=[0,[15,0],caml_string_of_jsbytes("%a")], - _cR_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 0, - [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], - caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _b4_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cg_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _b9_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _b__= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ca_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _b7_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _b8_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _cc_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ce_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _cf_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _ch_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cj_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Bool (@[")], - _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cm_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _cn_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cp_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _b2_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _b3_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _b5_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cs_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Float (@[")], - _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cv_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Int (@[")], - _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cy_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Intlit (@[")], - _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cB_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`String (@[")], - _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cP_=[0,737456202,1], - _cQ_=[0,737456202,0], - _cM_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], - caml_string_of_jsbytes("%s '%s%s'")], - _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _cK_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _cG_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _cH_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _cJ_= - [0, - [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], - caml_string_of_jsbytes("bytes %i-%i")], - _cI_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], - caml_string_of_jsbytes("%s %i, %s:\n%s")], - _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _cE_=[0,[15,0],caml_string_of_jsbytes("%a")], - _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bC_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 0, - [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], - caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _ba_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _a3_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _a4_= - [0, - [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], - caml_string_of_jsbytes("(@[")], - _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _a6_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _a1_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _a2_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _a8_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _a__= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _a$_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _bb_= - [0, - [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], - caml_string_of_jsbytes("@,]@]")], - _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bd_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Bool (@[")], - _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bg_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Float (@[")], - _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bj_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Int (@[")], - _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bm_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`String (@[")], - _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bA_=[0,737456202,1], - _bB_=[0,737456202,0], - _bx_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], - caml_string_of_jsbytes("%s '%s%s'")], - _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _bv_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _br_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _bs_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _bu_= - [0, - [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], - caml_string_of_jsbytes("bytes %i-%i")], - _bt_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], - caml_string_of_jsbytes("%s %i, %s:\n%s")], - _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _bp_=[0,[15,0],caml_string_of_jsbytes("%a")], - _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aB_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 0, - [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], - caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], - _aw_=[0,[15,0],caml_string_of_jsbytes("%a")], - _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _e_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 0, - [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], - caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _d_=[0,caml_string_of_jsbytes("common.ml"),57,4]; - function biniou_of_json(param) - {if(typeof param === "number")return 948106916; - var _li_=param[1]; - if(708012133 <= _li_) - {if(726928360 === _li_) - {var l=param[2],_lj_=caml_call1(Stdlib_Array[12],l); - return [0, - 726928360, - caml_call2(Stdlib_Array[15],biniou_of_json,_lj_)]} - if(848054398 <= _li_) - {if(963043957 <= _li_) - {var - l$0=param[2], - _lk_=caml_call1(Stdlib_Array[12],l$0), - _ll_= - function(param) - {var x=param[2],s=param[1],_lu_=biniou_of_json(x); - return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]}, - a=caml_call2(Stdlib_Array[15],_ll_,_lk_); - return [0,847309489,a]} - var l$1=param[2]; - if(l$1) - {var - _lm_=caml_call1(Stdlib_Array[12],l$1), - a$0=caml_call2(Stdlib_Array[15],biniou_of_json,_lm_), - _ln_=caml_check_bound(a$0,0)[1], - tag=caml_call1(Bi_io[70],_ln_); - try - {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1; - if(! (_lp_ < 1)) - {var i=_lo_; - for(;;) - {var _lr_=caml_check_bound(a$0,i)[1 + i]; - if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3]; - var _ls_=i + 1 | 0; - if(_lp_ !== i){var i=_ls_;continue} - break}} - var _lq_=[0,951901561,[0,[0,tag,a$0]]]; - return _lq_} - catch(_lt_) - {_lt_ = caml_wrap_exception(_lt_); - if(_lt_ === Stdlib[3]) - return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou); - throw _lt_}} - return _a_} - if(737456202 <= _li_){var b=param[2];return [0,737456202,b]} - var match=param[2],o=match[2],s=match[1]; - if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0; - return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]} - if(3654863 <= _li_) - {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]} - var i$0=param[2]; - return [0,412180492,i$0]} - if(-752863768 <= _li_) - return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_); - var s$0=param[2]; - return [0,-976970511,s$0]} - function json_of_biniou(x) - {if(typeof x === "number")return 870828711; - var _k3_=x[1]; - if(708012133 <= _k3_) - {if(847309489 <= _k3_) - {if(951901561 <= _k3_) - {if(1063160078 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS); - var _k4_=x[2]; - if(_k4_) - {var - match=_k4_[1], - a=match[2], - _k5_=caml_call2(Stdlib_Array[15],json_of_biniou,a); - return [0,848054398,caml_call1(Stdlib_Array[11],_k5_)]} - return _b_} - if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]} - var - a$0=x[2], - _k6_= - function(param) - {var _lh_=param[1]; - if(_lh_) - {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]} - return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)}, - _k7_=caml_call2(Stdlib_Array[15],_k6_,a$0); - return [0,963043957,caml_call1(Stdlib_Array[11],_k7_)]} - if(737456202 <= _k3_) - {if(815034505 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO); - var b=x[2]; - return [0,737456202,b]} - if(726928360 <= _k3_) - {var a$1=x[2],_k8_=caml_call2(Stdlib_Array[15],json_of_biniou,a$1); - return [0,726928360,caml_call1(Stdlib_Array[11],_k8_)]} - var _k9_=x[2],_k__=_k9_[1]; - if(_k__) - {var _k$_=_k9_[3],_la_=_k__[1]; - if(_k$_) - {var x$0=_k$_[1]; - return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]} - return [0,708012133,[0,_la_,0]]} - return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)} - if(-775957819 <= _k3_) - {if(412180492 <= _k3_) - {if(504440814 <= _k3_) - {var _lb_=x[2]; - if(_lb_) - {var - match$0=_lb_[1], - rows=match$0[2], - header=match$0[1], - _lc_= - function(a) - {var n=header.length - 1; - if(a.length - 1 !== n) - caml_call1(Stdlib[2],cst_Malformed_biniou_table); - var l=[0,0],_le_=n - 1 | 0; - if(! (_le_ < 0)) - {var i=_le_; - for(;;) - {var - match=caml_check_bound(header,i)[1 + i], - o=match[1], - x=caml_check_bound(a,i)[1 + i]; - if(o) - {var s=o[1],_lf_=l[1]; - l[1] = [0,[0,s,json_of_biniou(x)],_lf_]} - else - caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0); - var _lg_=i - 1 | 0; - if(0 !== i){var i=_lg_;continue} - break}} - return [0,963043957,l[1]]}, - _ld_=caml_call2(Stdlib_Array[15],_lc_,rows); - return [0,848054398,caml_call1(Stdlib_Array[11],_ld_)]} - return _c_} - var i=x[2]; - return [0,3654863,i]} - return 221365804 <= _k3_ - ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant) - :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)} - if(-783416530 <= _k3_) - return -783415859 <= _k3_ - ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS) - :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS); - if(-783416972 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS); - var s=x[2]; - return [0,-976970511,s]} - var Yojson_biniou=[0,biniou_of_json,json_of_biniou]; - caml_register_global(1022,Yojson_biniou,"Yojson_biniou"); - var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)]; - function json_error(s){throw [0,Json_error,s]} - var - End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], - End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)], - End_of_tuple=[248,cst_Yojson_End_of_tuple,caml_fresh_oo_id(0)], - End_of_input=[248,cst_Yojson_End_of_input,caml_fresh_oo_id(0)]; - function utf8_of_code(buf,x) - {var add=Bi_outbuf[15]; - function maxbits(n,x){return 0 === (x >>> n | 0)?1:0} - if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_Char[1],x)); - if(maxbits(11,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],192 | (x >>> 6 | 0) & 31)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - if(maxbits(16,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],224 | (x >>> 12 | 0) & 15)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - if(maxbits(21,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],240 | (x >>> 18 | 0) & 7)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - if(maxbits(26,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],248 | (x >>> 24 | 0) & 3)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - if(maxbits(31,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],252 | (x >>> 30 | 0) & 1)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 24 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - throw [0,Assert_failure,_d_]} - function utf8_of_surrogate_pair(buf,i,j) - {var high10=i - 55296 | 0,low10=j - 56320 | 0; - return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)} - function is_object_or_array(x) - {if(typeof x !== "number") - {var _k2_=x[1],switch$0=0; - if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1; - if(switch$0)return 1} - return 0} - var Lexer_state=[0]; - function init_lexer(buf,fname,opt,param) - {if(opt)var sth=opt[1],lnum=sth;else var lnum=1; - if(buf) - var buf$0=buf[1],buf$1=buf$0; - else - var buf$1=caml_call3(Bi_outbuf[3],0,0,256); - return [0,buf$1,lnum,0,fname]} - function hex(n) - {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_k1_)} - function write_special(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); - start[1] = stop + 1 | 0; - return 0} - function finish_string(src,start,ob) - {try - {var - _k0_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _k0_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _e_, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - throw exc}} - function write_string(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0; - if(! (_kY_ < 0)) - {var i$0=_kX_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special(s,start,i$0,ob,cst); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - if(8 <= c) - {var switch$1=0; - switch(c - 8 | 0) - {case 0:write_special(s,start,i$0,ob,cst_b);break; - case 1:write_special(s,start,i$0,ob,cst_t);break; - case 2:write_special(s,start,i$0,ob,cst_n);break; - case 4:write_special(s,start,i$0,ob,cst_f);break; - case 5:write_special(s,start,i$0,ob,cst_r);break; - case 26:write_special(s,start,i$0,ob,cst$0);break; - case 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - switch(switch$0) - {case 2:break; - case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex(c & 15)); - start[1] = i$0 + 1 | 0; - break - }} - var _kZ_=i$0 + 1 | 0; - if(_kY_ !== i$0){var i$0=_kZ_;continue} - break}} - finish_string(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function json_string_of_string(s) - {var ob=caml_call3(Bi_outbuf[3],0,0,10); - write_string(ob,s); - return caml_call1(Bi_outbuf[4],ob)} - function write_null(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null)} - function write_bool(ob,x) - {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} - var - _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits=caml_call2(Stdlib[17],_g_,_f_); - function write_digits(s,pos,x) - {if(0 === x)return pos; - var - d=x % 10 | 0, - pos$0=write_digits(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} - function write_int(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits); - if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits(s,pos + 1 | 0,x); - return 0} - function float_needs_period(s) - {try - {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; - if(! (_kS_ < 0)) - {var i=_kR_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(! switch$0)throw Stdlib[3]; - var _kU_=i + 1 | 0; - if(_kS_ !== i){var i=_kU_;continue} - break}} - var _kT_=1; - return _kT_} - catch(_kV_) - {_kV_ = caml_wrap_exception(_kV_); - if(_kV_ === Stdlib[3])return 0; - throw _kV_}} - function write_float_fast(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _kP_=0. < x?cst_Infinity:cst_Infinity$0; - return caml_call2(Bi_outbuf[13],ob,_kP_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN); - var s=caml_call2(Stdlib_Printf[4],_h_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kQ_=float_needs_period(s); - return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_} - function write_float(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _kN_=0. < x?cst_Infinity$1:cst_Infinity$2; - return caml_call2(Bi_outbuf[13],ob,_kN_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0); - var - s1=caml_call2(Stdlib_Printf[4],_i_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_j_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kO_=float_needs_period(s); - return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_} - function write_normal_float_prec(significant_figures,ob,x) - {var switcher=significant_figures - 1 | 0; - if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_k_,x); - else - switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_w_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_x_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_y_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_z_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_A_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _kM_=float_needs_period(s); - return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_} - function write_float_prec(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4; - return caml_call2(Bi_outbuf[13],ob,_kL_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) - :write_normal_float_prec(significant_figures,ob,x)} - function write_std_float_fast(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kJ_= - 0. < x - ?cst_Infinity_value_not_allowed - :cst_Infinity_value_not_allowed$0; - return json_error(_kJ_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s); - var s=caml_call2(Stdlib_Printf[4],_B_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kK_=float_needs_period(s); - return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_} - function write_std_float(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kH_= - 0. < x - ?cst_Infinity_value_not_allowed$1 - :cst_Infinity_value_not_allowed$2; - return json_error(_kH_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0); - var - s1=caml_call2(Stdlib_Printf[4],_C_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_D_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kI_=float_needs_period(s); - return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_} - function write_std_float_prec(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kG_= - 0. < x - ?cst_Infinity_value_not_allowed$3 - :cst_Infinity_value_not_allowed$4; - return json_error(_kG_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$1) - :write_normal_float_prec(significant_figures,ob,x)} - var - write_intlit=Bi_outbuf[13], - write_floatlit=Bi_outbuf[13], - write_stringlit=Bi_outbuf[13]; - function iter2(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_t(ob,x) - {if(typeof x === "number")return write_null(ob,0); - var _kF_=x[1]; - if(708012133 <= _kF_) - {if(737456202 <= _kF_) - {if(928231259 <= _kF_) - {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)} - var b=x[2]; - return write_bool(ob,b)} - if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)} - var match=x[2],o=match[2],s$0=match[1]; - return write_variant(ob,s$0,o)} - if(-752863768 === _kF_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - if(3654863 <= _kF_) - {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)} - var i=x[2]; - return write_int(ob,i)} - if(-375152890 <= _kF_) - {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} - var s$3=x[2]; - return write_string(ob,s$3)} - function write_assoc(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; - write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2(f_elt,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} - function write_std_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2(write_std_json,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_std_json(ob,x) - {if(typeof x === "number")return write_null(ob,0); - var _kE_=x[1]; - if(708012133 <= _kE_) - {if(737456202 <= _kE_) - {if(928231259 <= _kE_) - {if(963043957 <= _kE_) - {var - l=x[2], - f_elt= - function(ob,param) - {var x=param[2],s=param[1]; - write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_std_json(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2(f_elt,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _kE_) - {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2(write_std_json,f_sep,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} - var b=x[2]; - return write_bool(ob,b)} - if(726928360 <= _kE_){var l$1=x[2];return write_std_tuple(ob,l$1)} - var match=x[2],o=match[2],s$0=match[1]; - return write_std_variant(ob,s$0,o)} - if(-752863768 === _kE_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - if(3654863 <= _kE_) - {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)} - var i=x[2]; - return write_int(ob,i)} - if(-375152890 <= _kE_) - {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} - var s$3=x[2]; - return write_string(ob,s$3)} - function write_std_variant(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string(ob,s)} - function to_outbuf(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json(ob,x) - :json_error(cst_Root_is_not_an_object_or_a) - :write_t(ob,x)} - function to_string(buf,opt,std,x) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function to_channel(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); - try - {to_channel(0,len,std,oc,x); - var _kD_=caml_call1(Stdlib[76],oc); - return _kD_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf(std,ob,st) - {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)} - return caml_call2(Stdlib_Stream[8],_kB_,st)} - function stream_to_string(buf,opt,std,st) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function stream_to_channel(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); - try - {stream_to_channel(0,len,std,oc,st); - var _kA_=caml_call1(Stdlib[76],oc); - return _kA_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function sort(x) - {if(typeof x !== "number") - {var _kr_=x[1]; - if(726928361 <= _kr_) - {if(848054398 === _kr_) - {var l=x[2],_ks_=caml_call2(Stdlib_List[21],sort,l); - return [0,848054398,caml_call1(Stdlib_List[9],_ks_)]} - if(963043957 === _kr_) - {var - l$0=x[2], - _kt_= - function(param){var v=param[2],k=param[1];return [0,k,sort(v)]}, - _ku_=caml_call2(Stdlib_List[21],_kt_,l$0), - l$1=caml_call1(Stdlib_List[9],_ku_), - _kv_= - function(param,_kz_) - {var b=_kz_[1],a=param[1]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}} - else - if(708012133 === _kr_) - {var _kw_=x[2],_kx_=_kw_[2]; - if(_kx_) - {var v=_kx_[1],k=_kw_[1],v$0=sort(v); - return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} - else - if(726928360 <= _kr_) - {var l$2=x[2],_ky_=caml_call2(Stdlib_List[21],sort,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_ky_)]}} - return x} - function pp(fmt,param) - {if(typeof param === "number") - return caml_call2(Stdlib_Format[13],fmt,cst_Null); - var _kk_=param[1]; - if(708012133 <= _kk_) - {if(737456202 <= _kk_) - {if(928231259 <= _kk_) - {if(963043957 <= _kk_) - {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_E_); - caml_call2(Stdlib_Format[129],fmt,_F_); - var - _kl_=0, - _km_= - function(sep,param) - {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_G_); - caml_call2(Stdlib_Format[129],fmt,_H_); - caml_call3(Stdlib_Format[129],fmt,_I_,key); - caml_call2(Stdlib_Format[129],fmt,_J_); - pp(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_K_); - return 1}; - caml_call3(Stdlib_List[25],_km_,_kl_,xs); - caml_call2(Stdlib_Format[129],fmt,_L_); - return caml_call2(Stdlib_Format[129],fmt,_M_)} - var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_N_); - caml_call3(Stdlib_Format[129],fmt,_O_,x); - return caml_call2(Stdlib_Format[129],fmt,_P_)} - if(848054398 <= _kk_) - {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Q_); - caml_call2(Stdlib_Format[129],fmt,_R_); - var - _kn_=0, - _ko_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); - pp(fmt,x); - return 1}; - caml_call3(Stdlib_List[25],_ko_,_kn_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_T_); - return caml_call2(Stdlib_Format[129],fmt,_U_)} - var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_V_); - caml_call3(Stdlib_Format[129],fmt,_W_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_X_)} - if(726928360 <= _kk_) - {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Y_); - caml_call2(Stdlib_Format[129],fmt,_Z_); - var - _kp_=0, - _kq_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,___); - pp(fmt,e); - return 1}; - caml_call3(Stdlib_List[25],_kq_,_kp_,tup); - caml_call2(Stdlib_Format[129],fmt,_$_); - return caml_call2(Stdlib_Format[129],fmt,_aa_)} - var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_ab_); - caml_call2(Stdlib_Format[129],fmt,_ac_); - caml_call3(Stdlib_Format[129],fmt,_ad_,name); - caml_call2(Stdlib_Format[129],fmt,_ae_); - if(value) - {var x$1=value[1]; - caml_call2(Stdlib_Format[13],fmt,cst_Some); - pp(fmt,x$1); - caml_call2(Stdlib_Format[13],fmt,cst$1)} - else - caml_call2(Stdlib_Format[13],fmt,cst_None); - caml_call2(Stdlib_Format[129],fmt,_af_); - return caml_call2(Stdlib_Format[129],fmt,_ag_)} - if(-752863768 === _kk_) - {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ah_); - caml_call3(Stdlib_Format[129],fmt,_ai_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_aj_)} - if(3654863 <= _kk_) - {if(365180284 <= _kk_) - {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ak_); - caml_call3(Stdlib_Format[129],fmt,_al_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_am_)} - var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_an_); - caml_call3(Stdlib_Format[129],fmt,_ao_,x$4); - return caml_call2(Stdlib_Format[129],fmt,_ap_)} - if(-375152890 <= _kk_) - {var x$5=param[2]; - caml_call2(Stdlib_Format[129],fmt,_aq_); - caml_call3(Stdlib_Format[129],fmt,_ar_,x$5); - return caml_call2(Stdlib_Format[129],fmt,_as_)} - var x$6=param[2]; - caml_call2(Stdlib_Format[129],fmt,_at_); - caml_call3(Stdlib_Format[129],fmt,_au_,x$6); - return caml_call2(Stdlib_Format[129],fmt,_av_)} - function show(x){return caml_call3(Stdlib_Format[133],_aw_,pp,x)} - function equal(a,b) - {var a$0=a,b$0=b; - for(;;) - {if(typeof a$0 === "number") - {if(870828711 === a$0 && 870828711 === b$0)return 1} - else - {var _kd_=a$0[1]; - if(708012133 <= _kd_) - {var switch$0=0; - if(848054398 <= _kd_) - {if(928231259 === _kd_) - {if(typeof b$0 !== "number" && 928231259 === b$0[1]) - {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} - else - if(963043957 === _kd_) - {if(typeof b$0 !== "number" && 963043957 === b$0[1]) - {var - ys=b$0[2], - xs=a$0[2], - compare_keys= - function(param,_kj_) - {var key=_kj_[1],key$0=param[1]; - return caml_call2(Stdlib_String[9],key$0,key)}, - xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), - ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); - try - {var - _ke_= - function(param,_ki_) - {var - value=_ki_[2], - key=_ki_[1], - value$0=param[2], - key$0=param[1], - match=caml_string_equal(key$0,key); - return match?equal(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_ke_,xs$0,ys$0); - return result} - catch(_kh_) - {_kh_ = caml_wrap_exception(_kh_); - if(_kh_[1] === Stdlib[6])return 0; - throw _kh_}}} - else - if - (! - (848054399 <= _kd_) - && - typeof b$0 - !== - "number" - && - 848054398 - === - b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(726928360 === _kd_) - {if(typeof b$0 !== "number" && 726928360 === b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(737456202 === _kd_) - {if(typeof b$0 !== "number" && 737456202 === b$0[1]) - {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} - else - if - (! - (708012134 <= _kd_) - && - typeof b$0 - !== - "number" - && - 708012133 - === - b$0[1]) - {var - _kf_=b$0[2], - value=_kf_[2], - name=_kf_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} - else - if(! value)return 1; - return 0} - return 0} - if(switch$0) - try - {var result$0=caml_call3(Stdlib_List[34],equal,xs$1,ys$1); - return result$0} - catch(_kg_) - {_kg_ = caml_wrap_exception(_kg_); - if(_kg_[1] === Stdlib[6])return 0; - throw _kg_}} - else - if(-375152890 <= _kd_) - {if(3654863 === _kd_) - {if(typeof b$0 !== "number" && 3654863 === b$0[1]) - {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} - else - if(365180284 === _kd_) - {if(typeof b$0 !== "number" && 365180284 === b$0[1]) - {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} - else - if - (! - (-375152889 <= _kd_) - && - typeof b$0 - !== - "number" - && - -375152890 - === - b$0[1]) - {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} - else - if(-976970511 === _kd_) - {if(typeof b$0 !== "number" && -976970511 === b$0[1]) - {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}} - else - if - (-752863768 - === - _kd_ - && - typeof b$0 - !== - "number" - && - -752863768 - === - b$0[1]) - {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}} - return 0}} - var - array=Easy_format[2], - record=Easy_format[2], - _ax_=Easy_format[2], - tuple= - [0, - 0, - _ax_[2], - _ax_[3], - _ax_[4], - 0, - _ax_[6], - 0, - _ax_[8], - _ax_[9], - _ax_[10], - _ax_[11], - _ax_[12], - _ax_[13], - _ax_[14]], - _ay_=Easy_format[2], - variant= - [0, - _ay_[1], - _ay_[2], - _ay_[3], - _ay_[4], - 0, - _ay_[6], - _ay_[7], - _ay_[8], - _ay_[9], - _ay_[10], - _ay_[11], - _ay_[12], - _ay_[13], - _ay_[14]]; - function _az_(std,x) - {var x$0=x; - for(;;) - {if(typeof x$0 === "number")return [0,cst_null$0,Easy_format[1]]; - var _jT_=x$0[1]; - if(726928360 <= _jT_) - {if(737456202 === _jT_) - {var - x$1=x$0[2], - _jU_=Easy_format[1], - _jV_=x$1?cst_true$0:cst_false$0; - return [0,_jV_,_jU_]} - if(! (928231259 <= _jT_)) - {if(848054398 <= _jT_) - {var _jY_=x$0[2]; - if(_jY_) - {var _jZ_=function(_kc_){return _az_(std,_kc_)}; - return [1, - [0,cst$8,cst$7,cst$6,array], - caml_call2(Stdlib_List[19],_jZ_,_jY_)]} - return [0,cst$9,Easy_format[1]]} - var l=x$0[2]; - if(std){var x$2=[0,848054398,l],x$0=x$2;continue} - if(0 === l)return [0,cst$10,Easy_format[1]]; - var _j0_=function(_kb_){return _az_(std,_kb_)}; - return [1, - [0,cst$13,cst$12,cst$11,tuple], - caml_call2(Stdlib_List[19],_j0_,l)]} - if(963043957 <= _jT_) - {var _jW_=x$0[2]; - if(_jW_) - {var - _jX_= - function(param) - {var - x=param[2], - name=param[1], - _j$_=json_string_of_string(name), - s=caml_call2(Stdlib_Printf[4],_aA_,_j$_), - _ka_=_az_(std,x); - return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]}; - return [1, - [0,cst$4,cst$3,cst$2,record], - caml_call2(Stdlib_List[19],_jX_,_jW_)]} - return [0,cst$5,Easy_format[1]]}} - else - {if(3654863 === _jT_) - {var x$3=x$0[2],_j1_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$3),_j1_]} - if(365180284 <= _jT_) - {if(708012133 <= _jT_) - {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1]; - if(_j3_) - {var x$4=_j3_[1]; - if(std) - {var - x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]], - x$0=x$5; - continue} - var - _j5_=json_string_of_string(_j4_), - _j6_=caml_call2(Stdlib[28],_j5_,cst$14), - op=caml_call2(Stdlib[28],cst$15,_j6_); - return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]} - if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue} - var - _j7_=Easy_format[1], - _j8_=json_string_of_string(_j4_), - _j9_=caml_call2(Stdlib[28],_j8_,cst$18); - return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]} - var x$7=x$0[2]; - if(std) - {var ob$0=caml_call3(Bi_outbuf[3],0,0,20); - write_std_float(ob$0,x$7); - var s$0=caml_call1(Bi_outbuf[4],ob$0)} - else - {var ob=caml_call3(Bi_outbuf[3],0,0,20); - write_float(ob,x$7); - var s$0=caml_call1(Bi_outbuf[4],ob)} - return [0,s$0,Easy_format[1]]} - if(! (-752863768 <= _jT_)) - {var s$1=x$0[2],_j__=Easy_format[1]; - return [0,json_string_of_string(s$1),_j__]}} - var s=x$0[2]; - return [0,s,Easy_format[1]]}} - function format(opt,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - if(std && ! is_object_or_array(x)) - return json_error(cst_Root_is_not_an_object_or_a$0); - return _az_(std,x)} - function to_string$0(std,x) - {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)} - function to_channel$0(std,oc,x) - {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)} - function pretty_format(std,x){return format(std,x)} - function pretty_print(std,out,x) - {var _jQ_=pretty_format(std,x); - return caml_call2(Easy_format[4][2],out,_jQ_)} - function pretty_to_string(std,x){return to_string$0(std,x)} - function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)} - function hex$0(n) - {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_jP_)} - function write_special$0(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); - start[1] = stop + 1 | 0; - return 0} - function finish_string$0(src,start,ob) - {try - {var - _jO_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _jO_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _aB_, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - throw exc}} - function write_string$0(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0; - if(! (_jM_ < 0)) - {var i$0=_jL_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$0(s,start,i$0,ob,cst$20); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - if(8 <= c) - {var switch$1=0; - switch(c - 8 | 0) - {case 0:write_special$0(s,start,i$0,ob,cst_b$0);break; - case 1:write_special$0(s,start,i$0,ob,cst_t$0);break; - case 2:write_special$0(s,start,i$0,ob,cst_n$0);break; - case 4:write_special$0(s,start,i$0,ob,cst_f$0);break; - case 5:write_special$0(s,start,i$0,ob,cst_r$0);break; - case 26:write_special$0(s,start,i$0,ob,cst$21);break; - case 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - switch(switch$0) - {case 2:break; - case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$0,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15)); - start[1] = i$0 + 1 | 0; - break - }} - var _jN_=i$0 + 1 | 0; - if(_jM_ !== i$0){var i$0=_jN_;continue} - break}} - finish_string$0(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$0(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$1)} - function write_bool$0(ob,x) - {var _jK_=x?cst_true$1:cst_false$1; - return caml_call2(Bi_outbuf[13],ob,_jK_)} - var - _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_); - function write_digits$0(s,pos,x) - {if(0 === x)return pos; - var - d=x % 10 | 0, - pos$0=write_digits$0(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} - function write_int$0(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits$0); - if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits$0(s,pos + 1 | 0,x); - return 0} - function float_needs_period$0(s) - {try - {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(! switch$0)throw Stdlib[3]; - var _jI_=i + 1 | 0; - if(_jG_ !== i){var i=_jI_;continue} - break}} - var _jH_=1; - return _jH_} - catch(_jJ_) - {_jJ_ = caml_wrap_exception(_jJ_); - if(_jJ_ === Stdlib[3])return 0; - throw _jJ_}} - function write_float_fast$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6; - return caml_call2(Bi_outbuf[13],ob,_jD_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2); - var s=caml_call2(Stdlib_Printf[4],_aE_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jE_=float_needs_period$0(s); - return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_} - function write_float$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _jB_=0. < x?cst_Infinity$7:cst_Infinity$8; - return caml_call2(Bi_outbuf[13],ob,_jB_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3); - var - s1=caml_call2(Stdlib_Printf[4],_aF_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aG_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jC_=float_needs_period$0(s); - return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_} - function write_normal_float_prec$0(significant_figures,ob,x) - {var switcher=significant_figures - 1 | 0; - if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_aH_,x); - else - switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_aI_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_aJ_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_aK_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_aL_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_aM_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_aN_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_aO_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_aX_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _jA_=float_needs_period$0(s); - return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_} - function write_float_prec$0(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10; - return caml_call2(Bi_outbuf[13],ob,_jz_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) - :write_normal_float_prec$0(significant_figures,ob,x)} - function write_std_float_fast$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _jx_= - 0. < x - ?cst_Infinity_value_not_allowed$5 - :cst_Infinity_value_not_allowed$6; - return json_error(_jx_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2); - var s=caml_call2(Stdlib_Printf[4],_aY_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jy_=float_needs_period$0(s); - return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_} - function write_std_float$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _jv_= - 0. < x - ?cst_Infinity_value_not_allowed$7 - :cst_Infinity_value_not_allowed$8; - return json_error(_jv_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); - var - s1=caml_call2(Stdlib_Printf[4],_aZ_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a0_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jw_=float_needs_period$0(s); - return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_} - function write_std_float_prec$0(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _ju_= - 0. < x - ?cst_Infinity_value_not_allowed$9 - :cst_Infinity_value_not_allowed$10; - return json_error(_ju_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$4) - :write_normal_float_prec$0(significant_figures,ob,x)} - function iter2$0(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_list$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$0(write_t$0,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_t$0(ob,x) - {if(typeof x === "number")return write_null$0(ob,0); - var _jt_=x[1]; - if(365180284 <= _jt_) - {if(848054398 <= _jt_) - {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)} - var l$0=x[2]; - return write_list$0(ob,l$0)} - if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)} - var f=x[2]; - return write_float$0(ob,f)} - if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)} - var s=x[2]; - return write_string$0(ob,s)} - function write_assoc$0(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; - write_string$0(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$0(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_std_json$0(ob,x) - {if(typeof x === "number")return write_null$0(ob,0); - var _js_=x[1]; - if(365180284 <= _js_) - {if(848054398 <= _js_) - {if(963043957 <= _js_) - {var - l=x[2], - f_elt= - function(ob,param) - {var x=param[2],s=param[1]; - write_string$0(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_std_json$0(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2$0(write_std_json$0,f_sep$0,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} - if(737456202 <= _js_){var b=x[2];return write_bool$0(ob,b)} - var f=x[2]; - return write_std_float$0(ob,f)} - if(3654863 <= _js_){var i=x[2];return write_int$0(ob,i)} - var s=x[2]; - return write_string$0(ob,s)} - function to_outbuf$0(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$0(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$1) - :write_t$0(ob,x)} - function to_string$1(buf,opt,std,x) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$0(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function to_channel$1(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$0(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$0(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$0(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$0(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); - try - {to_channel$1(0,len,std,oc,x); - var _jr_=caml_call1(Stdlib[76],oc); - return _jr_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$0(std,ob,st) - {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)} - return caml_call2(Stdlib_Stream[8],_jp_,st)} - function stream_to_string$0(buf,opt,std,st) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$0(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function stream_to_channel$0(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$0(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$0(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); - try - {stream_to_channel$0(0,len,std,oc,st); - var _jo_=caml_call1(Stdlib[76],oc); - return _jo_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function sort$0(x) - {if(typeof x !== "number") - {var _ji_=x[1]; - if(848054398 === _ji_) - {var l=x[2],_jj_=caml_call2(Stdlib_List[21],sort$0,l); - return [0,848054398,caml_call1(Stdlib_List[9],_jj_)]} - if(963043957 === _ji_) - {var - l$0=x[2], - _jk_= - function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]}, - _jl_=caml_call2(Stdlib_List[21],_jk_,l$0), - l$1=caml_call1(Stdlib_List[9],_jl_), - _jm_= - function(param,_jn_) - {var b=_jn_[1],a=param[1]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} - return x} - function pp$0(fmt,param) - {if(typeof param === "number") - return caml_call2(Stdlib_Format[13],fmt,cst_Null$0); - var _jd_=param[1]; - if(365180284 <= _jd_) - {if(848054398 <= _jd_) - {if(963043957 <= _jd_) - {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a1_); - caml_call2(Stdlib_Format[129],fmt,_a2_); - var - _je_=0, - _jf_= - function(sep,param) - {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_a3_); - caml_call2(Stdlib_Format[129],fmt,_a4_); - caml_call3(Stdlib_Format[129],fmt,_a5_,key); - caml_call2(Stdlib_Format[129],fmt,_a6_); - pp$0(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_a7_); - return 1}; - caml_call3(Stdlib_List[25],_jf_,_je_,xs); - caml_call2(Stdlib_Format[129],fmt,_a8_); - return caml_call2(Stdlib_Format[129],fmt,_a9_)} - var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a__); - caml_call2(Stdlib_Format[129],fmt,_a$_); - var - _jg_=0, - _jh_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); - pp$0(fmt,x); - return 1}; - caml_call3(Stdlib_List[25],_jh_,_jg_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_bb_); - return caml_call2(Stdlib_Format[129],fmt,_bc_)} - if(737456202 <= _jd_) - {var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bd_); - caml_call3(Stdlib_Format[129],fmt,_be_,x); - return caml_call2(Stdlib_Format[129],fmt,_bf_)} - var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bg_); - caml_call3(Stdlib_Format[129],fmt,_bh_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_bi_)} - if(3654863 <= _jd_) - {var x$1=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bj_); - caml_call3(Stdlib_Format[129],fmt,_bk_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_bl_)} - var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bm_); - caml_call3(Stdlib_Format[129],fmt,_bn_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_bo_)} - function show$0(x){return caml_call3(Stdlib_Format[133],_bp_,pp$0,x)} - function equal$0(a,b) - {if(typeof a === "number") - {if(870828711 === a && 870828711 === b)return 1} - else - {var _i9_=a[1]; - if(365180285 <= _i9_) - {if(737456202 === _i9_) - {if(typeof b !== "number" && 737456202 === b[1]) - {var b$0=b[2],a$0=a[2];return caml_equal(a$0,b$0)}} - else - if(848054398 === _i9_) - {if(typeof b !== "number" && 848054398 === b[1]) - {var ys=b[2],xs=a[2]; - try - {var result=caml_call3(Stdlib_List[34],equal$0,xs,ys); - return result} - catch(_i$_) - {_i$_ = caml_wrap_exception(_i$_); - if(_i$_[1] === Stdlib[6])return 0; - throw _i$_}}} - else - if - (963043957 - === - _i9_ - && - typeof b - !== - "number" - && - 963043957 - === - b[1]) - {var - ys$0=b[2], - xs$0=a[2], - compare_keys= - function(param,_jc_) - {var key=_jc_[1],key$0=param[1]; - return caml_call2(Stdlib_String[9],key$0,key)}, - xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), - ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); - try - {var - _i__= - function(param,_jb_) - {var - value=_jb_[2], - key=_jb_[1], - value$0=param[2], - key$0=param[1], - match=caml_string_equal(key$0,key); - return match?equal$0(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_i__,xs$1,ys$1); - return result$0} - catch(_ja_) - {_ja_ = caml_wrap_exception(_ja_); - if(_ja_[1] === Stdlib[6])return 0; - throw _ja_}}} - else - if(-976970511 === _i9_) - {if(typeof b !== "number" && -976970511 === b[1]) - {var b$1=b[2],a$1=a[2];return caml_equal(a$1,b$1)}} - else - if(3654863 === _i9_) - {if(typeof b !== "number" && 3654863 === b[1]) - {var b$2=b[2],a$2=a[2];return caml_equal(a$2,b$2)}} - else - if - (365180284 <= _i9_ && typeof b !== "number" && 365180284 === b[1]) - {var b$3=b[2],a$3=a[2];return caml_equal(a$3,b$3)}} - return 0} - function pretty_format$0(std,x){return format(std,x)} - function pretty_print$0(std,out,x) - {var _i8_=pretty_format$0(std,x); - return caml_call2(Easy_format[4][2],out,_i8_)} - function pretty_to_string$0(std,x){return to_string$0(std,x)} - function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)} - var - from_channel=Stdlib_Lexing[2], - from_string=Stdlib_Lexing[3], - lexeme=Stdlib_Lexing[8], - sub_lexeme=Stdlib_Lexing[16], - sub_lexeme_char=Stdlib_Lexing[18]; - function hex$1(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_bq_]} - function custom_error(descr,v,lexbuf) - {var - offs=lexbuf[4] - 1 | 0, - bol=v[3], - pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, - pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _i7_=v[4]; - if(_i7_) - var s=_i7_[1],file_line=caml_call2(Stdlib_Printf[4],_br_,s); - else - var file_line=cst_Line; - var - bytes= - pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_bs_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_bt_,file_line,v[2],bytes,descr); - return json_error(msg)} - function lexer_error(descr,v,lexbuf) - {var _i6_=caml_call1(lexeme,lexbuf); - return custom_error - (caml_call3(Stdlib_Printf[4],_bv_,descr,_i6_),v,lexbuf)} - var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}]; - function long_error(descr,v,lexbuf) - {var - junk=caml_call1(lexeme,lexbuf), - extra_junk=caml_call1(read_junk[1],lexbuf); - return custom_error - (caml_call4(Stdlib_Printf[4],_bx_,descr,junk,extra_junk), - v, - lexbuf)} - var - _by_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10=(Stdlib[20] / 10 | 0) - _by_ | 0, - _bz_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10=(Stdlib[19] / 10 | 0) + _bz_ | 0, - Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _i3_=stop - 1 | 0; - if(! (_i3_ < start)) - {var i=start; - for(;;) - {if(max10 <= n[1])throw Int_overflow; - var _i4_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _i4_ | 0; - var _i5_=i + 1 | 0; - if(_i3_ !== i){var i=_i5_;continue} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow} - function extract_negative_int(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _i0_=stop - 1 | 0; - if(! (_i0_ < start)) - {var i=start; - for(;;) - {if(n[1] <= min10)throw Int_overflow; - var _i1_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _i1_ | 0; - var _i2_=i + 1 | 0; - if(_i0_ !== i){var i=_i2_;continue} - break}} - if(0 < n[1])throw Int_overflow; - return n[1]} - function newline(v,lexbuf) - {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} - function add_lexeme(buf,lexbuf) - {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} - function read_object_sep(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} - function read_object_end(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep(v,lexbuf) - {var ocaml_lex_state=257; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}} - function read_array_end(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function finish_escaped_char(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); - case 6: - var - a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0), - b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), - c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), - d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), - _iU_=hex$1(d), - _iV_=hex$1(c$0) << 4, - _iW_=hex$1(b) << 8, - x=hex$1(a) << 12 | _iW_ | _iV_ | _iU_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), - _iX_=hex$1(d$0), - _iY_=hex$1(c$1) << 4, - _iZ_=hex$1(b$0) << 8, - y=hex$1(a$0) << 12 | _iZ_ | _iY_ | _iX_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf); - case 1: - return long_error(cst_Missing_escape_sequence_re,v,lexbuf); - default: - return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} - function finish_string$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char(v,lexbuf);continue a; - case 2:add_lexeme(v[1],lexbuf);continue a; - default: - return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}} - function read_ident(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}} - function finish_comment(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Unterminated_comment,v,lexbuf); - case 2:newline(v,lexbuf);continue a; - default:continue a}}}} - function read_space(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline(v,lexbuf);continue a; - case 1:finish_comment(v,lexbuf);continue a; - case 2:newline(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} - function read_json$2(counter,v,lexbuf) - {var _iT_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_iT_)} - return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_iT_])} - function ocaml_lex_read_json_rec(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(19 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return _bA_; - case 1:return _bB_; - case 2:return 870828711; - case 3:return [0,365180284,Stdlib[24]]; - case 4:return [0,365180284,Stdlib[22]]; - case 5:return [0,365180284,Stdlib[23]]; - case 6: - caml_call1(Bi_outbuf[19],v[1]); - return [0,-976970511,finish_string$1(v,lexbuf)]; - case 7: - try - {var _iJ_=[0,3654863,extract_positive_int(lexbuf)];return _iJ_} - catch(_iS_) - {_iS_ = caml_wrap_exception(_iS_); - if(_iS_ === Int_overflow) - return lexer_error(cst_Int_overflow,v,lexbuf); - throw _iS_} - case 8: - try - {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_} - catch(_iR_) - {_iR_ = caml_wrap_exception(_iR_); - if(_iR_ === Int_overflow) - return lexer_error(cst_Int_overflow$0,v,lexbuf); - throw _iR_} - case 9: - return [0, - 365180284, - caml_float_of_string(caml_call1(lexeme,lexbuf))]; - case 10: - var acc=[0,0]; - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - var field_name=read_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - var _iL_=acc[1]; - acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_iL_]; - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - var field_name$0=read_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - var _iM_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iM_]; - continue}} - catch(_iQ_) - {_iQ_ = caml_wrap_exception(_iQ_); - if(_iQ_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _iQ_} - case 11: - var acc$0=[0,0]; - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - var _iN_=acc$0[1]; - acc$0[1] = [0,read_json(v,lexbuf),_iN_]; - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - read_space(v,lexbuf); - var _iO_=acc$0[1]; - acc$0[1] = [0,read_json(v,lexbuf),_iO_]; - continue}} - catch(_iP_) - {_iP_ = caml_wrap_exception(_iP_); - if(_iP_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _iP_} - case 12:return long_error(cst_Invalid_token,v,lexbuf); - case 13:return long_error(cst_Invalid_token$0,v,lexbuf); - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$2(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 15: - finish_comment(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$2(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 16: - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf); - default:return long_error(cst_Invalid_token$1,v,lexbuf)}}} - function read_json(v,lexbuf) - {return caml_trampoline(read_json$2(0,v,lexbuf))} - function map_string(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var b=v[1],_iI_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_); - case 1:finish_escaped_char(v,lexbuf);continue a; - case 2:add_lexeme(v[1],lexbuf);continue a; - default: - return custom_error(cst_Unexpected_end_of_input$1,v,lexbuf)}}}} - function finish_stringlit(v,lexbuf) - {var ocaml_lex_state=91; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); - caml_bytes_set(s,0,34); - caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); - return caml_call1(Stdlib_Bytes[6],s); - case 1:return long_error(cst_Invalid_string_literal,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}} - function read_gt(v,lexbuf) - {var ocaml_lex_state=111; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$0,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}} - function finish_variant(v,lexbuf) - {var ocaml_lex_state=102; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var x=read_json(v,lexbuf); - read_space(v,lexbuf); - read_gt(v,lexbuf); - return [0,x]; - case 1:return 0; - case 2:return long_error(cst_Expected_or_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}} - function read_lt(v,lexbuf) - {var ocaml_lex_state=107; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}} - function read_comma(v,lexbuf) - {var ocaml_lex_state=115; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}} - function start_any_variant(v,lexbuf) - {var ocaml_lex_state=119; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; - case 2:return -124528282; - case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}} - function read_eof(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null(v,lexbuf) - {var ocaml_lex_state=140; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_null_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}} - function read_null_if_possible(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(5 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}} - function ocaml_lex_read_int_rec(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(4 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _iC_=extract_positive_int(lexbuf);return _iC_} - catch(_iH_) - {_iH_ = caml_wrap_exception(_iH_); - if(_iH_ === Int_overflow) - return lexer_error(cst_Int_overflow$1,v,lexbuf); - throw _iH_} - case 1: - try - {var _iD_=extract_negative_int(lexbuf);return _iD_} - catch(_iG_) - {_iG_ = caml_wrap_exception(_iG_); - if(_iG_ === Int_overflow) - return lexer_error(cst_Int_overflow$2,v,lexbuf); - throw _iG_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iE_=caml_int_of_string(s);return _iE_} - catch(_iF_) - {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)} - case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}} - function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)} - function ocaml_lex_read_int32_rec(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); - return _iy_} - catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iz_=caml_int_of_string(s);return _iz_} - catch(_iA_) - {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)} - case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}} - function read_int32(v,lexbuf) - {return ocaml_lex_read_int32_rec(v,lexbuf,185)} - function ocaml_lex_read_int64_rec(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); - return _iu_} - catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iv_=caml_int64_of_string(s);return _iv_} - catch(_iw_) - {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)} - case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}} - function read_int64(v,lexbuf) - {return ocaml_lex_read_int64_rec(v,lexbuf,192)} - function ocaml_lex_read_number_rec(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(6 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return Stdlib[24]; - case 1:return Stdlib[22]; - case 2:return Stdlib[23]; - case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf)); - case 4: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _is_=caml_float_of_string(s);return _is_} - catch(_it_) - {return caml_string_notequal(s,cst_Infinity$11) - ?caml_string_notequal(s,cst_Infinity$12) - ?caml_string_notequal(s,cst_NaN$5) - ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5:return long_error(cst_Expected_number_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}} - function read_number(v,lexbuf) - {return ocaml_lex_read_number_rec(v,lexbuf,199)} - function read_string(v,lexbuf) - {var ocaml_lex_state=233; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); - case 1:return long_error(cst_Expected_but_found$2,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}} - function map_ident(v,f,lexbuf) - {var ocaml_lex_state=242; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:caml_call1(Bi_outbuf[19],v[1]);return map_string(v,f,lexbuf); - case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_ir_,len); - case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}} - function ocaml_lex_read_sequence_rec - (read_cell,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - read_space(v,lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - continue}} - catch(_iq_) - {_iq_ = caml_wrap_exception(_iq_); - if(_iq_ === End_of_array)return acc[1]; - throw _iq_} - case 1:return long_error(cst_Expected_but_found$3,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}} - function read_sequence(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,0]; - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - var _in_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - read_space(v,lexbuf); - var _io_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_]; - continue}} - catch(_ip_) - {_ip_ = caml_wrap_exception(_ip_); - if(_ip_ === End_of_array)return acc[1]; - throw _ip_} - case 1:return long_error(cst_Expected_but_found$4,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}} - function read_list_rev(read_cell,v,lexbuf) - {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)} - function read_tuple(read_cell,init_acc,v,lexbuf) - {var ocaml_lex_state=262; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return long_error(cst_Invalid_token$2,v,lexbuf); - case 1:return long_error(cst_Expected_but_found$5,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}} - function read_tuple_end(lexbuf) - {var ocaml_lex_state=266; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_tuple; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_tuple_end2(v,std,lexbuf) - {var ocaml_lex_state=268; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error(cst_Expected_or_but_found$3,v,lexbuf); - default:return 0}}} - function read_tuple_sep(v,lexbuf) - {var ocaml_lex_state=271; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_tuple; - case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}} - function read_tuple_sep2(v,std,lexbuf) - {var ocaml_lex_state=276; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1: - if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error(cst_Expected_or_but_found$6,v,lexbuf); - case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields - (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); - continue}} - catch(_im_) - {_im_ = caml_wrap_exception(_im_); - if(_im_ === End_of_object)return acc[1]; - throw _im_} - case 1:return long_error(cst_Expected_but_found$6,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}} - function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf) - {return ocaml_lex_read_abstract_fields - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl(v,lexbuf) - {var ocaml_lex_state=286; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$7,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} - function start_any_tuple(v,lexbuf) - {var ocaml_lex_state=301; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return 1; - case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}} - function read_lpar(v,lexbuf) - {var ocaml_lex_state=306; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$9,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}} - function read_rpar(v,lexbuf) - {var ocaml_lex_state=310; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$10,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}} - function read_lbr(v,lexbuf) - {var ocaml_lex_state=314; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$11,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}} - function read_rbr(v,lexbuf) - {var ocaml_lex_state=318; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$12,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}} - function finish_skip_stringlit(v,lexbuf) - {var ocaml_lex_state=378; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}} - function skip_ident(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit(v,lexbuf); - case 1:return 0; - case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}} - function skip_json$2(counter,v,lexbuf) - {var _il_=322; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)} - return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])} - function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(18 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - skip_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - skip_json(v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - skip_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - skip_json(v,lexbuf); - continue}} - catch(_ik_) - {_ik_ = caml_wrap_exception(_ik_); - if(_ik_ === End_of_object)return 0; - throw _ik_} - case 10: - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - skip_json(v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - read_space(v,lexbuf); - skip_json(v,lexbuf); - continue}} - catch(_ij_) - {_ij_ = caml_wrap_exception(_ij_); - if(_ij_ === End_of_array)return 0; - throw _ij_} - case 11:return long_error(cst_Invalid_token$3,v,lexbuf); - case 12:return long_error(cst_Invalid_token$4,v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$2(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 14: - finish_comment(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$2(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 15: - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 17: - return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf); - default:return long_error(cst_Invalid_token$5,v,lexbuf)}}} - function skip_json(v,lexbuf) - {return caml_trampoline(skip_json$2(0,v,lexbuf))} - function finish_skip_variant(v,lexbuf) - {var ocaml_lex_state=389; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf); - case 1:return 0; - case 2:return long_error(cst_Expected_or_but_found$10,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$36,v,lexbuf)}}} - function finish_buffer_comment(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$24); - case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; - default:add_lexeme(v[1],lexbuf);continue a}}}} - function buffer_colon(v,lexbuf) - {var ocaml_lex_state=499; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error(cst_Expected_but_found$13,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}} - function buffer_array_sep(v,lexbuf) - {var ocaml_lex_state=487; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}} - function buffer_array_end(v,lexbuf) - {var ocaml_lex_state=485; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_object_sep(v,lexbuf) - {var ocaml_lex_state=480; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; - case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}} - function buffer_object_end(v,lexbuf) - {var ocaml_lex_state=478; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_space(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$23); - finish_buffer_comment(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; - case 3:add_lexeme(v[1],lexbuf);continue a; - default:return 0}}}} - function finish_buffer_stringlit(v,lexbuf) - {var ocaml_lex_state=450; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf); - case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}} - function buffer_ident(v,lexbuf) - {var ocaml_lex_state=466; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit(v,lexbuf); - case 1:return add_lexeme(v[1],lexbuf); - case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} - function buffer_json$2(counter,v,lexbuf) - {var _ii_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} - function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme(v[1],lexbuf); - case 1:return finish_buffer_stringlit(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space(v,lexbuf); - buffer_object_end(v,lexbuf); - buffer_ident(v,lexbuf); - buffer_space(v,lexbuf); - buffer_colon(v,lexbuf); - buffer_space(v,lexbuf); - buffer_json(v,lexbuf); - for(;;) - {buffer_space(v,lexbuf); - buffer_object_sep(v,lexbuf); - buffer_space(v,lexbuf); - buffer_ident(v,lexbuf); - buffer_space(v,lexbuf); - buffer_colon(v,lexbuf); - buffer_space(v,lexbuf); - buffer_json(v,lexbuf); - continue}} - catch(_ih_) - {_ih_ = caml_wrap_exception(_ih_); - if(_ih_ === End_of_object)return 0; - throw _ih_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space(v,lexbuf); - buffer_array_end(v,lexbuf); - buffer_json(v,lexbuf); - for(;;) - {buffer_space(v,lexbuf); - buffer_array_sep(v,lexbuf); - buffer_space(v,lexbuf); - buffer_json(v,lexbuf); - continue}} - catch(_ig_) - {_ig_ = caml_wrap_exception(_ig_); - if(_ig_ === End_of_array)return 0; - throw _ig_} - case 4:return long_error(cst_Invalid_token$6,v,lexbuf); - case 5:return long_error(cst_Invalid_token$7,v,lexbuf); - case 6: - add_lexeme(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return buffer_json$2(counter$0,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 7: - caml_call2(Bi_outbuf[13],v[1],cst$22); - finish_buffer_comment(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return buffer_json$2(counter$1,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 8: - caml_call2(Bi_outbuf[15],v[1],10); - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 9: - add_lexeme(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 10: - return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf); - default:return long_error(cst_Invalid_token$8,v,lexbuf)}}} - function buffer_json(v,lexbuf) - {return caml_trampoline(buffer_json$2(0,v,lexbuf))} - function junk(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk[1] = junk; - function read_int8(v,lexbuf) - {var n=read_int(v,lexbuf); - if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); - return lexer_error(cst_Int8_overflow,v,lexbuf)} - function read_list(read_cell,v,lexbuf) - {var _if_=read_list_rev(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_if_)} - function read_array(read_cell,v,lexbuf) - {var l=read_list_rev(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - len=caml_call1(Stdlib_List[1],l), - a=caml_make_vect(len,x), - r=[0,tl], - _ic_=len - 2 | 0; - if(! (_ic_ < 0)) - {var i=_ic_; - for(;;) - {var _id_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _id_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _ie_=i - 1 | 0; - if(0 !== i){var i=_ie_;continue} - break}} - return a} - return [0]} - function read_fields(read_field,init_acc,v) - {return function(_ib_) - {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}} - function from_lexbuf(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space(v,lexbuf); - if(read_eof(lexbuf))throw End_of_input; - var x=read_json(v,lexbuf); - if(1 - stream) - {read_space(v,lexbuf); - if(1 - read_eof(lexbuf)) - long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)} - return x} - function from_string$0(buf,fname,lnum,s) - {try - {var - lexbuf=caml_call2(from_string,0,s), - v=init_lexer(buf,fname,lnum,0), - _h$_=from_lexbuf(v,0,lexbuf); - return _h$_} - catch(_ia_) - {_ia_ = caml_wrap_exception(_ia_); - if(_ia_ === End_of_input)return json_error(cst_Blank_input_data); - throw _ia_}} - function from_channel$0(buf,fname,lnum,ic) - {try - {var - lexbuf=caml_call2(from_channel,0,ic), - v=init_lexer(buf,fname,lnum,0), - _h9_=from_lexbuf(v,0,lexbuf); - return _h9_} - catch(_h__) - {_h__ = caml_wrap_exception(_h__); - if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0); - throw _h__}} - function from_file(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$0(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - return x} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} - var Finally=[248,cst_Yojson_Basic_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf(v,opt,lexbuf) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - catch(fin_e) - {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]} - throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string(buf,fname,lnum,s) - {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))} - function stream_from_channel(buf,fin,fname,lnum,ic) - {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf(v,fin,lexbuf)} - function stream_from_file(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var - fname$0=fname || [0,file], - lexbuf=caml_call2(from_channel,0,ic), - v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf(v,[0,fin],lexbuf)} - function linestream_from_channel(buf,opt,fname,_h6_,ic) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) - {try - {var - line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]]; - return _h7_} - catch(e) - {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var fname$0=fname || [0,file]; - return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)} - function prettify(std,s) - {return pretty_to_string$0(std,from_string$0(0,0,0,s))} - function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))} - function validate_json(path,value){return 0} - var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)]; - function typerr(msg,js) - {if(typeof js === "number") - var _h5_=cst_null$2; - else - var - _h4_=js[1], - _h5_= - 708012133 <= _h4_ - ?726928360 === _h4_ - ?cst_tuple - :848054398 <= _h4_ - ?963043957 <= _h4_?cst_object:cst_array - :737456202 <= _h4_?cst_bool:cst_variant - :3654863 <= _h4_ - ?365180284 <= _h4_?cst_float:cst_int - :-752863768 <= _h4_?cst_intlit:cst_string; - throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]} - var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)]; - function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)} - function assoc(name,obj) - {try - {var _h0_=caml_call2(Stdlib_List[46],name,obj);return _h0_} - catch(_h1_) - {_h1_ = caml_wrap_exception(_h1_); - if(_h1_ === Stdlib[8])return 870828711; - throw _h1_}} - function member(name,js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return assoc(name,obj)} - var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type); - return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)} - function index(i,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var - l=js[2], - len=caml_call1(Stdlib_List[1],l), - wrapped_index=0 <= i?i:len + i | 0; - if(0 <= wrapped_index && ! (len <= wrapped_index)) - return caml_call2(Stdlib_List[7],l,wrapped_index); - var - _hX_=caml_call1(Stdlib[33],i), - _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds); - throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]} - var - _hV_=caml_call1(Stdlib[33],i), - _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type); - return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)} - function map(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} - return typerr(cst_Can_t_map_function_over_no,js)} - function to_assoc(js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return obj} - return typerr(cst_Expected_object_got,js)} - function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} - function to_bool(js) - {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} - return typerr(cst_Expected_bool_got,js)} - function to_bool_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(737456202 === js[1]){var b=js[2];return [0,b]} - return typerr(cst_Expected_bool_or_null_got,js)} - function to_number(js) - {if(typeof js !== "number") - {var _hU_=js[1]; - if(3654863 === _hU_){var i=js[2];return i} - if(365180284 === _hU_){var f=js[2];return f}} - return typerr(cst_Expected_number_got,js)} - function to_number_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - {var _hT_=js[1]; - if(3654863 === _hT_){var i=js[2];return [0,i]} - if(365180284 === _hT_){var f=js[2];return [0,f]}} - return typerr(cst_Expected_number_or_null_go,js)} - function to_float(js) - {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} - return typerr(cst_Expected_float_got,js)} - function to_float_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(365180284 === js[1]){var f=js[2];return [0,f]} - return typerr(cst_Expected_float_or_null_got,js)} - function to_int(js) - {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} - return typerr(cst_Expected_int_got,js)} - function to_int_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(3654863 === js[1]){var i=js[2];return [0,i]} - return typerr(cst_Expected_int_or_null_got,js)} - function to_list(js) - {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} - return typerr(cst_Expected_array_got,js)} - function to_string$2(js) - {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} - return typerr(cst_Expected_string_got,js)} - function to_string_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(-976970511 === js[1]){var s=js[2];return [0,s]} - return typerr(cst_Expected_string_or_null_go,js)} - function convert_each(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} - return typerr(cst_Can_t_convert_each_element,js)} - function filter_map(f,l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1],match=caml_call1(f,x); - if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function flatten(l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1]; - if(typeof x !== "number" && 848054398 === x[1]) - {var - l2=x[2], - acc$0=caml_call2(Stdlib_List[12],l2,acc), - acc=acc$0, - l=tl; - continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function filter_index(i,l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2]; - try - {var _hR_=[0,caml_call2(Stdlib_List[7],l,i)];return _hR_} - catch(_hS_){return 0}} - return 0}, - l)} - function filter_list(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_member(k,l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2]; - try - {var _hP_=[0,caml_call2(Stdlib_List[46],k,l)];return _hP_} - catch(_hQ_){return 0}} - return 0}, - l)} - function filter_assoc(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_bool(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 737456202 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_int(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 3654863 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_float(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 365180284 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_number(l) - {return filter_map - (function(param) - {if(typeof param !== "number") - {var _hO_=param[1]; - if(3654863 === _hO_){var x=param[2];return [0,x]} - if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}} - return 0}, - l)} - function filter_string(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && -976970511 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function keys(o) - {function _hM_(param){var key=param[1];return key} - var _hN_=caml_call1(Stdlib_List[19],_hM_); - return symbol(to_assoc(o),_hN_)} - function values(o) - {function _hK_(param){var value=param[2];return value} - var _hL_=caml_call1(Stdlib_List[19],_hK_); - return symbol(to_assoc(o),_hL_)} - function combine(first,second) - {if - (typeof first - !== - "number" - && - 963043957 - === - first[1] - && - typeof second - !== - "number" - && - 963043957 - === - second[1]) - {var b=second[2],a=first[2]; - return [0,963043957,caml_call2(Stdlib[37],a,b)]} - throw [0,Stdlib[6],cst_Expected_two_objects_check]} - function to_basic(x) - {if(typeof x !== "number") - {var _hD_=x[1]; - if(726928360 <= _hD_) - {if(737456202 !== _hD_) - {if(963043957 <= _hD_) - {var - l=x[2], - _hE_= - function(param) - {var v=param[2],k=param[1];return [0,k,to_basic(v)]}, - _hF_=caml_call2(Stdlib_List[21],_hE_,l); - return [0,963043957,caml_call1(Stdlib_List[9],_hF_)]} - var l$0=x[2],_hG_=caml_call2(Stdlib_List[21],to_basic,l$0); - return [0,848054398,caml_call1(Stdlib_List[9],_hG_)]}} - else - {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]} - if(708012133 <= _hD_) - {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1]; - if(_hI_) - {var v=_hI_[1]; - return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]} - return [0,-976970511,_hJ_]}}} - return x} - function hex$2(n) - {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_hC_)} - function write_special$1(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); - start[1] = stop + 1 | 0; - return 0} - function finish_string$2(src,start,ob) - {try - {var - _hB_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _hB_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _bC_, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - throw exc}} - function write_string$1(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0; - if(! (_hz_ < 0)) - {var i$0=_hy_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$1(s,start,i$0,ob,cst$25); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - if(8 <= c) - {var switch$1=0; - switch(c - 8 | 0) - {case 0:write_special$1(s,start,i$0,ob,cst_b$1);break; - case 1:write_special$1(s,start,i$0,ob,cst_t$1);break; - case 2:write_special$1(s,start,i$0,ob,cst_n$1);break; - case 4:write_special$1(s,start,i$0,ob,cst_f$1);break; - case 5:write_special$1(s,start,i$0,ob,cst_r$1);break; - case 26:write_special$1(s,start,i$0,ob,cst$26);break; - case 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - switch(switch$0) - {case 2:break; - case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$1,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15)); - start[1] = i$0 + 1 | 0; - break - }} - var _hA_=i$0 + 1 | 0; - if(_hz_ !== i$0){var i$0=_hA_;continue} - break}} - finish_string$2(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$1(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} - function write_bool$1(ob,x) - {var _hx_=x?cst_true$2:cst_false$2; - return caml_call2(Bi_outbuf[13],ob,_hx_)} - var - _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_); - function write_digits$1(s,pos,x) - {if(0 === x)return pos; - var - d=x % 10 | 0, - pos$0=write_digits$1(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} - function write_int$1(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits$1); - if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits$1(s,pos + 1 | 0,x); - return 0} - function float_needs_period$1(s) - {try - {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; - if(! (_ht_ < 0)) - {var i=_hs_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(! switch$0)throw Stdlib[3]; - var _hv_=i + 1 | 0; - if(_ht_ !== i){var i=_hv_;continue} - break}} - var _hu_=1; - return _hu_} - catch(_hw_) - {_hw_ = caml_wrap_exception(_hw_); - if(_hw_ === Stdlib[3])return 0; - throw _hw_}} - function write_float_fast$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14; - return caml_call2(Bi_outbuf[13],ob,_hq_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6); - var s=caml_call2(Stdlib_Printf[4],_bF_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hr_=float_needs_period$1(s); - return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_} - function write_float$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _ho_=0. < x?cst_Infinity$15:cst_Infinity$16; - return caml_call2(Bi_outbuf[13],ob,_ho_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7); - var - s1=caml_call2(Stdlib_Printf[4],_bG_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bH_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hp_=float_needs_period$1(s); - return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_} - function write_normal_float_prec$1(significant_figures,ob,x) - {var switcher=significant_figures - 1 | 0; - if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_bI_,x); - else - switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_bJ_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_bK_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_bL_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_bM_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_bN_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_bO_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_bP_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_bQ_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_bR_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_bS_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_bT_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_bU_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_bV_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_bW_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_bX_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_bY_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _hn_=float_needs_period$1(s); - return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_} - function write_float_prec$1(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18; - return caml_call2(Bi_outbuf[13],ob,_hm_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) - :write_normal_float_prec$1(significant_figures,ob,x)} - function write_std_float_fast$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _hk_= - 0. < x - ?cst_Infinity_value_not_allowed$11 - :cst_Infinity_value_not_allowed$12; - return json_error(_hk_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5); - var s=caml_call2(Stdlib_Printf[4],_bZ_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hl_=float_needs_period$1(s); - return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_} - function write_std_float$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _hi_= - 0. < x - ?cst_Infinity_value_not_allowed$13 - :cst_Infinity_value_not_allowed$14; - return json_error(_hi_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6); - var - s1=caml_call2(Stdlib_Printf[4],_b0_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_b1_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hj_=float_needs_period$1(s); - return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_} - function write_std_float_prec$1(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _hh_= - 0. < x - ?cst_Infinity_value_not_allowed$15 - :cst_Infinity_value_not_allowed$16; - return json_error(_hh_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$7) - :write_normal_float_prec$1(significant_figures,ob,x)} - var write_intlit$0=Bi_outbuf[13]; - function iter2$1(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_t$1(ob,x) - {if(typeof x === "number")return write_null$1(ob,0); - var _hg_=x[1]; - if(708012133 <= _hg_) - {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)} - if(848054398 <= _hg_) - {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)} - var l$1=x[2]; - return write_list$1(ob,l$1)} - if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)} - var match=x[2],o=match[2],s=match[1]; - return write_variant$0(ob,s,o)} - if(3654863 <= _hg_) - {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)} - var i=x[2]; - return write_int$1(ob,i)} - if(-752863768 <= _hg_) - {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} - var s$1=x[2]; - return write_string$1(ob,s$1)} - function write_assoc$1(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; - write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$1(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$1(f_elt,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant$0(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string$1(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} - function write_std_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$1(write_std_json$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_std_json$1(ob,x) - {if(typeof x === "number")return write_null$1(ob,0); - var _hf_=x[1]; - if(708012133 <= _hf_) - {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)} - if(848054398 <= _hf_) - {if(963043957 <= _hf_) - {var - l$0=x[2], - f_elt= - function(ob,param) - {var x=param[2],s=param[1]; - write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_std_json$1(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2$1(f_elt,f_sep$1,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,125)} - var l$1=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2$1(write_std_json$1,f_sep$1,ob,l$1); - return caml_call2(Bi_outbuf[15],ob,93)} - if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)} - var match=x[2],o=match[2],s=match[1]; - return write_std_variant$0(ob,s,o)} - if(3654863 <= _hf_) - {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)} - var i=x[2]; - return write_int$1(ob,i)} - if(-752863768 <= _hf_) - {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} - var s$1=x[2]; - return write_string$1(ob,s$1)} - function write_std_variant$0(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json$1(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string$1(ob,s)} - function to_outbuf$1(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$1(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$2) - :write_t$1(ob,x)} - function to_string$3(buf,opt,std,x) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$1(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function to_channel$2(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$1(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$1(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$1(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$1(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); - try - {to_channel$2(0,len,std,oc,x); - var _he_=caml_call1(Stdlib[76],oc); - return _he_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$1(std,ob,st) - {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)} - return caml_call2(Stdlib_Stream[8],_hc_,st)} - function stream_to_string$1(buf,opt,std,st) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$1(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function stream_to_channel$1(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$1(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$1(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); - try - {stream_to_channel$1(0,len,std,oc,st); - var _hb_=caml_call1(Stdlib[76],oc); - return _hb_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function sort$1(x) - {if(typeof x !== "number") - {var _g4_=x[1]; - if(726928361 <= _g4_) - {if(848054398 === _g4_) - {var l=x[2],_g5_=caml_call2(Stdlib_List[21],sort$1,l); - return [0,848054398,caml_call1(Stdlib_List[9],_g5_)]} - if(963043957 === _g4_) - {var - l$0=x[2], - _g6_= - function(param) - {var v=param[2],k=param[1];return [0,k,sort$1(v)]}, - _g7_=caml_call2(Stdlib_List[21],_g6_,l$0), - l$1=caml_call1(Stdlib_List[9],_g7_), - _g8_= - function(param,_ha_) - {var b=_ha_[1],a=param[1]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}} - else - if(708012133 === _g4_) - {var _g9_=x[2],_g__=_g9_[2]; - if(_g__) - {var v=_g__[1],k=_g9_[1],v$0=sort$1(v); - return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} - else - if(726928360 <= _g4_) - {var l$2=x[2],_g$_=caml_call2(Stdlib_List[21],sort$1,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_g$_)]}} - return x} - function pp$1(fmt,param) - {if(typeof param === "number") - return caml_call2(Stdlib_Format[13],fmt,cst_Null$1); - var _gX_=param[1]; - if(708012133 <= _gX_) - {if(726928360 === _gX_) - {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b2_); - caml_call2(Stdlib_Format[129],fmt,_b3_); - var - _gY_=0, - _gZ_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); - pp$1(fmt,e); - return 1}; - caml_call3(Stdlib_List[25],_gZ_,_gY_,tup); - caml_call2(Stdlib_Format[129],fmt,_b5_); - return caml_call2(Stdlib_Format[129],fmt,_b6_)} - if(848054398 <= _gX_) - {if(963043957 <= _gX_) - {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b7_); - caml_call2(Stdlib_Format[129],fmt,_b8_); - var - _g0_=0, - _g1_= - function(sep,param) - {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_b9_); - caml_call2(Stdlib_Format[129],fmt,_b__); - caml_call3(Stdlib_Format[129],fmt,_b$_,key); - caml_call2(Stdlib_Format[129],fmt,_ca_); - pp$1(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_cb_); - return 1}; - caml_call3(Stdlib_List[25],_g1_,_g0_,xs); - caml_call2(Stdlib_Format[129],fmt,_cc_); - return caml_call2(Stdlib_Format[129],fmt,_cd_)} - var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ce_); - caml_call2(Stdlib_Format[129],fmt,_cf_); - var - _g2_=0, - _g3_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); - pp$1(fmt,x); - return 1}; - caml_call3(Stdlib_List[25],_g3_,_g2_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_ch_); - return caml_call2(Stdlib_Format[129],fmt,_ci_)} - if(737456202 <= _gX_) - {var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cj_); - caml_call3(Stdlib_Format[129],fmt,_ck_,x); - return caml_call2(Stdlib_Format[129],fmt,_cl_)} - var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_cm_); - caml_call2(Stdlib_Format[129],fmt,_cn_); - caml_call3(Stdlib_Format[129],fmt,_co_,name); - caml_call2(Stdlib_Format[129],fmt,_cp_); - if(value) - {var x$0=value[1]; - caml_call2(Stdlib_Format[13],fmt,cst_Some$0); - pp$1(fmt,x$0); - caml_call2(Stdlib_Format[13],fmt,cst$27)} - else - caml_call2(Stdlib_Format[13],fmt,cst_None$0); - caml_call2(Stdlib_Format[129],fmt,_cq_); - return caml_call2(Stdlib_Format[129],fmt,_cr_)} - if(3654863 <= _gX_) - {if(365180284 <= _gX_) - {var x$1=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cs_); - caml_call3(Stdlib_Format[129],fmt,_ct_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_cu_)} - var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cv_); - caml_call3(Stdlib_Format[129],fmt,_cw_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_cx_)} - if(-752863768 <= _gX_) - {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cy_); - caml_call3(Stdlib_Format[129],fmt,_cz_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_cA_)} - var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cB_); - caml_call3(Stdlib_Format[129],fmt,_cC_,x$4); - return caml_call2(Stdlib_Format[129],fmt,_cD_)} - function show$1(x){return caml_call3(Stdlib_Format[133],_cE_,pp$1,x)} - function equal$1(a,b) - {var a$0=a,b$0=b; - for(;;) - {if(typeof a$0 === "number") - {if(870828711 === a$0 && 870828711 === b$0)return 1} - else - {var _gQ_=a$0[1]; - if(708012133 <= _gQ_) - {var switch$0=0; - if(737456203 <= _gQ_) - {if(848054398 === _gQ_) - {if(typeof b$0 !== "number" && 848054398 === b$0[1]) - {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} - else - if - (963043957 - === - _gQ_ - && - typeof b$0 - !== - "number" - && - 963043957 - === - b$0[1]) - {var - ys$0=b$0[2], - xs$0=a$0[2], - compare_keys= - function(param,_gW_) - {var key=_gW_[1],key$0=param[1]; - return caml_call2(Stdlib_String[9],key$0,key)}, - xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), - ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); - try - {var - _gR_= - function(param,_gV_) - {var - value=_gV_[2], - key=_gV_[1], - value$0=param[2], - key$0=param[1], - match=caml_string_equal(key$0,key); - return match?equal$1(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_gR_,xs$1,ys$1); - return result$0} - catch(_gU_) - {_gU_ = caml_wrap_exception(_gU_); - if(_gU_[1] === Stdlib[6])return 0; - throw _gU_}}} - else - if(726928360 === _gQ_) - {if(typeof b$0 !== "number" && 726928360 === b$0[1]) - {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} - else - if(708012134 <= _gQ_) - {if - (737456202 - <= - _gQ_ - && - typeof b$0 - !== - "number" - && - 737456202 - === - b$0[1]) - {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} - else - if(typeof b$0 !== "number" && 708012133 === b$0[1]) - {var - _gS_=b$0[2], - value=_gS_[2], - name=_gS_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}} - else - if(! value)return 1; - return 0} - return 0} - if(switch$0) - try - {var result=caml_call3(Stdlib_List[34],equal$1,xs,ys); - return result} - catch(_gT_) - {_gT_ = caml_wrap_exception(_gT_); - if(_gT_[1] === Stdlib[6])return 0; - throw _gT_}} - else - if(-752863767 <= _gQ_) - {if(3654863 === _gQ_) - {if(typeof b$0 !== "number" && 3654863 === b$0[1]) - {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}} - else - if - (365180284 - === - _gQ_ - && - typeof b$0 - !== - "number" - && - 365180284 - === - b$0[1]) - {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} - else - if(-976970511 === _gQ_) - {if(typeof b$0 !== "number" && -976970511 === b$0[1]) - {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} - else - if - (-752863768 - <= - _gQ_ - && - typeof b$0 - !== - "number" - && - -752863768 - === - b$0[1]) - {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} - return 0}} - function pretty_format$1(std,x){return format(std,x)} - function pretty_print$1(std,out,x) - {var _gP_=pretty_format$1(std,x); - return caml_call2(Easy_format[4][2],out,_gP_)} - function pretty_to_string$1(std,x){return to_string$0(std,x)} - function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)} - var - from_channel$1=Stdlib_Lexing[2], - from_string$1=Stdlib_Lexing[3], - lexeme$0=Stdlib_Lexing[8], - sub_lexeme$0=Stdlib_Lexing[16], - sub_lexeme_char$0=Stdlib_Lexing[18]; - function hex$3(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_cF_]} - function custom_error$0(descr,v,lexbuf) - {var - offs=lexbuf[4] - 1 | 0, - bol=v[3], - pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, - pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _gO_=v[4]; - if(_gO_) - var s=_gO_[1],file_line=caml_call2(Stdlib_Printf[4],_cG_,s); - else - var file_line=cst_Line$0; - var - bytes= - pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_cH_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_cI_,file_line,v[2],bytes,descr); - return json_error(msg)} - function lexer_error$0(descr,v,lexbuf) - {var _gN_=caml_call1(lexeme$0,lexbuf); - return custom_error$0 - (caml_call3(Stdlib_Printf[4],_cK_,descr,_gN_),v,lexbuf)} - var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}]; - function long_error$0(descr,v,lexbuf) - {var - junk=caml_call1(lexeme$0,lexbuf), - extra_junk=caml_call1(read_junk$0[1],lexbuf); - return custom_error$0 - (caml_call4(Stdlib_Printf[4],_cM_,descr,junk,extra_junk), - v, - lexbuf)} - var - _cN_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0, - _cO_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0, - Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int$0(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _gK_=stop - 1 | 0; - if(! (_gK_ < start)) - {var i=start; - for(;;) - {if(max10$0 <= n[1])throw Int_overflow$0; - var _gL_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _gL_ | 0; - var _gM_=i + 1 | 0; - if(_gK_ !== i){var i=_gM_;continue} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow$0} - function extract_negative_int$0(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _gH_=stop - 1 | 0; - if(! (_gH_ < start)) - {var i=start; - for(;;) - {if(n[1] <= min10$0)throw Int_overflow$0; - var _gI_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _gI_ | 0; - var _gJ_=i + 1 | 0; - if(_gH_ !== i){var i=_gJ_;continue} - break}} - if(0 < n[1])throw Int_overflow$0; - return n[1]} - function newline$0(v,lexbuf) - {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} - function add_lexeme$0(buf,lexbuf) - {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon$0(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} - function read_object_sep$0(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} - function read_object_end$0(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_tuple_sep$0(v,lexbuf) - {var ocaml_lex_state=271; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_tuple; - case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}} - function read_tuple_end$0(lexbuf) - {var ocaml_lex_state=266; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_tuple; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep$0(v,lexbuf) - {var ocaml_lex_state=257; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}} - function read_array_end$0(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function finish_escaped_char$0(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); - case 6: - var - a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0), - b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), - c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), - d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), - _gB_=hex$3(d), - _gC_=hex$3(c$0) << 4, - _gD_=hex$3(b) << 8, - x=hex$3(a) << 12 | _gD_ | _gC_ | _gB_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), - _gE_=hex$3(d$0), - _gF_=hex$3(c$1) << 4, - _gG_=hex$3(b$0) << 8, - y=hex$3(a$0) << 12 | _gG_ | _gF_ | _gE_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error$0 - (cst_Invalid_low_surrogate_for_$0,v,lexbuf); - case 1: - return long_error$0 - (cst_Missing_escape_sequence_re$0,v,lexbuf); - default: - return custom_error$0 - (cst_Unexpected_end_of_input$48,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} - function finish_string$3(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char$0(v,lexbuf);continue a; - case 2:add_lexeme$0(v[1],lexbuf);continue a; - default: - return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}} - function read_ident$0(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2: - return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}} - function finish_comment$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); - case 2:newline$0(v,lexbuf);continue a; - default:continue a}}}} - function read_space$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline$0(v,lexbuf);continue a; - case 1:finish_comment$0(v,lexbuf);continue a; - case 2:newline$0(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} - function read_gt$0(v,lexbuf) - {var ocaml_lex_state=111; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}} - function read_json$3(counter,v,lexbuf) - {var _gA_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)} - return caml_trampoline_return - (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])} - function ocaml_lex_read_json_rec$0(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(19 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return _cP_; - case 1:return _cQ_; - case 2:return 870828711; - case 3:return [0,365180284,Stdlib[24]]; - case 4:return [0,365180284,Stdlib[22]]; - case 5:return [0,365180284,Stdlib[23]]; - case 6: - caml_call1(Bi_outbuf[19],v[1]); - return [0,-976970511,finish_string$3(v,lexbuf)]; - case 7: - try - {var _gn_=[0,3654863,extract_positive_int$0(lexbuf)];return _gn_} - catch(_gz_) - {_gz_ = caml_wrap_exception(_gz_); - if(_gz_ === Int_overflow$0) - return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gz_} - case 8: - try - {var _go_=[0,3654863,extract_negative_int$0(lexbuf)];return _go_} - catch(_gy_) - {_gy_ = caml_wrap_exception(_gy_); - if(_gy_ === Int_overflow$0) - return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gy_} - case 9: - return [0, - 365180284, - caml_float_of_string(caml_call1(lexeme$0,lexbuf))]; - case 10: - var acc=[0,0]; - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - var field_name=read_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - var _gp_=acc[1]; - acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_gp_]; - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var field_name$0=read_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - var _gq_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gq_]; - continue}} - catch(_gx_) - {_gx_ = caml_wrap_exception(_gx_); - if(_gx_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _gx_} - case 11: - var acc$0=[0,0]; - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - var _gr_=acc$0[1]; - acc$0[1] = [0,read_json$0(v,lexbuf),_gr_]; - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var _gs_=acc$0[1]; - acc$0[1] = [0,read_json$0(v,lexbuf),_gs_]; - continue}} - catch(_gw_) - {_gw_ = caml_wrap_exception(_gw_); - if(_gw_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _gw_} - case 12: - var acc$1=[0,0]; - try - {read_space$0(v,lexbuf); - read_tuple_end$0(lexbuf); - var _gt_=acc$1[1]; - acc$1[1] = [0,read_json$0(v,lexbuf),_gt_]; - for(;;) - {read_space$0(v,lexbuf); - read_tuple_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var _gu_=acc$1[1]; - acc$1[1] = [0,read_json$0(v,lexbuf),_gu_]; - continue}} - catch(_gv_) - {_gv_ = caml_wrap_exception(_gv_); - if(_gv_ === End_of_tuple) - return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _gv_} - case 13: - read_space$0(v,lexbuf); - var cons=read_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]]; - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$3(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 15: - finish_comment$0(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$3(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 16: - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 18: - return custom_error$0(cst_Unexpected_end_of_input$44,v,lexbuf); - default:return long_error$0(cst_Invalid_token$9,v,lexbuf)}}} - function finish_variant$0(v,lexbuf) - {var ocaml_lex_state=102; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var x=read_json$0(v,lexbuf); - read_space$0(v,lexbuf); - read_gt$0(v,lexbuf); - return [0,x]; - case 1:return 0; - case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}} - function read_json$0(v,lexbuf) - {return caml_trampoline(read_json$3(0,v,lexbuf))} - function map_string$0(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var b=v[1],_gm_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_); - case 1:finish_escaped_char$0(v,lexbuf);continue a; - case 2:add_lexeme$0(v[1],lexbuf);continue a; - default: - return custom_error$0(cst_Unexpected_end_of_input$46,v,lexbuf)}}}} - function finish_stringlit$0(v,lexbuf) - {var ocaml_lex_state=91; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); - caml_bytes_set(s,0,34); - caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); - return caml_call1(Stdlib_Bytes[6],s); - case 1:return long_error$0(cst_Invalid_string_literal$2,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}} - function read_lt$0(v,lexbuf) - {var ocaml_lex_state=107; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} - function read_comma$0(v,lexbuf) - {var ocaml_lex_state=115; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$16,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}} - function start_any_variant$0(v,lexbuf) - {var ocaml_lex_state=119; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; - case 2:return -124528282; - case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}} - function read_eof$0(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null$0(v,lexbuf) - {var ocaml_lex_state=140; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_null_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}} - function read_null_if_possible$0(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool$0(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(5 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4: - return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}} - function ocaml_lex_read_int_rec$0(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(4 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _gg_=extract_positive_int$0(lexbuf);return _gg_} - catch(_gl_) - {_gl_ = caml_wrap_exception(_gl_); - if(_gl_ === Int_overflow$0) - return lexer_error$0(cst_Int_overflow$3,v,lexbuf); - throw _gl_} - case 1: - try - {var _gh_=extract_negative_int$0(lexbuf);return _gh_} - catch(_gk_) - {_gk_ = caml_wrap_exception(_gk_); - if(_gk_ === Int_overflow$0) - return lexer_error$0(cst_Int_overflow$4,v,lexbuf); - throw _gk_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _gi_=caml_int_of_string(s);return _gi_} - catch(_gj_) - {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)} - case 3: - return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}} - function read_int$0(v,lexbuf) - {return ocaml_lex_read_int_rec$0(v,lexbuf,176)} - function ocaml_lex_read_int32_rec$0(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); - return _gc_} - catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _gd_=caml_int_of_string(s);return _gd_} - catch(_ge_) - {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)} - case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}} - function read_int32$0(v,lexbuf) - {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)} - function ocaml_lex_read_int64_rec$0(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); - return _f__} - catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _f$_=caml_int64_of_string(s);return _f$_} - catch(_ga_) - {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)} - case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}} - function read_int64$0(v,lexbuf) - {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)} - function ocaml_lex_read_number_rec$0(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(6 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return Stdlib[24]; - case 1:return Stdlib[22]; - case 2:return Stdlib[23]; - case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf)); - case 4: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _f8_=caml_float_of_string(s);return _f8_} - catch(_f9_) - {return caml_string_notequal(s,cst_Infinity$19) - ?caml_string_notequal(s,cst_Infinity$20) - ?caml_string_notequal(s,cst_NaN$9) - ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5: - return long_error$0(cst_Expected_number_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}} - function read_number$0(v,lexbuf) - {return ocaml_lex_read_number_rec$0(v,lexbuf,199)} - function read_string$0(v,lexbuf) - {var ocaml_lex_state=233; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); - case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}} - function map_ident$0(v,f,lexbuf) - {var ocaml_lex_state=242; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return map_string$0(v,f,lexbuf); - case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_f7_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_f7_,len); - case 2: - return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}} - function ocaml_lex_read_sequence_rec$0 - (read_cell,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - continue}} - catch(_f6_) - {_f6_ = caml_wrap_exception(_f6_); - if(_f6_ === End_of_array)return acc[1]; - throw _f6_} - case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}} - function read_sequence$0(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,0]; - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - var _f3_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_]; - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var _f4_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_]; - continue}} - catch(_f5_) - {_f5_ = caml_wrap_exception(_f5_); - if(_f5_ === End_of_array)return acc[1]; - throw _f5_} - case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}} - function read_list_rev$0(read_cell,v,lexbuf) - {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)} - function ocaml_lex_read_tuple_rec - (read_cell,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var pos=[0,0],acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_tuple_end$0(lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - for(;;) - {read_space$0(v,lexbuf); - read_tuple_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - continue}} - catch(_f2_) - {_f2_ = caml_wrap_exception(_f2_); - if(_f2_ === End_of_tuple)return acc[1]; - throw _f2_} - case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}} - function read_tuple$0(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)} - function read_tuple_end2$0(v,std,lexbuf) - {var ocaml_lex_state=268; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); - default:return 0}}} - function read_tuple_sep2$0(v,std,lexbuf) - {var ocaml_lex_state=276; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1: - if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error$0(cst_Expected_or_but_found$20,v,lexbuf); - case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields$0 - (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); - continue}} - catch(_f1_) - {_f1_ = caml_wrap_exception(_f1_); - if(_f1_ === End_of_object)return acc[1]; - throw _f1_} - case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}} - function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf) - {return ocaml_lex_read_abstract_fields$0 - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl$0(v,lexbuf) - {var ocaml_lex_state=286; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} - function start_any_tuple$0(v,lexbuf) - {var ocaml_lex_state=301; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return 1; - case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}} - function read_lpar$0(v,lexbuf) - {var ocaml_lex_state=306; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$24,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}} - function read_rpar$0(v,lexbuf) - {var ocaml_lex_state=310; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$25,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}} - function read_lbr$0(v,lexbuf) - {var ocaml_lex_state=314; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$26,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}} - function read_rbr$0(v,lexbuf) - {var ocaml_lex_state=318; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}} - function finish_skip_stringlit$0(v,lexbuf) - {var ocaml_lex_state=378; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}} - function skip_ident$0(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$0(v,lexbuf); - case 1:return 0; - case 2: - return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} - function skip_json$3(counter,v,lexbuf) - {var _f0_=322; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)} - return caml_trampoline_return - (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} - function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(18 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit$0(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_json$0(v,lexbuf); - continue}} - catch(_fZ_) - {_fZ_ = caml_wrap_exception(_fZ_); - if(_fZ_ === End_of_object)return 0; - throw _fZ_} - case 10: - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_json$0(v,lexbuf); - continue}} - catch(_fY_) - {_fY_ = caml_wrap_exception(_fY_); - if(_fY_ === End_of_array)return 0; - throw _fY_} - case 11: - try - {read_space$0(v,lexbuf); - read_tuple_end$0(lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_tuple_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_json$0(v,lexbuf); - continue}} - catch(_fX_) - {_fX_ = caml_wrap_exception(_fX_); - if(_fX_ === End_of_tuple)return 0; - throw _fX_} - case 12: - read_space$0(v,lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - return finish_skip_variant$0(v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$3(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 14: - finish_comment$0(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$3(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 15: - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 17: - return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf); - default:return long_error$0(cst_Invalid_token$10,v,lexbuf)}}} - function skip_json$0(v,lexbuf) - {return caml_trampoline(skip_json$3(0,v,lexbuf))} - function finish_skip_variant$0(v,lexbuf) - {var ocaml_lex_state=389; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - skip_json$0(v,lexbuf); - read_space$0(v,lexbuf); - return read_gt$0(v,lexbuf); - case 1:return 0; - case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} - function finish_buffer_comment$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30); - case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; - default:add_lexeme$0(v[1],lexbuf);continue a}}}} - function buffer_colon$0(v,lexbuf) - {var ocaml_lex_state=499; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}} - function buffer_tuple_sep(v,lexbuf) - {var ocaml_lex_state=494; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; - case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}} - function buffer_tuple_end(v,lexbuf) - {var ocaml_lex_state=492; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_array_sep$0(v,lexbuf) - {var ocaml_lex_state=487; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}} - function buffer_array_end$0(v,lexbuf) - {var ocaml_lex_state=485; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_object_sep$0(v,lexbuf) - {var ocaml_lex_state=480; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; - case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}} - function buffer_object_end$0(v,lexbuf) - {var ocaml_lex_state=478; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_space$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$29); - finish_buffer_comment$0(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; - case 3:add_lexeme$0(v[1],lexbuf);continue a; - default:return 0}}}} - function finish_buffer_stringlit$0(v,lexbuf) - {var ocaml_lex_state=450; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$0(v[1],lexbuf); - case 1:return long_error$0(cst_Invalid_string_literal$4,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$84,v,lexbuf)}}} - function buffer_ident$0(v,lexbuf) - {var ocaml_lex_state=466; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit$0(v,lexbuf); - case 1:return add_lexeme$0(v[1],lexbuf); - case 2: - return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}} - function buffer_json$3(counter,v,lexbuf) - {var _fW_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} - function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme$0(v[1],lexbuf); - case 1:return finish_buffer_stringlit$0(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space$0(v,lexbuf); - buffer_object_end$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_object_sep$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_fV_) - {_fV_ = caml_wrap_exception(_fV_); - if(_fV_ === End_of_object)return 0; - throw _fV_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space$0(v,lexbuf); - buffer_array_end$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_array_sep$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_fU_) - {_fU_ = caml_wrap_exception(_fU_); - if(_fU_ === End_of_array)return 0; - throw _fU_} - case 4: - try - {caml_call2(Bi_outbuf[15],v[1],40); - buffer_space$0(v,lexbuf); - buffer_tuple_end(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_tuple_sep(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_fT_) - {_fT_ = caml_wrap_exception(_fT_); - if(_fT_ === End_of_tuple)return 0; - throw _fT_} - case 5: - caml_call2(Bi_outbuf[15],v[1],60); - buffer_space$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - return finish_buffer_variant(v,lexbuf); - case 6: - add_lexeme$0(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return buffer_json$3(counter$0,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 7: - caml_call2(Bi_outbuf[13],v[1],cst$28); - finish_buffer_comment$0(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return buffer_json$3(counter$1,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 8: - caml_call2(Bi_outbuf[15],v[1],10); - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 9: - add_lexeme$0(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 10: - return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); - default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}} - function buffer_json$0(v,lexbuf) - {return caml_trampoline(buffer_json$3(0,v,lexbuf))} - function finish_buffer_variant(v,lexbuf) - {var ocaml_lex_state=461; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],58); - buffer_json$0(v,lexbuf); - buffer_space$0(v,lexbuf); - var ocaml_lex_state$1=503; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0:return caml_call2(Bi_outbuf[15],v[1],62); - case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}} - case 1:return caml_call2(Bi_outbuf[15],v[1],62); - case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} - function junk$0(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk$0[1] = junk$0; - function read_int8$0(v,lexbuf) - {var n=read_int$0(v,lexbuf); - if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); - return lexer_error$0(cst_Int8_overflow$0,v,lexbuf)} - function read_list$0(read_cell,v,lexbuf) - {var _fS_=read_list_rev$0(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_fS_)} - function read_array$0(read_cell,v,lexbuf) - {var l=read_list_rev$0(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - len=caml_call1(Stdlib_List[1],l), - a=caml_make_vect(len,x), - r=[0,tl], - _fP_=len - 2 | 0; - if(! (_fP_ < 0)) - {var i=_fP_; - for(;;) - {var _fQ_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _fQ_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _fR_=i - 1 | 0; - if(0 !== i){var i=_fR_;continue} - break}} - return a} - return [0]} - function read_fields$0(read_field,init_acc,v) - {return function(_fO_) - {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}} - function from_lexbuf$0(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space$0(v,lexbuf); - if(read_eof$0(lexbuf))throw End_of_input; - var x=read_json$0(v,lexbuf); - if(1 - stream) - {read_space$0(v,lexbuf); - if(1 - read_eof$0(lexbuf)) - long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)} - return x} - function from_string$2(buf,fname,lnum,s) - {try - {var - lexbuf=caml_call2(from_string$1,0,s), - v=init_lexer(buf,fname,lnum,0), - _fM_=from_lexbuf$0(v,0,lexbuf); - return _fM_} - catch(_fN_) - {_fN_ = caml_wrap_exception(_fN_); - if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1); - throw _fN_}} - function from_channel$2(buf,fname,lnum,ic) - {try - {var - lexbuf=caml_call2(from_channel$1,0,ic), - v=init_lexer(buf,fname,lnum,0), - _fK_=from_lexbuf$0(v,0,lexbuf); - return _fK_} - catch(_fL_) - {_fL_ = caml_wrap_exception(_fL_); - if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2); - throw _fL_}} - function from_file$0(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$2(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - return x} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} - var Finally$0=[248,cst_Yojson_Safe_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf$0(v,opt,lexbuf) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - catch(fin_e) - {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]} - throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string$0(buf,fname,lnum,s) - {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} - function stream_from_channel$0(buf,fin,fname,lnum,ic) - {var - lexbuf=caml_call2(from_channel$1,0,ic), - v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$0(v,fin,lexbuf)} - function stream_from_file$0(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var - fname$0=fname || [0,file], - lexbuf=caml_call2(from_channel$1,0,ic), - v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf$0(v,[0,fin],lexbuf)} - function linestream_from_channel$0(buf,opt,fname,_fH_,ic) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) - {try - {var - line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]]; - return _fI_} - catch(e) - {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file$0(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var fname$0=fname || [0,file]; - return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} - function prettify$0(std,s) - {return pretty_to_string$1(std,from_string$2(0,0,0,s))} - function compact$0(std,s) - {return to_string$3(0,0,0,from_string$2(0,0,0,s))} - function validate_json$0(path,value){return 0} - var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)]; - function typerr$0(msg,js) - {if(typeof js === "number") - var _fG_=cst_null$4; - else - var - _fF_=js[1], - _fG_= - 708012133 <= _fF_ - ?726928360 === _fF_ - ?cst_tuple$0 - :848054398 <= _fF_ - ?963043957 <= _fF_?cst_object$0:cst_array$0 - :737456202 <= _fF_?cst_bool$0:cst_variant$0 - :3654863 <= _fF_ - ?365180284 <= _fF_?cst_float$0:cst_int$0 - :-752863768 <= _fF_?cst_intlit$0:cst_string$0; - throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]} - var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)]; - function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)} - function assoc$0(name,obj) - {try - {var _fB_=caml_call2(Stdlib_List[46],name,obj);return _fB_} - catch(_fC_) - {_fC_ = caml_wrap_exception(_fC_); - if(_fC_ === Stdlib[8])return 870828711; - throw _fC_}} - function member$0(name,js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return assoc$0(name,obj)} - var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); - return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)} - function index$0(i,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var - l=js[2], - len=caml_call1(Stdlib_List[1],l), - wrapped_index=0 <= i?i:len + i | 0; - if(0 <= wrapped_index && ! (len <= wrapped_index)) - return caml_call2(Stdlib_List[7],l,wrapped_index); - var - _fy_=caml_call1(Stdlib[33],i), - _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0); - throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]} - var - _fw_=caml_call1(Stdlib[33],i), - _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0); - return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)} - function map$0(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} - return typerr$0(cst_Can_t_map_function_over_no$0,js)} - function to_assoc$0(js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return obj} - return typerr$0(cst_Expected_object_got$0,js)} - function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} - function to_bool$0(js) - {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} - return typerr$0(cst_Expected_bool_got$0,js)} - function to_bool_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(737456202 === js[1]){var b=js[2];return [0,b]} - return typerr$0(cst_Expected_bool_or_null_got$0,js)} - function to_number$0(js) - {if(typeof js !== "number") - {var _fv_=js[1]; - if(3654863 === _fv_){var i=js[2];return i} - if(365180284 === _fv_){var f=js[2];return f}} - return typerr$0(cst_Expected_number_got$0,js)} - function to_number_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - {var _fu_=js[1]; - if(3654863 === _fu_){var i=js[2];return [0,i]} - if(365180284 === _fu_){var f=js[2];return [0,f]}} - return typerr$0(cst_Expected_number_or_null_go$0,js)} - function to_float$0(js) - {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} - return typerr$0(cst_Expected_float_got$0,js)} - function to_float_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(365180284 === js[1]){var f=js[2];return [0,f]} - return typerr$0(cst_Expected_float_or_null_got$0,js)} - function to_int$0(js) - {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} - return typerr$0(cst_Expected_int_got$0,js)} - function to_int_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(3654863 === js[1]){var i=js[2];return [0,i]} - return typerr$0(cst_Expected_int_or_null_got$0,js)} - function to_list$0(js) - {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} - return typerr$0(cst_Expected_array_got$0,js)} - function to_string$4(js) - {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} - return typerr$0(cst_Expected_string_got$0,js)} - function to_string_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(-976970511 === js[1]){var s=js[2];return [0,s]} - return typerr$0(cst_Expected_string_or_null_go$0,js)} - function convert_each$0(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} - return typerr$0(cst_Can_t_convert_each_element$0,js)} - function filter_map$0(f,l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1],match=caml_call1(f,x); - if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function flatten$0(l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1]; - if(typeof x !== "number" && 848054398 === x[1]) - {var - l2=x[2], - acc$0=caml_call2(Stdlib_List[12],l2,acc), - acc=acc$0, - l=tl; - continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function filter_index$0(i,l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2]; - try - {var _fs_=[0,caml_call2(Stdlib_List[7],l,i)];return _fs_} - catch(_ft_){return 0}} - return 0}, - l)} - function filter_list$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_member$0(k,l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2]; - try - {var _fq_=[0,caml_call2(Stdlib_List[46],k,l)];return _fq_} - catch(_fr_){return 0}} - return 0}, - l)} - function filter_assoc$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_bool$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 737456202 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_int$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 3654863 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_float$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 365180284 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_number$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number") - {var _fp_=param[1]; - if(3654863 === _fp_){var x=param[2];return [0,x]} - if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}} - return 0}, - l)} - function filter_string$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && -976970511 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function keys$0(o) - {function _fn_(param){var key=param[1];return key} - var _fo_=caml_call1(Stdlib_List[19],_fn_); - return symbol$0(to_assoc$0(o),_fo_)} - function values$0(o) - {function _fl_(param){var value=param[2];return value} - var _fm_=caml_call1(Stdlib_List[19],_fl_); - return symbol$0(to_assoc$0(o),_fm_)} - function combine$0(first,second) - {if - (typeof first - !== - "number" - && - 963043957 - === - first[1] - && - typeof second - !== - "number" - && - 963043957 - === - second[1]) - {var b=second[2],a=first[2]; - return [0,963043957,caml_call2(Stdlib[37],a,b)]} - throw [0,Stdlib[6],cst_Expected_two_objects_check$0]} - function hex$4(n) - {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_fk_)} - function write_special$2(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); - start[1] = stop + 1 | 0; - return 0} - function finish_string$4(src,start,ob) - {try - {var - _fj_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _fj_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _cR_, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - throw exc}} - function write_string$2(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0; - if(! (_fh_ < 0)) - {var i$0=_fg_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$2(s,start,i$0,ob,cst$31); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - if(8 <= c) - {var switch$1=0; - switch(c - 8 | 0) - {case 0:write_special$2(s,start,i$0,ob,cst_b$2);break; - case 1:write_special$2(s,start,i$0,ob,cst_t$2);break; - case 2:write_special$2(s,start,i$0,ob,cst_n$2);break; - case 4:write_special$2(s,start,i$0,ob,cst_f$2);break; - case 5:write_special$2(s,start,i$0,ob,cst_r$2);break; - case 26:write_special$2(s,start,i$0,ob,cst$32);break; - case 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - switch(switch$0) - {case 2:break; - case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$2,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15)); - start[1] = i$0 + 1 | 0; - break - }} - var _fi_=i$0 + 1 | 0; - if(_fh_ !== i$0){var i$0=_fi_;continue} - break}} - finish_string$4(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$2(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} - function write_bool$2(ob,x) - {var _ff_=x?cst_true$3:cst_false$3; - return caml_call2(Bi_outbuf[13],ob,_ff_)} - var - _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); - caml_call2(Stdlib[17],_cT_,_cS_); - var - write_intlit$1=Bi_outbuf[13], - write_floatlit$0=Bi_outbuf[13], - write_stringlit$0=Bi_outbuf[13]; - function iter2$2(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list$2(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_t$2(ob,x) - {if(typeof x === "number")return write_null$2(ob,0); - var _fe_=x[1]; - if(737456202 <= _fe_) - {if(928231259 <= _fe_) - {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)} - var b=x[2]; - return write_bool$2(ob,b)} - if(708012133 <= _fe_) - {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)} - var match=x[2],o=match[2],s$0=match[1]; - return write_variant$1(ob,s$0,o)} - if(-375152890 <= _fe_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - var s$2=x[2]; - return caml_call2(Bi_outbuf[13],ob,s$2)} - function write_assoc$2(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; - write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$2(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant$1(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string$2(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} - function write_std_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_std_json$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - function write_std_json$2(ob,x) - {if(typeof x === "number")return write_null$2(ob,0); - var _fd_=x[1]; - if(737456202 <= _fd_) - {if(928231259 <= _fd_) - {if(963043957 <= _fd_) - {var - l=x[2], - f_elt= - function(ob,param) - {var x=param[2],s=param[1]; - write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_std_json$2(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fd_) - {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_std_json$2,f_sep$2,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} - var b=x[2]; - return write_bool$2(ob,b)} - if(708012133 <= _fd_) - {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} - var match=x[2],o=match[2],s$0=match[1]; - return write_std_variant$1(ob,s$0,o)} - if(-375152890 <= _fd_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - var s$2=x[2]; - return caml_call2(Bi_outbuf[13],ob,s$2)} - function write_std_variant$1(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json$2(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string$2(ob,s)} - function to_outbuf$2(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$2(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$3) - :write_t$2(ob,x)} - function to_string$5(buf,opt,std,x) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$2(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function to_channel$3(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$2(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$2(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$2(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$2(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); - try - {to_channel$3(0,len,std,oc,x); - var _fc_=caml_call1(Stdlib[76],oc); - return _fc_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$2(std,ob,st) - {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)} - return caml_call2(Stdlib_Stream[8],_fa_,st)} - function stream_to_string$2(buf,opt,std,st) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} - else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$2(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); - return s} - function stream_to_channel$2(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; - else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$2(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$2(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); - try - {stream_to_channel$2(0,len,std,oc,st); - var _e$_=caml_call1(Stdlib[76],oc); - return _e$_} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function sort$2(x) - {if(typeof x !== "number") - {var _e2_=x[1]; - if(726928361 <= _e2_) - {if(848054398 === _e2_) - {var l=x[2],_e3_=caml_call2(Stdlib_List[21],sort$2,l); - return [0,848054398,caml_call1(Stdlib_List[9],_e3_)]} - if(963043957 === _e2_) - {var - l$0=x[2], - _e4_= - function(param) - {var v=param[2],k=param[1];return [0,k,sort$2(v)]}, - _e5_=caml_call2(Stdlib_List[21],_e4_,l$0), - l$1=caml_call1(Stdlib_List[9],_e5_), - _e6_= - function(param,_e__) - {var b=_e__[1],a=param[1]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}} - else - if(708012133 === _e2_) - {var _e7_=x[2],_e8_=_e7_[2]; - if(_e8_) - {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v); - return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} - else - if(726928360 <= _e2_) - {var l$2=x[2],_e9_=caml_call2(Stdlib_List[21],sort$2,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_e9_)]}} - return x} - function pp$2(fmt,param) - {if(typeof param === "number") - return caml_call2(Stdlib_Format[13],fmt,cst_Null$2); - var _eV_=param[1]; - if(737456202 <= _eV_) - {if(928231259 <= _eV_) - {if(963043957 <= _eV_) - {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cU_); - caml_call2(Stdlib_Format[129],fmt,_cV_); - var - _eW_=0, - _eX_= - function(sep,param) - {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_cW_); - caml_call2(Stdlib_Format[129],fmt,_cX_); - caml_call3(Stdlib_Format[129],fmt,_cY_,key); - caml_call2(Stdlib_Format[129],fmt,_cZ_); - pp$2(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_c0_); - return 1}; - caml_call3(Stdlib_List[25],_eX_,_eW_,xs); - caml_call2(Stdlib_Format[129],fmt,_c1_); - return caml_call2(Stdlib_Format[129],fmt,_c2_)} - var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c3_); - caml_call3(Stdlib_Format[129],fmt,_c4_,x); - return caml_call2(Stdlib_Format[129],fmt,_c5_)} - if(848054398 <= _eV_) - {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c6_); - caml_call2(Stdlib_Format[129],fmt,_c7_); - var - _eY_=0, - _eZ_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); - pp$2(fmt,x); - return 1}; - caml_call3(Stdlib_List[25],_eZ_,_eY_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_c9_); - return caml_call2(Stdlib_Format[129],fmt,_c__)} - var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c$_); - caml_call3(Stdlib_Format[129],fmt,_da_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_db_)} - if(708012133 <= _eV_) - {if(726928360 <= _eV_) - {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dc_); - caml_call2(Stdlib_Format[129],fmt,_dd_); - var - _e0_=0, - _e1_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); - pp$2(fmt,e); - return 1}; - caml_call3(Stdlib_List[25],_e1_,_e0_,tup); - caml_call2(Stdlib_Format[129],fmt,_df_); - return caml_call2(Stdlib_Format[129],fmt,_dg_)} - var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_dh_); - caml_call2(Stdlib_Format[129],fmt,_di_); - caml_call3(Stdlib_Format[129],fmt,_dj_,name); - caml_call2(Stdlib_Format[129],fmt,_dk_); - if(value) - {var x$1=value[1]; - caml_call2(Stdlib_Format[13],fmt,cst_Some$1); - pp$2(fmt,x$1); - caml_call2(Stdlib_Format[13],fmt,cst$33)} - else - caml_call2(Stdlib_Format[13],fmt,cst_None$1); - caml_call2(Stdlib_Format[129],fmt,_dl_); - return caml_call2(Stdlib_Format[129],fmt,_dm_)} - if(-375152890 <= _eV_) - {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dn_); - caml_call3(Stdlib_Format[129],fmt,_do_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_dp_)} - var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dq_); - caml_call3(Stdlib_Format[129],fmt,_dr_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_ds_)} - function show$2(x){return caml_call3(Stdlib_Format[133],_dt_,pp$2,x)} - function equal$2(a,b) - {var a$0=a,b$0=b; - for(;;) - {if(typeof a$0 === "number") - {if(870828711 === a$0 && 870828711 === b$0)return 1} - else - {var _eO_=a$0[1],switch$0=0; - if(726928361 <= _eO_) - {if(848054399 <= _eO_) - {if(928231259 === _eO_) - {if(typeof b$0 !== "number" && 928231259 === b$0[1]) - {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} - else - if - (963043957 - === - _eO_ - && - typeof b$0 - !== - "number" - && - 963043957 - === - b$0[1]) - {var - ys=b$0[2], - xs=a$0[2], - compare_keys= - function(param,_eU_) - {var key=_eU_[1],key$0=param[1]; - return caml_call2(Stdlib_String[9],key$0,key)}, - xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), - ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); - try - {var - _eP_= - function(param,_eT_) - {var - value=_eT_[2], - key=_eT_[1], - value$0=param[2], - key$0=param[1], - match=caml_string_equal(key$0,key); - return match?equal$2(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_eP_,xs$0,ys$0); - return result} - catch(_eS_) - {_eS_ = caml_wrap_exception(_eS_); - if(_eS_[1] === Stdlib[6])return 0; - throw _eS_}}} - else - if(737456202 === _eO_) - {if(typeof b$0 !== "number" && 737456202 === b$0[1]) - {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} - else - if - (848054398 - <= - _eO_ - && - typeof b$0 - !== - "number" - && - 848054398 - === - b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(-375152889 <= _eO_) - {if(708012133 === _eO_) - {if(typeof b$0 !== "number" && 708012133 === b$0[1]) - {var - _eQ_=b$0[2], - value=_eQ_[2], - name=_eQ_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} - else - if(! value)return 1; - return 0} - return 0}} - else - if - (726928360 - <= - _eO_ - && - typeof b$0 - !== - "number" - && - 726928360 - === - b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(-752863768 === _eO_) - {if(typeof b$0 !== "number" && -752863768 === b$0[1]) - {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} - else - if - (-375152890 - <= - _eO_ - && - typeof b$0 - !== - "number" - && - -375152890 - === - b$0[1]) - {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)} - if(switch$0) - try - {var result$0=caml_call3(Stdlib_List[34],equal$2,xs$1,ys$1); - return result$0} - catch(_eR_) - {_eR_ = caml_wrap_exception(_eR_); - if(_eR_[1] === Stdlib[6])return 0; - throw _eR_}} - return 0}} - function pretty_format$2(std,x){return format(std,x)} - function pretty_print$2(std,out,x) - {var _eN_=pretty_format$2(std,x); - return caml_call2(Easy_format[4][2],out,_eN_)} - function pretty_to_string$2(std,x){return to_string$0(std,x)} - function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)} - var - from_channel$3=Stdlib_Lexing[2], - from_string$3=Stdlib_Lexing[3], - lexeme$1=Stdlib_Lexing[8], - sub_lexeme$1=Stdlib_Lexing[16], - sub_lexeme_char$1=Stdlib_Lexing[18]; - function hex$5(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_du_]} - function custom_error$1(descr,v,lexbuf) - {var - offs=lexbuf[4] - 1 | 0, - bol=v[3], - pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, - pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _eM_=v[4]; - if(_eM_) - var s=_eM_[1],file_line=caml_call2(Stdlib_Printf[4],_dv_,s); - else - var file_line=cst_Line$1; - var - bytes= - pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_dw_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_dx_,file_line,v[2],bytes,descr); - return json_error(msg)} - function lexer_error$1(descr,v,lexbuf) - {var _eL_=caml_call1(lexeme$1,lexbuf); - return custom_error$1 - (caml_call3(Stdlib_Printf[4],_dz_,descr,_eL_),v,lexbuf)} - var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}]; - function long_error$1(descr,v,lexbuf) - {var - junk=caml_call1(lexeme$1,lexbuf), - extra_junk=caml_call1(read_junk$1[1],lexbuf); - return custom_error$1 - (caml_call4(Stdlib_Printf[4],_dB_,descr,junk,extra_junk), - v, - lexbuf)} - var - _dC_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0, - _dD_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0, - Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int$1(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _eI_=stop - 1 | 0; - if(! (_eI_ < start)) - {var i=start; - for(;;) - {if(max10$1 <= n[1])throw Int_overflow$1; - var _eJ_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _eJ_ | 0; - var _eK_=i + 1 | 0; - if(_eI_ !== i){var i=_eK_;continue} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow$1} - function make_positive_int(v,lexbuf) - {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} - function extract_negative_int$1(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _eF_=stop - 1 | 0; - if(! (_eF_ < start)) - {var i=start; - for(;;) - {if(n[1] <= min10$1)throw Int_overflow$1; - var _eG_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _eG_ | 0; - var _eH_=i + 1 | 0; - if(_eF_ !== i){var i=_eH_;continue} - break}} - if(0 < n[1])throw Int_overflow$1; - return n[1]} - function make_negative_int(v,lexbuf) - {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} - function newline$1(v,lexbuf) - {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} - function add_lexeme$1(buf,lexbuf) - {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon$1(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} - function read_object_sep$1(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} - function read_object_end$1(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_tuple_sep$1(v,lexbuf) - {var ocaml_lex_state=271; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_tuple; - case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}} - function read_tuple_end$1(lexbuf) - {var ocaml_lex_state=266; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_tuple; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep$1(v,lexbuf) - {var ocaml_lex_state=257; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}} - function read_array_end$1(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function finish_escaped_char$1(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); - case 6: - var - a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0), - b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), - c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), - d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), - _ez_=hex$5(d), - _eA_=hex$5(c$0) << 4, - _eB_=hex$5(b) << 8, - x=hex$5(a) << 12 | _eB_ | _eA_ | _ez_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0), - _eC_=hex$5(d$0), - _eD_=hex$5(c$1) << 4, - _eE_=hex$5(b$0) << 8, - y=hex$5(a$0) << 12 | _eE_ | _eD_ | _eC_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error$1 - (cst_Invalid_low_surrogate_for_$1,v,lexbuf); - case 1: - return long_error$1 - (cst_Missing_escape_sequence_re$1,v,lexbuf); - default: - return custom_error$1 - (cst_Unexpected_end_of_input$96,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}} - function finish_string$5(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char$1(v,lexbuf);continue a; - case 2:add_lexeme$1(v[1],lexbuf);continue a; - default: - return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}} - function read_ident$1(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2: - return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}} - function finish_comment$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); - case 2:newline$1(v,lexbuf);continue a; - default:continue a}}}} - function read_space$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline$1(v,lexbuf);continue a; - case 1:finish_comment$1(v,lexbuf);continue a; - case 2:newline$1(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} - function read_gt$1(v,lexbuf) - {var ocaml_lex_state=111; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}} - function finish_stringlit$1(v,lexbuf) - {var ocaml_lex_state=91; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); - caml_bytes_set(s,0,34); - caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); - return caml_call1(Stdlib_Bytes[6],s); - case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}} - function read_json$4(counter,v,lexbuf) - {var _ey_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_ey_)} - return caml_trampoline_return - (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_ey_])} - function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(19 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return _dE_; - case 1:return _dF_; - case 2:return 870828711; - case 3:return _dG_; - case 4:return _dH_; - case 5:return _dI_; - case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)]; - case 7:return make_positive_int(v,lexbuf); - case 8:return make_negative_int(v,lexbuf); - case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)]; - case 10: - var acc=[0,0]; - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - var field_name=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - var _ep_=acc[1]; - acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_ep_]; - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var field_name$0=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - var _eq_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_eq_]; - continue}} - catch(_ex_) - {_ex_ = caml_wrap_exception(_ex_); - if(_ex_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _ex_} - case 11: - var acc$0=[0,0]; - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - var _er_=acc$0[1]; - acc$0[1] = [0,read_json$1(v,lexbuf),_er_]; - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var _es_=acc$0[1]; - acc$0[1] = [0,read_json$1(v,lexbuf),_es_]; - continue}} - catch(_ew_) - {_ew_ = caml_wrap_exception(_ew_); - if(_ew_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _ew_} - case 12: - var acc$1=[0,0]; - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - var _et_=acc$1[1]; - acc$1[1] = [0,read_json$1(v,lexbuf),_et_]; - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var _eu_=acc$1[1]; - acc$1[1] = [0,read_json$1(v,lexbuf),_eu_]; - continue}} - catch(_ev_) - {_ev_ = caml_wrap_exception(_ev_); - if(_ev_ === End_of_tuple) - return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _ev_} - case 13: - read_space$1(v,lexbuf); - var cons=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]]; - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 15: - finish_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 16: - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 18: - return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf); - default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}} - function finish_variant$1(v,lexbuf) - {var ocaml_lex_state=102; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var x=read_json$1(v,lexbuf); - read_space$1(v,lexbuf); - read_gt$1(v,lexbuf); - return [0,x]; - case 1:return 0; - case 2:return long_error$1(cst_Expected_or_but_found$29,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$98,v,lexbuf)}}} - function read_json$1(v,lexbuf) - {return caml_trampoline(read_json$4(0,v,lexbuf))} - function map_string$1(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var b=v[1],_eo_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_eo_); - case 1:finish_escaped_char$1(v,lexbuf);continue a; - case 2:add_lexeme$1(v[1],lexbuf);continue a; - default: - return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}} - function read_lt$1(v,lexbuf) - {var ocaml_lex_state=107; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$30,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}} - function read_comma$1(v,lexbuf) - {var ocaml_lex_state=115; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$32,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}} - function start_any_variant$1(v,lexbuf) - {var ocaml_lex_state=119; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; - case 2:return -124528282; - case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}} - function read_eof$1(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null$1(v,lexbuf) - {var ocaml_lex_state=140; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_null_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}} - function read_null_if_possible$1(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool$1(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(5 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4: - return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}} - function ocaml_lex_read_int_rec$1(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(4 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _ei_=extract_positive_int$1(lexbuf);return _ei_} - catch(_en_) - {_en_ = caml_wrap_exception(_en_); - if(_en_ === Int_overflow$1) - return lexer_error$1(cst_Int_overflow$5,v,lexbuf); - throw _en_} - case 1: - try - {var _ej_=extract_negative_int$1(lexbuf);return _ej_} - catch(_em_) - {_em_ = caml_wrap_exception(_em_); - if(_em_ === Int_overflow$1) - return lexer_error$1(cst_Int_overflow$6,v,lexbuf); - throw _em_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _ek_=caml_int_of_string(s);return _ek_} - catch(_el_) - {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)} - case 3: - return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}} - function read_int$1(v,lexbuf) - {return ocaml_lex_read_int_rec$1(v,lexbuf,176)} - function ocaml_lex_read_int32_rec$1(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); - return _ee_} - catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _ef_=caml_int_of_string(s);return _ef_} - catch(_eg_) - {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)} - case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}} - function read_int32$1(v,lexbuf) - {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)} - function ocaml_lex_read_int64_rec$1(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(3 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - try - {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); - return _ea_} - catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _eb_=caml_int64_of_string(s);return _eb_} - catch(_ec_) - {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)} - case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}} - function read_int64$1(v,lexbuf) - {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)} - function ocaml_lex_read_number_rec$1(v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(6 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return Stdlib[24]; - case 1:return Stdlib[22]; - case 2:return Stdlib[23]; - case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf)); - case 4: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _d__=caml_float_of_string(s);return _d__} - catch(_d$_) - {return caml_string_notequal(s,cst_Infinity$21) - ?caml_string_notequal(s,cst_Infinity$22) - ?caml_string_notequal(s,cst_NaN$10) - ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5: - return long_error$1(cst_Expected_number_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}} - function read_number$1(v,lexbuf) - {return ocaml_lex_read_number_rec$1(v,lexbuf,199)} - function read_string$1(v,lexbuf) - {var ocaml_lex_state=233; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); - case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}} - function map_ident$1(v,f,lexbuf) - {var ocaml_lex_state=242; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return map_string$1(v,f,lexbuf); - case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_d9_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_d9_,len); - case 2: - return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}} - function ocaml_lex_read_sequence_rec$1 - (read_cell,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - continue}} - catch(_d8_) - {_d8_ = caml_wrap_exception(_d8_); - if(_d8_ === End_of_array)return acc[1]; - throw _d8_} - case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}} - function read_sequence$1(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,0]; - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - var _d5_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_]; - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var _d6_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_]; - continue}} - catch(_d7_) - {_d7_ = caml_wrap_exception(_d7_); - if(_d7_ === End_of_array)return acc[1]; - throw _d7_} - case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}} - function read_list_rev$1(read_cell,v,lexbuf) - {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)} - function ocaml_lex_read_tuple_rec$0 - (read_cell,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var pos=[0,0],acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - continue}} - catch(_d4_) - {_d4_ = caml_wrap_exception(_d4_); - if(_d4_ === End_of_tuple)return acc[1]; - throw _d4_} - case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}} - function read_tuple$1(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)} - function read_tuple_end2$1(v,std,lexbuf) - {var ocaml_lex_state=268; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); - default:return 0}}} - function read_tuple_sep2$1(v,std,lexbuf) - {var ocaml_lex_state=276; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1: - if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error$1(cst_Expected_or_but_found$36,v,lexbuf); - case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields$1 - (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(2 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0: - var acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); - continue}} - catch(_d3_) - {_d3_ = caml_wrap_exception(_d3_); - if(_d3_ === End_of_object)return acc[1]; - throw _d3_} - case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}} - function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf) - {return ocaml_lex_read_abstract_fields$1 - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl$1(v,lexbuf) - {var ocaml_lex_state=286; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} - function start_any_tuple$1(v,lexbuf) - {var ocaml_lex_state=301; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return 1; - case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}} - function read_lpar$1(v,lexbuf) - {var ocaml_lex_state=306; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$40,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}} - function read_rpar$1(v,lexbuf) - {var ocaml_lex_state=310; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$41,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}} - function read_lbr$1(v,lexbuf) - {var ocaml_lex_state=314; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$42,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}} - function read_rbr$1(v,lexbuf) - {var ocaml_lex_state=318; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}} - function finish_skip_stringlit$1(v,lexbuf) - {var ocaml_lex_state=378; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}} - function skip_ident$1(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$1(v,lexbuf); - case 1:return 0; - case 2: - return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} - function skip_json$4(counter,v,lexbuf) - {var _d2_=322; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)} - return caml_trampoline_return - (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} - function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(18 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit$1(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_json$1(v,lexbuf); - continue}} - catch(_d1_) - {_d1_ = caml_wrap_exception(_d1_); - if(_d1_ === End_of_object)return 0; - throw _d1_} - case 10: - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_json$1(v,lexbuf); - continue}} - catch(_d0_) - {_d0_ = caml_wrap_exception(_d0_); - if(_d0_ === End_of_array)return 0; - throw _d0_} - case 11: - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_json$1(v,lexbuf); - continue}} - catch(_dZ_) - {_dZ_ = caml_wrap_exception(_dZ_); - if(_dZ_ === End_of_tuple)return 0; - throw _dZ_} - case 12: - read_space$1(v,lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - return finish_skip_variant$1(v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 14: - finish_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 15: - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 17: - return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf); - default:return long_error$1(cst_Invalid_token$13,v,lexbuf)}}} - function skip_json$1(v,lexbuf) - {return caml_trampoline(skip_json$4(0,v,lexbuf))} - function finish_skip_variant$1(v,lexbuf) - {var ocaml_lex_state=389; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - skip_json$1(v,lexbuf); - read_space$1(v,lexbuf); - return read_gt$1(v,lexbuf); - case 1:return 0; - case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} - function finish_buffer_comment$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36); - case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; - default:add_lexeme$1(v[1],lexbuf);continue a}}}} - function buffer_colon$1(v,lexbuf) - {var ocaml_lex_state=499; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}} - function buffer_tuple_sep$0(v,lexbuf) - {var ocaml_lex_state=494; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; - case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}} - function buffer_tuple_end$0(v,lexbuf) - {var ocaml_lex_state=492; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_array_sep$1(v,lexbuf) - {var ocaml_lex_state=487; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}} - function buffer_array_end$1(v,lexbuf) - {var ocaml_lex_state=485; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_object_sep$1(v,lexbuf) - {var ocaml_lex_state=480; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; - case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}} - function buffer_object_end$1(v,lexbuf) - {var ocaml_lex_state=478; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_space$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$35); - finish_buffer_comment$1(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; - case 3:add_lexeme$1(v[1],lexbuf);continue a; - default:return 0}}}} - function finish_buffer_stringlit$1(v,lexbuf) - {var ocaml_lex_state=450; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$1(v[1],lexbuf); - case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} - function buffer_ident$1(v,lexbuf) - {var ocaml_lex_state=466; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit$1(v,lexbuf); - case 1:return add_lexeme$1(v[1],lexbuf); - case 2: - return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}} - function buffer_json$4(counter,v,lexbuf) - {var _dY_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])} - function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme$1(v[1],lexbuf); - case 1:return finish_buffer_stringlit$1(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space$1(v,lexbuf); - buffer_object_end$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_object_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dX_) - {_dX_ = caml_wrap_exception(_dX_); - if(_dX_ === End_of_object)return 0; - throw _dX_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space$1(v,lexbuf); - buffer_array_end$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_array_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dW_) - {_dW_ = caml_wrap_exception(_dW_); - if(_dW_ === End_of_array)return 0; - throw _dW_} - case 4: - try - {caml_call2(Bi_outbuf[15],v[1],40); - buffer_space$1(v,lexbuf); - buffer_tuple_end$0(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_tuple_sep$0(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dV_) - {_dV_ = caml_wrap_exception(_dV_); - if(_dV_ === End_of_tuple)return 0; - throw _dV_} - case 5: - caml_call2(Bi_outbuf[15],v[1],60); - buffer_space$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - return finish_buffer_variant$0(v,lexbuf); - case 6: - add_lexeme$1(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return buffer_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 7: - caml_call2(Bi_outbuf[13],v[1],cst$34); - finish_buffer_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return buffer_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 8: - caml_call2(Bi_outbuf[15],v[1],10); - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 9: - add_lexeme$1(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 10: - return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); - default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} - function buffer_json$1(v,lexbuf) - {return caml_trampoline(buffer_json$4(0,v,lexbuf))} - function finish_buffer_variant$0(v,lexbuf) - {var ocaml_lex_state=461; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],58); - buffer_json$1(v,lexbuf); - buffer_space$1(v,lexbuf); - var ocaml_lex_state$1=503; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0:return caml_call2(Bi_outbuf[15],v[1],62); - case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf); - default: - return custom_error$1 - (cst_Unexpected_end_of_input$139,v,lexbuf)}} - case 1:return caml_call2(Bi_outbuf[15],v[1],62); - case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} - function junk$1(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk$1[1] = junk$1; - function read_int8$1(v,lexbuf) - {var n=read_int$1(v,lexbuf); - if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); - return lexer_error$1(cst_Int8_overflow$1,v,lexbuf)} - function read_list$1(read_cell,v,lexbuf) - {var _dU_=read_list_rev$1(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_dU_)} - function read_array$1(read_cell,v,lexbuf) - {var l=read_list_rev$1(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - len=caml_call1(Stdlib_List[1],l), - a=caml_make_vect(len,x), - r=[0,tl], - _dR_=len - 2 | 0; - if(! (_dR_ < 0)) - {var i=_dR_; - for(;;) - {var _dS_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _dS_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _dT_=i - 1 | 0; - if(0 !== i){var i=_dT_;continue} - break}} - return a} - return [0]} - function read_fields$1(read_field,init_acc,v) - {return function(_dQ_) - {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}} - function from_lexbuf$1(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space$1(v,lexbuf); - if(read_eof$1(lexbuf))throw End_of_input; - var x=read_json$1(v,lexbuf); - if(1 - stream) - {read_space$1(v,lexbuf); - if(1 - read_eof$1(lexbuf)) - long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)} - return x} - function from_string$4(buf,fname,lnum,s) - {try - {var - lexbuf=caml_call2(from_string$3,0,s), - v=init_lexer(buf,fname,lnum,0), - _dO_=from_lexbuf$1(v,0,lexbuf); - return _dO_} - catch(_dP_) - {_dP_ = caml_wrap_exception(_dP_); - if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3); - throw _dP_}} - function from_channel$4(buf,fname,lnum,ic) - {try - {var - lexbuf=caml_call2(from_channel$3,0,ic), - v=init_lexer(buf,fname,lnum,0), - _dM_=from_lexbuf$1(v,0,lexbuf); - return _dM_} - catch(_dN_) - {_dN_ = caml_wrap_exception(_dN_); - if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4); - throw _dN_}} - function from_file$1(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$4(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - return x} - catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} - var Finally$1=[248,cst_Yojson_Raw_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf$1(v,opt,lexbuf) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - catch(fin_e) - {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]} - throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string$1(buf,fname,lnum,s) - {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} - function stream_from_channel$1(buf,fin,fname,lnum,ic) - {var - lexbuf=caml_call2(from_channel$3,0,ic), - v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$1(v,fin,lexbuf)} - function stream_from_file$1(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var - fname$0=fname || [0,file], - lexbuf=caml_call2(from_channel$3,0,ic), - v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf$1(v,[0,fin],lexbuf)} - function linestream_from_channel$1(buf,opt,fname,_dJ_,ic) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) - {try - {var - line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]]; - return _dK_} - catch(e) - {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file$1(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - function fin(param){return caml_call1(Stdlib[93],ic)} - var fname$0=fname || [0,file]; - return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} - function prettify$1(std,s) - {return pretty_to_string$2(std,from_string$4(0,0,0,s))} - function compact$1(std,s) - {return to_string$5(0,0,0,from_string$4(0,0,0,s))} - function validate_json$1(path,value){return 0} - var - Yojson= - [0, - version, - Json_error, - json_error, - Lexer_state, - init_lexer, - End_of_array, - End_of_object, - End_of_tuple, - End_of_input, - [0, - to_string$1, - to_channel$1, - to_output$0, - to_file$0, - to_outbuf$0, - stream_to_string$0, - stream_to_channel$0, - stream_to_file$0, - stream_to_outbuf$0, - write_t$0, - sort$0, - write_null$0, - write_bool$0, - write_int$0, - write_float$0, - write_std_float$0, - write_float_fast$0, - write_std_float_fast$0, - write_float_prec$0, - write_std_float_prec$0, - write_string$0, - write_assoc$0, - write_list$0, - write_t$0, - write_std_json$0, - pp$0, - show$0, - equal$0, - pretty_format$0, - pretty_print$0, - pretty_to_string$0, - pretty_to_channel$0, - prettify, - compact, - Finally, - from_string$0, - from_channel$0, - from_file, - init_lexer, - from_lexbuf, - stream_from_string, - stream_from_channel, - stream_from_file, - stream_from_lexbuf, - linestream_from_channel, - linestream_from_file, - read_json, - finish_string$1, - read_string, - read_ident, - map_string, - map_ident, - start_any_variant, - finish_variant, - finish_skip_variant, - read_lt, - read_gt, - read_comma, - finish_stringlit, - finish_skip_stringlit, - finish_escaped_char, - finish_comment, - read_space, - read_eof, - read_null, - read_null_if_possible, - read_bool, - read_int, - read_int8, - read_int32, - read_int64, - read_number, - skip_ident, - read_sequence, - read_list, - read_list_rev, - read_array_end, - read_array_sep, - read_array, - read_tuple, - start_any_tuple, - read_lpar, - read_rpar, - read_tuple_end, - read_tuple_end2, - read_tuple_sep, - read_tuple_sep2, - read_lbr, - read_rbr, - read_fields, - read_abstract_fields, - read_lcurl, - read_object_end, - read_object_sep, - read_colon, - read_json, - skip_json, - buffer_json, - validate_json, - [0, - Type_error, - Undefined, - symbol, - keys, - values, - combine, - member, - index, - map, - to_assoc, - to_option, - to_bool, - to_bool_option, - to_number, - to_number_option, - to_float, - to_float_option, - to_int, - to_int_option, - to_list, - to_string$2, - to_string_option, - convert_each, - filter_map, - flatten, - filter_index, - filter_list, - filter_member, - filter_assoc, - filter_bool, - filter_int, - filter_float, - filter_number, - filter_string]], - [0, - pp$1, - show$1, - equal$1, - to_basic, - to_string$3, - to_channel$2, - to_output$1, - to_file$1, - to_outbuf$1, - stream_to_string$1, - stream_to_channel$1, - stream_to_file$1, - stream_to_outbuf$1, - write_t$1, - sort$1, - write_null$1, - write_bool$1, - write_int$1, - write_float$1, - write_std_float$1, - write_float_fast$1, - write_std_float_fast$1, - write_float_prec$1, - write_std_float_prec$1, - write_string$1, - write_intlit$0, - write_assoc$1, - write_list$1, - write_tuple$0, - write_std_tuple$0, - write_variant$0, - write_std_variant$0, - write_t$1, - write_std_json$1, - pretty_format$1, - pretty_print$1, - pretty_to_string$1, - pretty_to_channel$1, - prettify$0, - compact$0, - Finally$0, - from_string$2, - from_channel$2, - from_file$0, - init_lexer, - from_lexbuf$0, - stream_from_string$0, - stream_from_channel$0, - stream_from_file$0, - stream_from_lexbuf$0, - linestream_from_channel$0, - linestream_from_file$0, - read_json$0, - finish_string$3, - read_string$0, - read_ident$0, - map_string$0, - map_ident$0, - start_any_variant$0, - finish_variant$0, - finish_skip_variant$0, - read_lt$0, - read_gt$0, - read_comma$0, - finish_stringlit$0, - finish_skip_stringlit$0, - finish_escaped_char$0, - finish_comment$0, - read_space$0, - read_eof$0, - read_null$0, - read_null_if_possible$0, - read_bool$0, - read_int$0, - read_int8$0, - read_int32$0, - read_int64$0, - read_number$0, - skip_ident$0, - read_sequence$0, - read_list$0, - read_list_rev$0, - read_array_end$0, - read_array_sep$0, - read_array$0, - read_tuple$0, - start_any_tuple$0, - read_lpar$0, - read_rpar$0, - read_tuple_end$0, - read_tuple_end2$0, - read_tuple_sep$0, - read_tuple_sep2$0, - read_lbr$0, - read_rbr$0, - read_fields$0, - read_abstract_fields$0, - read_lcurl$0, - read_object_end$0, - read_object_sep$0, - read_colon$0, - read_json$0, - skip_json$0, - buffer_json$0, - validate_json$0, - [0, - Type_error$0, - Undefined$0, - symbol$0, - keys$0, - values$0, - combine$0, - member$0, - index$0, - map$0, - to_assoc$0, - to_option$0, - to_bool$0, - to_bool_option$0, - to_number$0, - to_number_option$0, - to_float$0, - to_float_option$0, - to_int$0, - to_int_option$0, - to_list$0, - to_string$4, - to_string_option$0, - convert_each$0, - filter_map$0, - flatten$0, - filter_index$0, - filter_list$0, - filter_member$0, - filter_assoc$0, - filter_bool$0, - filter_int$0, - filter_float$0, - filter_number$0, - filter_string$0]], - [0, - pp$2, - show$2, - equal$2, - to_string$5, - to_channel$3, - to_output$2, - to_file$2, - to_outbuf$2, - stream_to_string$2, - stream_to_channel$2, - stream_to_file$2, - stream_to_outbuf$2, - write_t$2, - sort$2, - write_null$2, - write_bool$2, - write_intlit$1, - write_floatlit$0, - write_stringlit$0, - write_assoc$2, - write_list$2, - write_tuple$1, - write_std_tuple$1, - write_variant$1, - write_std_variant$1, - write_t$2, - write_std_json$2, - pretty_format$2, - pretty_print$2, - pretty_to_string$2, - pretty_to_channel$2, - prettify$1, - compact$1, - Finally$1, - from_string$4, - from_channel$4, - from_file$1, - init_lexer, - from_lexbuf$1, - stream_from_string$1, - stream_from_channel$1, - stream_from_file$1, - stream_from_lexbuf$1, - linestream_from_channel$1, - linestream_from_file$1, - read_json$1, - finish_string$5, - read_string$1, - read_ident$1, - map_string$1, - map_ident$1, - start_any_variant$1, - finish_variant$1, - finish_skip_variant$1, - read_lt$1, - read_gt$1, - read_comma$1, - finish_stringlit$1, - finish_skip_stringlit$1, - finish_escaped_char$1, - finish_comment$1, - read_space$1, - read_eof$1, - read_null$1, - read_null_if_possible$1, - read_bool$1, - read_int$1, - read_int8$1, - read_int32$1, - read_int64$1, - read_number$1, - skip_ident$1, - read_sequence$1, - read_list$1, - read_list_rev$1, - read_array_end$1, - read_array_sep$1, - read_array$1, - read_tuple$1, - start_any_tuple$1, - read_lpar$1, - read_rpar$1, - read_tuple_end$1, - read_tuple_end2$1, - read_tuple_sep$1, - read_tuple_sep2$1, - read_lbr$1, - read_rbr$1, - read_fields$1, - read_abstract_fields$1, - read_lcurl$1, - read_object_end$1, - read_object_sep$1, - read_colon$1, - read_json$1, - skip_json$1, - buffer_json$1, - validate_json$1], - pp, - show, - equal, - to_string, - to_channel, - to_output, - to_file, - to_outbuf, - stream_to_string, - stream_to_channel, - stream_to_file, - stream_to_outbuf, - write_t, - sort, - write_null, - write_bool, - write_int, - write_float, - write_std_float, - write_float_fast, - write_std_float_fast, - write_float_prec, - write_std_float_prec, - write_string, - write_intlit, - write_floatlit, - write_stringlit, - write_assoc, - write_list, - write_tuple, - write_std_tuple, - write_variant, - write_std_variant, - write_t, - write_std_json, - pretty_format, - pretty_print, - pretty_to_string, - pretty_to_channel]; - caml_register_global(1035,Yojson,"Yojson"); - return} - (globalThis)); - - -//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_check_bound=runtime.caml_check_bound, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int_of_string=runtime.caml_int_of_string, - caml_register_global=runtime.caml_register_global, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - var - global_data=runtime.caml_get_global_data(), - cst_fun_of_yojson_cannot_conve= - caml_string_of_jsbytes("fun_of_yojson: cannot convert function values"), - cst_opaque_of_yojson_cannot_co= - caml_string_of_jsbytes("opaque_of_yojson: cannot convert opaque values"), - cst_hashtbl_of_yojson_tuple_li= - caml_string_of_jsbytes("hashtbl_of_yojson: tuple list needed"), - cst_hashtbl_of_yojson_list_nee= - caml_string_of_jsbytes("hashtbl_of_yojson: list needed"), - cst_array_of_yojson_list_neede= - caml_string_of_jsbytes("array_of_yojson: list needed"), - cst_list_of_yojson_list_needed= - caml_string_of_jsbytes("list_of_yojson: list needed"), - cst_triple_of_yojson_invalid_f= - caml_string_of_jsbytes("triple_of_yojson: invalid format"), - cst_pair_of_yojson_invalid_for= - caml_string_of_jsbytes("pair_of_yojson: invalid format"), - cst_nativeint_of_yojson_intege= - caml_string_of_jsbytes("nativeint_of_yojson: integer needed"), - cst_int64_of_yojson_integer_ne= - caml_string_of_jsbytes("int64_of_yojson: integer needed"), - cst_int32_of_yojson_integer_ne= - caml_string_of_jsbytes("int32_of_yojson: integer needed"), - cst_float_of_yojson_float_need= - caml_string_of_jsbytes("float_of_yojson: float needed"), - cst_int_of_yojson_integer_need= - caml_string_of_jsbytes("int_of_yojson: integer needed"), - cst_char_of_yojson_string_must= - caml_string_of_jsbytes - ("char_of_yojson: string must contain one character only"), - cst_char_of_yojson_string_of_s= - caml_string_of_jsbytes("char_of_yojson: string of size one needed"), - cst_bytes_of_yojson_string_nee= - caml_string_of_jsbytes("bytes_of_yojson: string needed"), - cst_string_of_yojson_string_ne= - caml_string_of_jsbytes("string_of_yojson: string needed"), - cst_bool_of_yojson_true_false_= - caml_string_of_jsbytes("bool_of_yojson: true/false needed"), - cst_unit_of_yojson_Null_needed= - caml_string_of_jsbytes("unit_of_yojson: `Null needed"), - cst_Ppx_yojson_conv_lib_Yojson= - caml_string_of_jsbytes - ("Ppx_yojson_conv_lib__Yojson_conv.Of_yojson_error"), - cst$0=caml_string_of_jsbytes(" "), - cst_of_yojson_trying_to_conver= - caml_string_of_jsbytes("_of_yojson: trying to convert an empty type"), - cst_of_yojson_the_empty_list_i$0= - caml_string_of_jsbytes - ("_of_yojson: the empty list is an invalid polymorphic variant"), - cst_of_yojson_a_nested_list_is$0= - caml_string_of_jsbytes - ("_of_yojson: a nested list is an invalid polymorphic variant"), - cst_of_yojson_polymorphic_vari$0= - caml_string_of_jsbytes - ("_of_yojson: polymorphic variant tag takes an argument"), - cst_of_yojson_polymorphic_vari= - caml_string_of_jsbytes - ("_of_yojson: polymorphic variant does not take arguments"), - cst_of_yojson_no_matching_vari= - caml_string_of_jsbytes("_of_yojson: no matching variant found"), - cst_of_yojson_cannot_convert_v= - caml_string_of_jsbytes - ("_of_yojson: cannot convert values of types resulting from polymorphic record fields"), - cst_of_yojson_list_instead_of_= - caml_string_of_jsbytes - ("_of_yojson: list instead of atom for record expected"), - cst_extra_fields=caml_string_of_jsbytes("extra fields"), - cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"), - cst=caml_string_of_jsbytes(" "), - cst_of_yojson_unexpected_sum_t= - caml_string_of_jsbytes("_of_yojson: unexpected sum tag"), - cst_of_yojson_the_empty_list_i= - caml_string_of_jsbytes("_of_yojson: the empty list is an invalid sum"), - cst_of_yojson_a_nested_list_is= - caml_string_of_jsbytes("_of_yojson: a nested list is an invalid sum"), - cst_of_yojson_sum_tag_must_be_= - caml_string_of_jsbytes("_of_yojson: sum tag must be a structured value"), - cst_of_yojson_sum_tag_does_not= - caml_string_of_jsbytes("_of_yojson: sum tag does not take arguments"), - cst_Ppx_yojson_conv_lib_Yojson$0= - caml_string_of_jsbytes - ("Ppx_yojson_conv_lib__Yojson_conv_error.No_variant_match"), - Stdlib_MoreLabels=global_data.Stdlib__MoreLabels, - Stdlib_ListLabels=global_data.Stdlib__ListLabels, - Stdlib_Lazy=global_data.Stdlib__Lazy, - Stdlib_BytesLabels=global_data.Stdlib__BytesLabels, - Stdlib=global_data.Stdlib, - CamlinternalLazy=global_data.CamlinternalLazy, - Stdlib_Nativeint=global_data.Stdlib__Nativeint, - Stdlib_Int64=global_data.Stdlib__Int64, - Stdlib_Int32=global_data.Stdlib__Int32, - Stdlib_StringLabels=global_data.Stdlib__StringLabels, - Stdlib_Printf=global_data.Stdlib__Printf, - Ppx_yojson_conv_lib=[0]; - caml_register_global(45,Ppx_yojson_conv_lib,"Ppx_yojson_conv_lib__"); - var Ppx_yojson_conv_lib_Yojsonable=[0]; - caml_register_global - (46, - Ppx_yojson_conv_lib_Yojsonable, - "Ppx_yojson_conv_lib__Yojsonable_intf"); - var - _b_=[0,-976970511,caml_string_of_jsbytes("")], - _a_=[0,-976970511,caml_string_of_jsbytes("")], - _g_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: polymorphic variant tag "), - [3, - 0, - [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], - caml_string_of_jsbytes - ("%s_of_yojson: polymorphic variant tag %S has incorrect number of arguments")], - _f_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes - ("_of_yojson: the following record elements were undefined: "), - [2,0,0]]], - caml_string_of_jsbytes - ("%s_of_yojson: the following record elements were undefined: %s")], - _e_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: "), - [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]], - caml_string_of_jsbytes("%s_of_yojson: %s: %s")], - _d_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: sum tag "), - [3, - 0, - [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], - caml_string_of_jsbytes - ("%s_of_yojson: sum tag %S has incorrect number of arguments")], - _c_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: tuple of size "), - [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]], - caml_string_of_jsbytes("%s_of_yojson: tuple of size %d expected")]; - function yojson_of_unit(param){return 870828711} - function yojson_of_bool(b){return [0,737456202,b]} - function yojson_of_string(str){return [0,-976970511,str]} - function yojson_of_bytes(bytes) - {return [0,-976970511,caml_call1(Stdlib_BytesLabels[6],bytes)]} - function yojson_of_char(c) - {return [0,-976970511,caml_call2(Stdlib_StringLabels[1],1,c)]} - function yojson_of_int(n){return [0,3654863,n]} - function yojson_of_float(n){return [0,365180284,n]} - function yojson_of_int32(n) - {return [0,-752863768,caml_call1(Stdlib_Int32[14],n)]} - function yojson_of_int64(n) - {return [0,-752863768,caml_call1(Stdlib_Int64[14],n)]} - function yojson_of_nativeint(n) - {return [0,-752863768,caml_call1(Stdlib_Nativeint[15],n)]} - function yojson_of_ref(yojson_of_a,rf) - {return caml_call1(yojson_of_a,rf[1])} - function yojson_of_lazy_t(yojson_of_a,lv) - {var - _I_=runtime.caml_obj_tag(lv), - _J_=250 === _I_?lv[1]:246 === _I_?caml_call1(CamlinternalLazy[2],lv):lv; - return caml_call1(yojson_of_a,_J_)} - function yojson_of_option(yojson_of_a,param) - {if(param){var x=param[1];return caml_call1(yojson_of_a,x)} - return 870828711} - function yojson_of_pair(yojson_of_a,yojson_of_b,param) - {var b=param[2],a=param[1],_H_=[0,caml_call1(yojson_of_b,b),0]; - return [0,848054398,[0,caml_call1(yojson_of_a,a),_H_]]} - function yojson_of_triple(yojson_of_a,yojson_of_b,yojson_of_c,param) - {var - c=param[3], - b=param[2], - a=param[1], - _F_=[0,caml_call1(yojson_of_c,c),0], - _G_=[0,caml_call1(yojson_of_b,b),_F_]; - return [0,848054398,[0,caml_call1(yojson_of_a,a),_G_]]} - function yojson_of_list(yojson_of_a,lst) - {var _E_=caml_call2(Stdlib_ListLabels[21],yojson_of_a,lst); - return [0,848054398,caml_call1(Stdlib_ListLabels[9],_E_)]} - function yojson_of_array(yojson_of_a,ar) - {var lst_ref=[0,0],_B_=ar.length - 1 - 1 | 0; - if(! (_B_ < 0)) - {var i=_B_; - for(;;) - {var _C_=lst_ref[1]; - lst_ref[1] - = - [0,caml_call1(yojson_of_a,caml_check_bound(ar,i)[1 + i]),_C_]; - var _D_=i - 1 | 0; - if(0 !== i){var i=_D_;continue} - break}} - return [0,848054398,lst_ref[1]]} - function yojson_of_hashtbl(yojson_of_key,yojson_of_val,htbl) - {function coll(k,v,acc) - {var _A_=[0,caml_call1(yojson_of_val,v),0]; - return [0,[0,848054398,[0,caml_call1(yojson_of_key,k),_A_]],acc]} - return [0,848054398,caml_call3(Stdlib_MoreLabels[1][14],coll,htbl,0)]} - function yojson_of_opaque(param){return _a_} - function yojson_of_fun(param){return _b_} - var - Of_yojson_error=[248,cst_Ppx_yojson_conv_lib_Yojson,caml_fresh_oo_id(0)], - record_check_extra_fields=[0,1]; - function of_yojson_error_exn(exc,yojson) - {throw [0,Of_yojson_error,exc,yojson]} - function of_yojson_error(what,yojson) - {throw [0,Of_yojson_error,[0,Stdlib[7],what],yojson]} - function unit_of_yojson(yojson) - {return 870828711 === yojson - ?0 - :of_yojson_error(cst_unit_of_yojson_Null_needed,yojson)} - function bool_of_yojson(yojson) - {if(typeof yojson !== "number" && 737456202 === yojson[1]) - {var v=yojson[2];return v} - return of_yojson_error(cst_bool_of_yojson_true_false_,yojson)} - function string_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2];return str} - return of_yojson_error(cst_string_of_yojson_string_ne,yojson)} - function bytes_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2];return caml_call1(Stdlib_BytesLabels[5],str)} - return of_yojson_error(cst_bytes_of_yojson_string_nee,yojson)} - function char_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2]; - if(1 !== runtime.caml_ml_string_length(str)) - of_yojson_error(cst_char_of_yojson_string_must,yojson); - return runtime.caml_string_get(str,0)} - return of_yojson_error(cst_char_of_yojson_string_of_s,yojson)} - function int_of_yojson(yojson) - {if(typeof yojson !== "number" && 3654863 === yojson[1]) - {var v=yojson[2];return v} - return of_yojson_error(cst_int_of_yojson_integer_need,yojson)} - function float_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _z_=yojson[1]; - if(-752863768 === _z_) - {var str=yojson[2];return runtime.caml_float_of_string(str)} - if(3654863 === _z_){var i=yojson[2];return i} - if(365180284 === _z_){var v=yojson[2];return v}} - return of_yojson_error(cst_float_of_yojson_float_need,yojson)} - function int32_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _y_=yojson[1]; - if(-752863768 === _y_) - {var str=yojson[2];return caml_int_of_string(str)} - if(3654863 === _y_){var v=yojson[2];return v}} - return of_yojson_error(cst_int32_of_yojson_integer_ne,yojson)} - function int64_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _x_=yojson[1]; - if(-752863768 === _x_) - {var str=yojson[2];return runtime.caml_int64_of_string(str)} - if(3654863 === _x_) - {var v=yojson[2];return runtime.caml_int64_of_int32(v)}} - return of_yojson_error(cst_int64_of_yojson_integer_ne,yojson)} - function nativeint_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _w_=yojson[1]; - if(-752863768 === _w_) - {var str=yojson[2];return caml_int_of_string(str)} - if(3654863 === _w_){var v=yojson[2];return v}} - return of_yojson_error(cst_nativeint_of_yojson_intege,yojson)} - function ref_of_yojson(a_of_yojson,yojson) - {return [0,caml_call1(a_of_yojson,yojson)]} - function lazy_t_of_yojson(a_of_yojson,yojson) - {var _v_=caml_call1(a_of_yojson,yojson); - return caml_call1(Stdlib_Lazy[4],_v_)} - function option_of_yojson(a_of_yojson,yojson) - {return 870828711 === yojson?0:[0,caml_call1(a_of_yojson,yojson)]} - function pair_of_yojson(a_of_yojson,b_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _t_=yojson[2]; - if(_t_) - {var _u_=_t_[2]; - if(_u_ && ! _u_[2]) - {var - b_yojson=_u_[1], - a_yojson=_t_[1], - a=caml_call1(a_of_yojson,a_yojson), - b=caml_call1(b_of_yojson,b_yojson); - return [0,a,b]}}} - return of_yojson_error(cst_pair_of_yojson_invalid_for,yojson)} - function triple_of_yojson(a_of_yojson,b_of_yojson,c_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _q_=yojson[2]; - if(_q_) - {var _r_=_q_[2]; - if(_r_) - {var _s_=_r_[2]; - if(_s_ && ! _s_[2]) - {var - c_yojson=_s_[1], - b_yojson=_r_[1], - a_yojson=_q_[1], - a=caml_call1(a_of_yojson,a_yojson), - b=caml_call1(b_of_yojson,b_yojson), - c=caml_call1(c_of_yojson,c_yojson); - return [0,a,b,c]}}}} - return of_yojson_error(cst_triple_of_yojson_invalid_f,yojson)} - function list_of_yojson(a_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var - lst=yojson[2], - rev_lst=caml_call2(Stdlib_ListLabels[21],a_of_yojson,lst); - return caml_call1(Stdlib_ListLabels[9],rev_lst)} - return of_yojson_error(cst_list_of_yojson_list_needed,yojson)} - function array_of_yojson(a_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _o_=yojson[2]; - if(_o_) - {var - t=_o_[2], - h=_o_[1], - len=caml_call1(Stdlib_ListLabels[1],t) + 1 | 0, - res=runtime.caml_make_vect(len,caml_call1(a_of_yojson,h)), - i=1, - param=t; - for(;;) - {if(param) - {var t$0=param[2],h$0=param[1],_p_=caml_call1(a_of_yojson,h$0); - caml_check_bound(res,i)[1 + i] = _p_; - var i$0=i + 1 | 0,i=i$0,param=t$0; - continue} - return res}} - return [0]} - return of_yojson_error(cst_array_of_yojson_list_neede,yojson)} - function hashtbl_of_yojson(key_of_yojson,val_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var - lst=yojson[2], - htbl=caml_call2(Stdlib_MoreLabels[1][1],0,0), - act= - function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var _k_=param[2]; - if(_k_) - {var _l_=_k_[2]; - if(_l_ && ! _l_[2]) - {var - v_yojson=_l_[1], - k_yojson=_k_[1], - _m_=caml_call1(val_of_yojson,v_yojson), - _n_=caml_call1(key_of_yojson,k_yojson); - return caml_call3(Stdlib_MoreLabels[1][5],htbl,_n_,_m_)}}} - return of_yojson_error(cst_hashtbl_of_yojson_tuple_li,yojson)}; - caml_call2(Stdlib_ListLabels[17],act,lst); - return htbl} - return of_yojson_error(cst_hashtbl_of_yojson_list_nee,yojson)} - function opaque_of_yojson(yojson) - {return of_yojson_error(cst_opaque_of_yojson_cannot_co,yojson)} - function fun_of_yojson(yojson) - {return of_yojson_error(cst_fun_of_yojson_cannot_conve,yojson)} - var - Ppx_yojson_conv_lib_Yojson_con= - [0, - yojson_of_unit, - yojson_of_bool, - yojson_of_string, - yojson_of_bytes, - yojson_of_char, - yojson_of_int, - yojson_of_float, - yojson_of_int32, - yojson_of_int64, - yojson_of_nativeint, - yojson_of_ref, - yojson_of_lazy_t, - yojson_of_option, - yojson_of_pair, - yojson_of_triple, - yojson_of_list, - yojson_of_array, - yojson_of_hashtbl, - yojson_of_opaque, - yojson_of_fun, - Of_yojson_error, - record_check_extra_fields, - of_yojson_error, - of_yojson_error_exn, - unit_of_yojson, - bool_of_yojson, - string_of_yojson, - bytes_of_yojson, - char_of_yojson, - int_of_yojson, - float_of_yojson, - int32_of_yojson, - int64_of_yojson, - nativeint_of_yojson, - ref_of_yojson, - lazy_t_of_yojson, - option_of_yojson, - pair_of_yojson, - triple_of_yojson, - list_of_yojson, - array_of_yojson, - hashtbl_of_yojson, - opaque_of_yojson, - fun_of_yojson, - [0, - yojson_of_unit, - yojson_of_bool, - yojson_of_string, - yojson_of_bytes, - yojson_of_char, - yojson_of_int, - yojson_of_float, - yojson_of_int32, - yojson_of_int64, - yojson_of_nativeint, - yojson_of_ref, - yojson_of_lazy_t, - yojson_of_option, - yojson_of_list, - yojson_of_array, - yojson_of_hashtbl, - unit_of_yojson, - bool_of_yojson, - string_of_yojson, - bytes_of_yojson, - char_of_yojson, - int_of_yojson, - float_of_yojson, - int32_of_yojson, - int64_of_yojson, - nativeint_of_yojson, - ref_of_yojson, - lazy_t_of_yojson, - option_of_yojson, - list_of_yojson, - array_of_yojson, - hashtbl_of_yojson]]; - caml_register_global - (57,Ppx_yojson_conv_lib_Yojson_con,"Ppx_yojson_conv_lib__Yojson_conv"); - var sprintf=Stdlib_Printf[4]; - function tuple_of_size_n_expected(loc,n,yojson) - {return of_yojson_error(caml_call3(sprintf,_c_,loc,n),yojson)} - function stag_no_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_sum_tag_does_not), - yojson)} - function stag_incorrect_n_args(loc,tag,yojson) - {var msg=caml_call3(sprintf,_d_,loc,tag); - return of_yojson_error(msg,yojson)} - function stag_takes_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_sum_tag_must_be_), - yojson)} - function nested_list_invalid_sum(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is), - yojson)} - function empty_list_invalid_sum(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i), - yojson)} - function unexpected_stag(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_unexpected_sum_t), - yojson)} - function record_superfluous_fields(what,loc,rev_fld_names,yojson) - {var - _j_=caml_call1(Stdlib_ListLabels[9],rev_fld_names), - fld_names_str=caml_call2(Stdlib_StringLabels[6],cst,_j_), - msg=caml_call4(sprintf,_e_,loc,what,fld_names_str); - return of_yojson_error(msg,yojson)} - function record_duplicate_fields(loc,rev_fld_names,yojson) - {return record_superfluous_fields - (cst_duplicate_fields,loc,rev_fld_names,yojson)} - function record_extra_fields(loc,rev_fld_names,yojson) - {return record_superfluous_fields - (cst_extra_fields,loc,rev_fld_names,yojson)} - function record_get_undefined_loop(fields,param) - {var fields$0=fields,param$0=param; - for(;;) - {if(param$0) - {var _h_=param$0[1]; - if(_h_[1]) - {var - param$1=param$0[2], - field=_h_[2], - fields$1=[0,field,fields$0], - fields$0=fields$1, - param$0=param$1; - continue} - var param$2=param$0[2],param$0=param$2; - continue} - var _i_=caml_call1(Stdlib_ListLabels[9],fields$0); - return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}} - function record_undefined_elements(loc,yojson,lst) - {var - undefined$0=record_get_undefined_loop(0,lst), - msg=caml_call3(sprintf,_f_,loc,undefined$0); - return of_yojson_error(msg,yojson)} - function record_list_instead_atom(loc,yojson) - {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_list_instead_of_); - return of_yojson_error(msg,yojson)} - function record_poly_field_value(loc,yojson) - {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_cannot_convert_v); - return of_yojson_error(msg,yojson)} - var - No_variant_match= - [248,cst_Ppx_yojson_conv_lib_Yojson$0,caml_fresh_oo_id(0)]; - function no_variant_match(param){throw No_variant_match} - function no_matching_variant_found(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_no_matching_vari), - yojson)} - function ptag_no_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari), - yojson)} - function ptag_incorrect_n_args(loc,cnstr,yojson) - {var msg=caml_call3(sprintf,_g_,loc,cnstr); - return of_yojson_error(msg,yojson)} - function ptag_takes_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari$0), - yojson)} - function nested_list_invalid_poly_var(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is$0), - yojson)} - function empty_list_invalid_poly_var(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i$0), - yojson)} - function empty_type(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_trying_to_conver), - yojson)} - var - Ppx_yojson_conv_lib_Yojson_con$0= - [0, - sprintf, - tuple_of_size_n_expected, - stag_no_args, - stag_incorrect_n_args, - stag_takes_args, - nested_list_invalid_sum, - empty_list_invalid_sum, - unexpected_stag, - record_superfluous_fields, - record_duplicate_fields, - record_extra_fields, - record_get_undefined_loop, - record_undefined_elements, - record_list_instead_atom, - record_poly_field_value, - No_variant_match, - no_variant_match, - no_matching_variant_found, - ptag_no_args, - ptag_incorrect_n_args, - ptag_takes_args, - nested_list_invalid_poly_var, - empty_list_invalid_poly_var, - empty_type]; - caml_register_global - (59, - Ppx_yojson_conv_lib_Yojson_con$0, - "Ppx_yojson_conv_lib__Yojson_conv_error"); - var Option=[0]; - function symbol(x){return x[1]} - var Ppx_yojson_conv_lib$0=[0,Option,symbol]; - caml_register_global(60,Ppx_yojson_conv_lib$0,"Ppx_yojson_conv_lib"); - return} - (globalThis)); - - -//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_equal=runtime.caml_equal, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_mul=runtime.caml_mul, - caml_register_global=runtime.caml_register_global, - caml_string_equal=runtime.caml_string_equal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8) - {return f.length == 9 - ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])} - var - global_data=runtime.caml_get_global_data(), - cst$3=caml_string_of_jsbytes("."), - cst$4=caml_string_of_jsbytes("."), - partial= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17, - [0,caml_string_of_jsbytes("@;<1 -2>"),1,-2], - [12,93,[17,0,[12,32,[17,0,0]]]]]]]]]], - cst$5=caml_string_of_jsbytes("."), - cst$6=caml_string_of_jsbytes("."), - partial$0=[11,caml_string_of_jsbytes(""),0], - partial$1= - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [15, - [12, - 93, - [17, - 0, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]], - partial$2=[0,caml_string_of_jsbytes("@ "),1,0], - partial$3= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [12, - 44, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11, - caml_string_of_jsbytes("output:"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [12, - 44, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11,caml_string_of_jsbytes("body:"),[17,partial$2,partial$1]]]]]]]]]]], - cst$7=caml_string_of_jsbytes("."), - partial$4=[11,caml_string_of_jsbytes(""),0], - partial$5= - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 93, - [17, - 0, - [17,0,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]]], - partial$6= - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - partial$7= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [15, - [17, - 0, - [11, - caml_string_of_jsbytes("],"), - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [11, - caml_string_of_jsbytes("body:"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18,partial$6,partial$5]]]]]]]]]]], - cst_unreachable_due_to_the_is_= - caml_string_of_jsbytes("unreachable due to the [is_subscope_call] test"), - cst_unreachable_due_to_the_is_$0= - caml_string_of_jsbytes - ("unreachable due to the [is_subscope_input_var_def] test"), - cst$13=caml_string_of_jsbytes("]"), - cst$14=caml_string_of_jsbytes("["), - cst_expected_variable_definiti= - caml_string_of_jsbytes - (" ]): expected variable definition (function output), found: "), - cst$15=caml_string_of_jsbytes(", "), - cst_Invalid_function_call= - caml_string_of_jsbytes("Invalid function call ([ "), - cst_expected_variable_definiti$0= - caml_string_of_jsbytes - (" ]): expected variable definition (function output), found: end of tokens"), - cst$16=caml_string_of_jsbytes(", "), - cst_Invalid_function_call$0= - caml_string_of_jsbytes("Invalid function call ([ "), - cst_Unexpected_event=caml_string_of_jsbytes("Unexpected event: "), - cst_Missing_function_output_va= - caml_string_of_jsbytes("Missing function output variable definition."), - cst_Invalid_start_of_function_= - caml_string_of_jsbytes("Invalid start of function call."), - cst_input$0=caml_string_of_jsbytes("input"), - cst_output$0=caml_string_of_jsbytes("output"), - cst$8=caml_string_of_jsbytes(" ])"), - cst$9=caml_string_of_jsbytes(", "), - cst$10=caml_string_of_jsbytes(" ])"), - cst$11=caml_string_of_jsbytes(", "), - cst$12=caml_string_of_jsbytes(", "), - cst_body=caml_string_of_jsbytes("body"), - cst_inputs=caml_string_of_jsbytes("inputs"), - cst_name=caml_string_of_jsbytes("name"), - cst_fun_calls=caml_string_of_jsbytes("fun_calls"), - cst_value=caml_string_of_jsbytes("value"), - cst_name$0=caml_string_of_jsbytes("name"), - cst_pos=caml_string_of_jsbytes("pos"), - cst_output=caml_string_of_jsbytes("output"), - cst_body$0=caml_string_of_jsbytes("body"), - cst_input=caml_string_of_jsbytes("input"), - cst_fun_name=caml_string_of_jsbytes("fun_name"), - cst_days=caml_string_of_jsbytes("days"), - cst_months=caml_string_of_jsbytes("months"), - cst_years=caml_string_of_jsbytes("years"), - cst_empty_duration=caml_string_of_jsbytes("empty duration"), - cst=caml_string_of_jsbytes("\xe2\x80\xa6"), - cst$2=caml_string_of_jsbytes(""), - cst$1=caml_string_of_jsbytes("-"), - cst$0=caml_string_of_jsbytes(""), - cst_law_headings=caml_string_of_jsbytes("law_headings"), - cst_end_column=caml_string_of_jsbytes("end_column"), - cst_end_line=caml_string_of_jsbytes("end_line"), - cst_start_column=caml_string_of_jsbytes("start_column"), - cst_start_line=caml_string_of_jsbytes("start_line"), - cst_filename=caml_string_of_jsbytes("filename"), - cst_Runtime_ocaml_Runtime_Empt= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.EmptyError"), - cst_Runtime_ocaml_Runtime_Asse= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.AssertionFailed"), - cst_Runtime_ocaml_Runtime_Conf= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.ConflictError"), - cst_Runtime_ocaml_Runtime_Unco= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.UncomparableDurations"), - cst_Runtime_ocaml_Runtime_Indi= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.IndivisableDurations"), - cst_Runtime_ocaml_Runtime_Impo= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.ImpossibleDate"), - cst_Runtime_ocaml_Runtime_NoVa= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.NoValueProvided"), - Stdlib_String=global_data.Stdlib__String, - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_Option=global_data.Stdlib__Option, - Stdlib=global_data.Stdlib, - Stdlib_List=global_data.Stdlib__List, - CalendarLib=global_data.CalendarLib, - Q=global_data.Q, - Z=global_data.Z, - Stdlib_Printf=global_data.Stdlib__Printf, - Yojson=global_data.Yojson, - Ppx_yojson_conv_lib_Yojson_con= - global_data.Ppx_yojson_conv_lib__Yojson_conv, - Stdlib_Map=global_data.Stdlib__Map, - Runtime_ocaml=[0]; - caml_register_global(117,Runtime_ocaml,"Runtime_ocaml"); - var - _v_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes("@ %s:@ %a@]")], - _w_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(" line "), - [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]], - caml_string_of_jsbytes("%s line %d to %d")], - _x_= - [0, - [11,caml_string_of_jsbytes("no_pos"),0], - caml_string_of_jsbytes("no_pos")], - _y_= - [0, - [17,[0,caml_string_of_jsbytes("@ "),1,0],0], - caml_string_of_jsbytes("@ ")], - _z_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _A_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(": "), - [15, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11, - caml_string_of_jsbytes("computed from"), - [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,58,partial]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s: %a@ computed from@ :@ @[[@ %a@;<1 -2>]@] @]")], - _N_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _L_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]], - caml_string_of_jsbytes(",@,")], - _K_= - [0, - [2,0,[11,caml_string_of_jsbytes(": "),[15,0]]], - caml_string_of_jsbytes("%s: %a")], - _B_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")], - _C_= - [0,[11,caml_string_of_jsbytes("fun"),0],caml_string_of_jsbytes("fun")], - _D_=[0,[9,0,0],caml_string_of_jsbytes("%b")], - _E_= - [0, - [2,0,[11,caml_string_of_jsbytes("\xe2\x82\xac"),0]], - caml_string_of_jsbytes("%s\xe2\x82\xac")], - _F_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _H_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _I_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _J_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _M_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [2, - 0, - [11, - caml_string_of_jsbytes(" = {"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,[17,0,0]]]]]]]], - caml_string_of_jsbytes("@[%s = {@ %a@;<1 -2>}@]")], - _O_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,[17,0,0]]]]]]], - caml_string_of_jsbytes("@[[@ %a@;<1 -2>]@]")], - _P_=[0,[15,0],caml_string_of_jsbytes("%a")], - _Q_=[0,[15,0],caml_string_of_jsbytes("%a")], - _R_=[0,0], - _S_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(" :="), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 123, - [18, - [1,[0,partial$0,caml_string_of_jsbytes("")]], - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11,caml_string_of_jsbytes("input:"),partial$3]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s :=@ {@[@ input:@ %a,@ output:@ %a,@ body:@ [@,%a]@]@,@]@,}")], - _T_=[0,0], - _U_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(" :="), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 123, - [18, - [1,[0,partial$4,caml_string_of_jsbytes("")]], - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [11,caml_string_of_jsbytes("inputs:"),partial$7]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s :=@ {@[@,inputs:@ @[[@,%a@]],@,body:@ @[[@ %a@ ]@]@]@]@,}")], - _V_= - [0, - [17,[0,caml_string_of_jsbytes("@ "),1,0],0], - caml_string_of_jsbytes("@ ")], - _W_=[0,[17,4,0],caml_string_of_jsbytes("@.")], - _Y_=[0,0,caml_string_of_jsbytes("")], - _X_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [15,[17,0,0]]], - caml_string_of_jsbytes("@[%a@]")], - _ad_=[0,0], - _ae_=[0,0], - _af_=[0,0], - _ac_= - [0, - [11, - caml_string_of_jsbytes("An error occurred while parsing raw events: "), - [2,0,[12,10,0]]], - caml_string_of_jsbytes - ("An error occurred while parsing raw events: %s\n")], - ___= - [0, - [11,caml_string_of_jsbytes("BeginCall([ "),0], - caml_string_of_jsbytes("BeginCall([ ")], - _$_= - [0, - [11,caml_string_of_jsbytes("EndCall([ "),0], - caml_string_of_jsbytes("EndCall([ ")], - _aa_= - [0, - [11, - caml_string_of_jsbytes("VariableDefinition([ "), - [2,0,[11,caml_string_of_jsbytes(" ], "),[2,0,[12,41,0]]]]], - caml_string_of_jsbytes("VariableDefinition([ %s ], %s)")], - _ab_= - [0, - [11,caml_string_of_jsbytes("DecisionTaken(_)"),0], - caml_string_of_jsbytes("DecisionTaken(_)")], - _s_=[0,-976970511,caml_string_of_jsbytes("VarComputation")], - _t_=[0,-976970511,caml_string_of_jsbytes("FunCall")], - _u_=[0,-976970511,caml_string_of_jsbytes("SubScopeCall")], - _h_=[0,848054398,[0,[0,-976970511,caml_string_of_jsbytes("Unit")],0]], - _i_= - [0, - 848054398, - [0,[0,-976970511,caml_string_of_jsbytes("Unembeddable")],0]], - _j_=[0,-976970511,caml_string_of_jsbytes("Bool")], - _k_=[0,-976970511,caml_string_of_jsbytes("Money")], - _l_=[0,-976970511,caml_string_of_jsbytes("Integer")], - _m_=[0,-976970511,caml_string_of_jsbytes("Decimal")], - _n_=[0,-976970511,caml_string_of_jsbytes("Date")], - _o_=[0,-976970511,caml_string_of_jsbytes("Duration")], - _p_=[0,-976970511,caml_string_of_jsbytes("Enum")], - _q_=[0,-976970511,caml_string_of_jsbytes("Struct")], - _r_=[0,-976970511,caml_string_of_jsbytes("Array")], - _f_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _e_=[0,[4,0,0,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%d %s")], - _g_=[0,[15,0],caml_string_of_jsbytes("%a")], - _c_=[0,[15,0],caml_string_of_jsbytes("%a")], - _b_=[0,-1014801911,0], - _d_= - [0,[2,0,[15,[12,46,[15,[2,0,0]]]]],caml_string_of_jsbytes("%s%a.%a%s")], - _a_=[0,[8,[0,0,0],0,[0,2],0],caml_string_of_jsbytes("%.2f")]; - function yojson_of_source_position(param) - {var - v_law_headings=param[6], - v_end_column=param[5], - v_end_line=param[4], - v_start_column=param[3], - v_start_line=param[2], - v_filename=param[1], - arg= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v_law_headings), - bnds=[0,[0,cst_law_headings,arg],0], - arg$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_column), - bnds$0=[0,[0,cst_end_column,arg$0],bnds], - arg$1=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_line), - bnds$1=[0,[0,cst_end_line,arg$1],bnds$0], - arg$2=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_column), - bnds$2=[0,[0,cst_start_column,arg$2],bnds$1], - arg$3=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_line), - bnds$3=[0,[0,cst_start_line,arg$3],bnds$2], - arg$4=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v_filename), - bnds$4=[0,[0,cst_filename,arg$4],bnds$3]; - return [0,963043957,bnds$4]} - var - EmptyError=[248,cst_Runtime_ocaml_Runtime_Empt,caml_fresh_oo_id(0)], - AssertionFailed=[248,cst_Runtime_ocaml_Runtime_Asse,caml_fresh_oo_id(0)], - ConflictError=[248,cst_Runtime_ocaml_Runtime_Conf,caml_fresh_oo_id(0)], - UncomparableDurations= - [248,cst_Runtime_ocaml_Runtime_Unco,caml_fresh_oo_id(0)], - IndivisableDurations= - [248,cst_Runtime_ocaml_Runtime_Indi,caml_fresh_oo_id(0)], - ImpossibleDate=[248,cst_Runtime_ocaml_Runtime_Impo,caml_fresh_oo_id(0)], - NoValueProvided=[248,cst_Runtime_ocaml_Runtime_NoVa,caml_fresh_oo_id(0)]; - function money_of_cents_string(cents){return caml_call1(Z[5],cents)} - function money_of_units_int(units){return caml_call2(Z[54],units,100)} - function money_of_cents_integer(cents){return cents} - function money_to_float(m){return caml_call1(Z[30],m) / 100.} - function money_of_decimal(d) - {var _cE_=caml_call1(Q[9],100),_cF_=caml_call2(Q[40],d,_cE_); - return caml_call1(Q[29],_cF_)} - function money_to_string(m) - {var - _cA_=caml_call1(Q[9],100), - _cB_=caml_call1(Q[8],m), - _cC_=caml_call2(Q[55],_cB_,_cA_), - _cD_=caml_call1(Q[35],_cC_); - return caml_call2(Stdlib_Format[133],_a_,_cD_)} - function money_to_cents(m){return m} - function money_round(m) - {var match=runtime.ml_z_div_rem(m,100),cents=match[2],units=match[1]; - if(runtime.caml_lessthan(caml_call1(Z[10],cents),50)) - return caml_call2(Z[54],units,100); - var _cy_=runtime.ml_z_sign(units),_cz_=caml_call2(Z[52],units,_cy_); - return caml_call2(Z[54],_cz_,100)} - function decimal_of_string(d){return caml_call1(Q[15],d)} - function decimal_to_float(d){return caml_call1(Q[35],d)} - function decimal_of_float(d){return caml_call1(Q[14],d)} - function decimal_of_integer(d){return caml_call1(Q[8],d)} - function decimal_to_string(max_prec_digits,i) - {var - sign=caml_call1(Q[20],i), - _cl_=caml_call1(Q[16],i), - n=caml_call1(Z[10],_cl_), - _cm_=caml_call1(Q[17],i), - d=caml_call1(Z[10],_cm_), - int_part=caml_call2(Z[18],n,d), - n$0=[0,caml_call2(Z[19],n,d)], - digits=[0,0]; - function leading_zeroes(digits) - {function _cx_(digit,num_leading_zeroes) - {if(3455931 <= num_leading_zeroes[1])return num_leading_zeroes; - var i=num_leading_zeroes[2]; - return caml_equal(digit,Z[2]) - ?[0,-1014801911,i + 1 | 0] - :[0,3455931,i]} - var match=caml_call3(Stdlib_List[26],_cx_,digits,_b_); - if(3455931 <= match[1]){var i=match[2];return i} - var i$0=match[2]; - return i$0} - for(;;) - {if(runtime.caml_notequal(n$0[1],Z[2])) - {var _cn_=leading_zeroes(digits[1]); - if - ((caml_call1(Stdlib_List[1],digits[1]) - _cn_ | 0) - < - max_prec_digits) - {n$0[1] = caml_call2(Z[14],n$0[1],10); - var _co_=digits[1]; - digits[1] = [0,caml_call2(Z[18],n$0[1],d),_co_]; - n$0[1] = caml_call2(Z[19],n$0[1],d); - continue}} - var - _cp_=leading_zeroes(digits[1]), - _cq_= - (caml_call1(Stdlib_List[1],digits[1]) - _cp_ | 0) - === - max_prec_digits - ?cst - :cst$2, - _cr_=caml_call1(Stdlib_List[9],digits[1]), - _cs_= - function(fmt,digit) - {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)}, - _ct_=[0,function(fmt,param){return 0}], - _cu_=caml_call2(Stdlib_Format[123],_ct_,_cs_), - _cv_=Z[36], - _cw_=0 <= sign?cst$0:cst$1; - return caml_call7 - (Stdlib_Format[133],_d_,_cw_,_cv_,int_part,_cu_,_cr_,_cq_)}} - function decimal_round(q) - {var - n=caml_call1(Q[16],q), - d=caml_call1(Q[17],q), - _ci_=caml_call2(Z[54],2,d), - _cj_=caml_call2(Z[54],2,n), - _ck_=runtime.ml_z_fdiv(caml_call2(Z[52],_cj_,d),_ci_); - return caml_call1(Q[8],_ck_)} - function decimal_of_money(m) - {var _cg_=caml_call1(Q[9],100),_ch_=caml_call1(Q[8],m); - return caml_call2(Q[42],_ch_,_cg_)} - function integer_of_string(s){return caml_call1(Z[5],s)} - function integer_to_string(i){return caml_call1(Z[31],i)} - function integer_to_int(i){return caml_call1(Z[29],i)} - function integer_of_int(i){return i} - function integer_exponentiation(i,e){return runtime.ml_z_pow(i,e)} - var integer_log2=Z[47]; - function year_of_date(d){return caml_call1(CalendarLib[9][17],d)} - function month_number_of_date(d) - {var _cf_=caml_call1(CalendarLib[9][16],d); - return caml_call1(CalendarLib[9][35],_cf_)} - function day_of_month_of_date(d){return caml_call1(CalendarLib[9][13],d)} - function date_of_numbers(year,month,day) - {try - {var _cd_=caml_call3(CalendarLib[9][3],year,month,day);return _cd_} - catch(_ce_){throw ImpossibleDate}} - function date_to_string(d){return caml_call1(CalendarLib[13][8][5],d)} - function first_day_of_month(d) - {var - _cb_=caml_call1(CalendarLib[9][16],d), - _cc_=caml_call1(CalendarLib[9][35],_cb_); - return date_of_numbers(caml_call1(CalendarLib[9][17],d),_cc_,1)} - function last_day_of_month(d) - {var - _b__=caml_call1(CalendarLib[9][11],d), - _b$_=caml_call1(CalendarLib[9][16],d), - _ca_=caml_call1(CalendarLib[9][35],_b$_); - return date_of_numbers(caml_call1(CalendarLib[9][17],d),_ca_,_b__)} - function duration_of_numbers(year,month,day) - {return caml_call3(CalendarLib[9][37][8],year,month,day)} - function duration_to_string(d) - {var - match=caml_call1(CalendarLib[9][37][17],d), - z=match[3], - y=match[2], - x=match[1], - _b5_=[0,[0,x,cst_years],[0,[0,y,cst_months],[0,[0,z,cst_days],0]]]; - function _b6_(param){var a=param[1];return 0 !== a?1:0} - var to_print=caml_call2(Stdlib_List[41],_b6_,_b5_); - if(to_print) - {var - _b7_= - function(fmt,param) - {var l=param[2],d=param[1]; - return caml_call4(Stdlib_Format[129],fmt,_e_,d,l)}, - _b8_= - [0, - function(fmt,param){return caml_call2(Stdlib_Format[129],fmt,_f_)}], - _b9_=caml_call2(Stdlib_Format[123],_b8_,_b7_); - return caml_call3(Stdlib_Format[133],_g_,_b9_,to_print)} - return cst_empty_duration} - function duration_to_years_months_days(d) - {return caml_call1(CalendarLib[9][37][17],d)} - function yojson_of_runtime_value(param) - {if(typeof param === "number") - return 0 === param?_h_:_i_; - else - switch(param[0]) - {case 0: - var - v0$4=param[1], - v0$5=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][2],v0$4); - return [0,848054398,[0,_j_,[0,v0$5,0]]]; - case 1: - var v0$6=param[1],v0=[0,365180284,money_to_float(v0$6)]; - return [0,848054398,[0,_k_,[0,v0,0]]]; - case 2: - var v0$7=param[1],v0$0=[0,3654863,integer_to_int(v0$7)]; - return [0,848054398,[0,_l_,[0,v0$0,0]]]; - case 3: - var v0$8=param[1],v0$1=[0,365180284,decimal_to_float(v0$8)]; - return [0,848054398,[0,_m_,[0,v0$1,0]]]; - case 4: - var v0$9=param[1],v0$2=[0,-976970511,date_to_string(v0$9)]; - return [0,848054398,[0,_n_,[0,v0$2,0]]]; - case 5: - var v0$10=param[1],v0$3=[0,-976970511,duration_to_string(v0$10)]; - return [0,848054398,[0,_o_,[0,v0$3,0]]]; - case 6: - var - v1=param[2], - v0$11=param[1], - v0$12= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v0$11), - v1$0=v1[2], - v0$13=v1[1], - v0$14=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0$13), - v1$1=yojson_of_runtime_value(v1$0), - v1$2=[0,848054398,[0,v0$14,[0,v1$1,0]]]; - return [0,848054398,[0,_p_,[0,v0$12,[0,v1$2,0]]]]; - case 7: - var - v1$3=param[2], - v0$15=param[1], - v0$16= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v0$15), - _b4_= - function(param) - {var - v1=param[2], - v0=param[1], - v0$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0), - v1$0=yojson_of_runtime_value(v1); - return [0,848054398,[0,v0$0,[0,v1$0,0]]]}, - v1$4=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][14],_b4_,v1$3); - return [0,848054398,[0,_q_,[0,v0$16,[0,v1$4,0]]]]; - default: - var - v0$17=param[1], - v0$18= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][15], - yojson_of_runtime_value, - v0$17); - return [0,848054398,[0,_r_,[0,v0$18,0]]]}} - function unembeddable(param){return 1} - function embed_unit(param){return 0} - function embed_bool(x){return [0,x]} - function embed_money(x){return [1,x]} - function embed_integer(x){return [2,x]} - function embed_decimal(x){return [3,x]} - function embed_date(x){return [4,x]} - function embed_duration(x){return [5,x]} - function embed_array(f,x){return [8,caml_call2(Stdlib_Array[15],f,x)]} - function yojson_of_information(v) - {return caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v)} - function yojson_of_var_def(param) - {var - v_fun_calls=param[4], - v_value=param[3], - v_name=param[2], - v_pos=param[1], - _b3_= - caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_fun_call), - arg=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][13],_b3_,v_fun_calls), - bnds=[0,[0,cst_fun_calls,arg],0], - arg$0=yojson_of_runtime_value(v_value), - bnds$0=[0,[0,cst_value,arg$0],bnds], - arg$1=yojson_of_information(v_name), - bnds$1=[0,[0,cst_name$0,arg$1],bnds$0], - arg$2= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][13], - yojson_of_source_position, - v_pos), - bnds$2=[0,[0,cst_pos,arg$2],bnds$1]; - return [0,963043957,bnds$2]} - function yojson_of_fun_call(param) - {var - v_output=param[4], - v_body=param[3], - v_input=param[2], - v_fun_name=param[1], - arg=yojson_of_var_def(v_output), - bnds=[0,[0,cst_output,arg],0], - arg$0= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), - bnds$0=[0,[0,cst_body$0,arg$0],bnds], - arg$1=yojson_of_var_def(v_input), - bnds$1=[0,[0,cst_input,arg$1],bnds$0], - arg$2=yojson_of_information(v_fun_name), - bnds$2=[0,[0,cst_fun_name,arg$2],bnds$1]; - return [0,963043957,bnds$2]} - function yojson_of_event(param) - {switch(param[0]) - {case 0: - var v0=param[1],v0$0=yojson_of_var_def(v0); - return [0,848054398,[0,_s_,[0,v0$0,0]]]; - case 1: - var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); - return [0,848054398,[0,_t_,[0,v0$2,0]]]; - default: - var - v_body=param[3], - v_inputs=param[2], - v_name=param[1], - arg= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), - bnds=[0,[0,cst_body,arg],0], - arg$0= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - yojson_of_var_def, - v_inputs), - bnds$0=[0,[0,cst_inputs,arg$0],bnds], - arg$1=yojson_of_information(v_name), - bnds$1=[0,[0,cst_name,arg$1],bnds$0]; - return [0,848054398,[0,_u_,[0,[0,963043957,bnds$1],0]]]}} - var log_ref=[0,0]; - function reset_log(param){log_ref[1] = 0;return 0} - function retrieve_log(param){return caml_call1(Stdlib_List[9],log_ref[1])} - function log_begin_call(info,f) - {log_ref[1] = [0,[0,info],log_ref[1]];return f} - function log_end_call(info,x) - {log_ref[1] = [0,[1,info],log_ref[1]];return x} - function log_variable_definition(info,embed,x) - {var _b2_=log_ref[1]; - log_ref[1] = [0,[2,info,caml_call1(embed,x)],_b2_]; - return x} - function log_decision_taken(pos,x) - {if(x)log_ref[1] = [0,[3,pos],log_ref[1]];return x} - function pp_events(opt,ppf,events) - {if(opt)var sth=opt[1],is_first_call=sth;else var is_first_call=1; - function format_var_def(ppf,var$0) - {var _b0_=var$0[3],_b1_=caml_call2(Stdlib_String[6],cst$3,var$0[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _v_, - format_pos_opt, - var$0[1], - _b1_, - format_value, - _b0_)} - function format_pos_opt(ppf,param) - {if(param) - {var pos=param[1]; - return caml_call5(Stdlib_Format[129],ppf,_w_,pos[1],pos[2],pos[4])} - return caml_call2(Stdlib_Format[129],ppf,_x_)} - function format_var_defs(ppf) - {var - _bZ_= - [0, - function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_y_)}]; - return caml_call3(Stdlib_Format[123],_bZ_,format_var_def,ppf)} - function format_var_def_with_fun_calls(ppf,var_with_fun) - {var _bS_=var_with_fun[4]; - if(_bS_) - {var _bT_=_bS_[1]; - if(_bT_) - {var - _bU_= - function(ppf,fun_call){return format_event(ppf,[1,fun_call])}, - _bV_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_z_)}], - _bW_=caml_call2(Stdlib_Format[123],_bV_,_bU_), - _bX_=var_with_fun[3], - _bY_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _A_, - _bY_, - format_value, - _bX_, - _bW_, - _bT_)}} - return format_var_def(ppf,var_with_fun)} - function format_value(ppf,param) - {if(typeof param === "number") - return 0 === param - ?caml_call2(Stdlib_Format[129],ppf,_B_) - :caml_call2(Stdlib_Format[129],ppf,_C_); - else - switch(param[0]) - {case 0: - var x=param[1];return caml_call3(Stdlib_Format[129],ppf,_D_,x); - case 1: - var x$0=param[1],_bG_=money_to_string(x$0); - return caml_call3(Stdlib_Format[129],ppf,_E_,_bG_); - case 2: - var x$1=param[1],_bH_=integer_to_int(x$1); - return caml_call3(Stdlib_Format[129],ppf,_F_,_bH_); - case 3: - var x$2=param[1],_bI_=decimal_to_string(10,x$2); - return caml_call3(Stdlib_Format[129],ppf,_G_,_bI_); - case 4: - var x$3=param[1],_bJ_=date_to_string(x$3); - return caml_call3(Stdlib_Format[129],ppf,_H_,_bJ_); - case 5: - var x$4=param[1],_bK_=duration_to_string(x$4); - return caml_call3(Stdlib_Format[129],ppf,_I_,_bK_); - case 6: - var match=param[2],name=match[1]; - return caml_call3(Stdlib_Format[129],ppf,_J_,name); - case 7: - var - attrs=param[2], - name$0=param[1], - _bL_= - function(fmt,param) - {var value=param[2],name=param[1]; - return caml_call5 - (Stdlib_Format[129],fmt,_K_,name,format_value,value)}, - _bM_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_L_)}], - _bN_=caml_call2(Stdlib_Format[123],_bM_,_bL_), - _bO_=caml_call2(Stdlib_String[6],cst$5,name$0); - return caml_call5(Stdlib_Format[129],ppf,_M_,_bO_,_bN_,attrs); - default: - var - elts=param[1], - _bP_=caml_call1(Stdlib_Array[11],elts), - _bQ_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_N_)}], - _bR_=caml_call2(Stdlib_Format[123],_bQ_,format_value); - return caml_call4(Stdlib_Format[129],ppf,_O_,_bR_,_bP_)}} - function format_event(ppf,param) - {switch(param[0]) - {case 0: - var var_def_with_fun=param[1]; - return caml_call1(Stdlib_Option[11],var_def_with_fun[4]) - ?caml_call4 - (Stdlib_Format[129], - ppf, - _P_, - format_var_def_with_fun_calls, - var_def_with_fun) - :caml_call4 - (Stdlib_Format[129],ppf,_Q_,format_var_def,var_def_with_fun); - case 1: - var - match=param[1], - output=match[4], - body=match[3], - input=match[2], - fun_name=match[1], - _by_=function(_bC_,_bD_){return pp_events(_R_,_bC_,_bD_)}, - _bz_=caml_call2(Stdlib_String[6],cst$6,fun_name); - return caml_call9 - (Stdlib_Format[129], - ppf, - _S_, - _bz_, - format_var_def, - input, - format_var_def_with_fun_calls, - output, - _by_, - body); - default: - var - body$0=param[3], - inputs=param[2], - name=param[1], - _bA_=function(_bE_,_bF_){return pp_events(_T_,_bE_,_bF_)}, - _bB_=caml_call2(Stdlib_String[6],cst$7,name); - return caml_call7 - (Stdlib_Format[129], - ppf, - _U_, - _bB_, - format_var_defs, - inputs, - _bA_, - body$0)}} - var - _bu_= - [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_V_)}], - _bv_=caml_call2(Stdlib_Format[123],_bu_,format_event), - _bw_=is_first_call?_W_:_Y_, - _bx_=caml_call2(Stdlib[98],_X_,_bw_); - return caml_call4(Stdlib_Format[129],ppf,_bx_,_bv_,events)} - var - StringMap=caml_call1(Stdlib_Map[1],[0,Stdlib_String[9]]), - empty=StringMap[1], - empty_ctx=[0,empty,0,0], - _Z_=0; - function raw_event_to_string(param) - {switch(param[0]) - {case 0: - var - name=param[1], - _bl_=caml_call2(Stdlib_String[6],cst$9,name), - _bm_=caml_call2(Stdlib[28],_bl_,cst$8), - _bn_=caml_call1(Stdlib_Printf[4],___); - return caml_call2(Stdlib[28],_bn_,_bm_); - case 1: - var - name$0=param[1], - _bo_=caml_call2(Stdlib_String[6],cst$11,name$0), - _bp_=caml_call2(Stdlib[28],_bo_,cst$10), - _bq_=caml_call1(Stdlib_Printf[4],_$_); - return caml_call2(Stdlib[28],_bq_,_bp_); - case 2: - var - value=param[2], - name$1=param[1], - _br_=yojson_of_runtime_value(value), - _bs_=caml_call4(Yojson[11][5],0,0,0,_br_), - _bt_=caml_call2(Stdlib_String[6],cst$12,name$1); - return caml_call3(Stdlib_Printf[4],_aa_,_bt_,_bs_); - default:return caml_call1(Stdlib_Printf[4],_ab_)}} - function parse_raw_events(raw_events) - {var nb_raw_events=caml_call1(Stdlib_List[1],raw_events); - function is_function_call(infos) - {return 2 === caml_call1(Stdlib_List[1],infos)?1:0} - function is_var_def(name) - {return 2 === caml_call1(Stdlib_List[1],name)?1:0} - function parse_fun_call(events) - {if(events) - {var _bh_=events[1]; - if(2 === _bh_[0]) - {var _bi_=events[2]; - if(_bi_) - {var _bj_=_bi_[1]; - if(0 === _bj_[0]) - {var rest=_bi_[2],infos=_bj_[1],value=_bh_[2],name=_bh_[1]; - if(is_function_call(infos)) - {var - _bf_=3 === caml_call1(Stdlib_List[1],name)?1:0, - _bg_= - _bf_ - ?caml_string_equal - (cst_input$0,caml_call2(Stdlib_List[7],name,2)) - :_bf_; - if(_bg_) - {var - body_ctx=parse_events([0,empty,0,rest]), - body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), - output=caml_call1(Stdlib_List[5],body_rev), - _bk_=caml_call1(Stdlib_List[6],body_rev), - body=caml_call1(Stdlib_List[9],_bk_), - rest$0=body_ctx[3]; - if(0 === output[0]) - var var_def=output[1],output$0=var_def; - else - var - output$0= - caml_call1(Stdlib[2],cst_Missing_function_output_va); - return [0,rest$0,[0,infos,[0,0,name,value,0],body,output$0]]}}}}}} - return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} - function parse_events(ctx) - {var ctx$0=ctx; - a: - for(;;) - {var _aG_=ctx$0[3]; - if(_aG_) - {var _aH_=_aG_[1]; - switch(_aH_[0]) - {case 0: - var rest=_aG_[2],infos=_aH_[1]; - if(3 === caml_call1(Stdlib_List[1],infos)) - {if(infos) - {var _aI_=infos[2]; - if(_aI_) - {var _aJ_=_aI_[2]; - if(_aJ_ && ! _aJ_[2]) - {var - var_name=_aI_[1], - body_ctx=parse_events([0,empty,_Z_,rest]), - match$0=caml_call2(StringMap[29],var_name,ctx$0[1]); - if(match$0) - var ls$0=match$0[1],inputs=ls$0; - else - var inputs=0; - var - ctx$1= - [0, - ctx$0[1], - [0,[2,infos,inputs,body_ctx[2]],ctx$0[2]], - body_ctx[3]], - ctx$0=ctx$1; - continue}}} - return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)} - break; - case 1: - var rest$0=_aG_[2],_aM_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_aM_,rest$0]; - case 2: - var rest$1=_aG_[2],name=_aH_[1]; - if(is_var_def(name)) - {var ctx$2=[0,ctx$0[1],ctx$0[2],rest$1],ctx$0=ctx$2;continue} - if(rest$1) - {var _aN_=rest$1[1]; - if(0 === _aN_[0]) - {var infos$0=_aN_[1]; - if(is_function_call(infos$0)) - {var - match$1=parse_fun_call(ctx$0[3]), - fun_call=match$1[2], - rest$2=match$1[1], - ctx$3=[0,ctx$0[1],[0,[1,fun_call],ctx$0[2]],rest$2], - ctx$0=ctx$3; - continue}}} - break; - default: - var _aO_=_aG_[2]; - if(_aO_) - {var _aP_=_aO_[1]; - if(2 === _aP_[0]) - {var - rest$3=_aO_[2], - value=_aP_[2], - name$0=_aP_[1], - pos=_aH_[1], - _aE_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; - if(_aE_) - var - _aF_=caml_call2(Stdlib_List[7],name$0,1), - _aQ_=caml_call2(Stdlib_String[14],_aF_,46); - else - var _aQ_=_aE_; - if(_aQ_) - {if(name$0) - {var _aR_=name$0[2]; - if(_aR_ && ! _aR_[2]) - {var - var_dot_subscope_var_name=_aR_[1], - _aS_= - caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), - name$1=caml_call2(Stdlib_List[7],_aS_,0), - _aU_=ctx$0[1], - v=[0,[0,pos],name$0,value,0], - _aT_=ctx$0[2], - match=caml_call2(StringMap[29],name$1,_aU_); - if(match) - var - ls=match[1], - _be_=caml_call3(StringMap[4],name$1,[0,v,ls],_aU_); - else - var _be_=caml_call3(StringMap[4],name$1,[0,v,0],_aU_); - var ctx$4=[0,_be_,_aT_,rest$3],ctx$0=ctx$4; - continue}} - return caml_call1 - (Stdlib[2],cst_unreachable_due_to_the_is_$0)} - var switch$0=0; - if(is_var_def(name$0)) - switch$0 = 1; - else - {var - _aC_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, - _aD_= - _aC_ - ?caml_string_equal - (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) - :_aC_; - if(_aD_) - switch$0 = 1; - else - if(rest$3) - {var _aV_=rest$3[1]; - if(0 === _aV_[0]) - {var infos$1=_aV_[1]; - if(is_function_call(infos$1)) - {var - raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]), - fun_calls=0, - rest$4=raw_events$0; - for(;;) - {if(rest$4 && 2 === rest$4[1][0]) - {var _aW_=rest$4[2]; - if(_aW_) - {var _aX_=_aW_[1]; - if(0 === _aX_[0]) - {var infos$2=_aX_[1]; - if(is_function_call(infos$2)) - {var - match$2=parse_fun_call(rest$4), - fun_call$0=match$2[2], - raw_events=match$2[1], - fun_calls$1=[0,fun_call$0,fun_calls], - fun_calls=fun_calls$1, - rest$4=raw_events; - continue}}}} - var fun_calls$0=caml_call1(Stdlib_List[9],fun_calls); - if(rest$4) - {var _aY_=rest$4[1]; - if(2 === _aY_[0]) - var - rest$6=rest$4[2], - value$0=_aY_[2], - name$2=_aY_[1], - var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$0]]], - rest$5=rest$6; - else - var - _aZ_= - (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) - + - 1 - | - 0, - _a0_=caml_call1(Stdlib[33],_aZ_), - _a1_=caml_call2(Stdlib[28],_a0_,cst$13), - _a2_=caml_call2(Stdlib[28],cst$14,_a1_), - _a3_=raw_event_to_string(_aY_), - _a4_=caml_call2(Stdlib[28],_a3_,_a2_), - _a5_= - caml_call2(Stdlib[28],cst_expected_variable_definiti,_a4_), - _a6_=caml_call2(Stdlib_String[6],cst$15,infos$1), - _a7_=caml_call2(Stdlib[28],_a6_,_a5_), - _a8_=caml_call2(Stdlib[28],cst_Invalid_function_call,_a7_), - _a9_=caml_call1(Stdlib[2],_a8_), - var_comp=_a9_[2], - rest$5=_a9_[1]} - else - var - _a__=caml_call2(Stdlib_String[6],cst$16,infos$1), - _a$_= - caml_call2(Stdlib[28],_a__,cst_expected_variable_definiti$0), - _ba_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_a$_), - _bb_=caml_call1(Stdlib[2],_ba_), - var_comp=_bb_[2], - rest$5=_bb_[1]; - var - ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5], - ctx$0=ctx$6; - continue a}}}}} - if(switch$0) - {var - ctx$5= - [0, - ctx$0[1], - [0,[0,[0,[0,pos],name$0,value,0]],ctx$0[2]], - rest$3], - ctx$0=ctx$5; - continue}}}} - var - _aK_=raw_event_to_string(_aH_), - _aL_=caml_call2(Stdlib[28],cst_Unexpected_event,_aK_); - return caml_call1(Stdlib[2],_aL_)} - var _bc_=ctx$0[3],_bd_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_bd_,_bc_]}} - try - {var _aB_=parse_events([0,empty,_Z_,raw_events]),ctx=_aB_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Stdlib[7])throw exn; - var msg=exn[2]; - caml_call2(Stdlib_Printf[3],_ac_,msg); - var ctx=empty_ctx} - return ctx[2]} - function handle_default(pos,exceptions,just,cons) - {var _ax_=0; - function _ay_(acc,except) - {try - {var _az_=[0,caml_call1(except,0)],new_val=_az_} - catch(_aA_) - {_aA_ = caml_wrap_exception(_aA_); - if(_aA_ !== EmptyError)throw _aA_; - var new_val=0} - if(acc){if(new_val)throw [0,ConflictError,pos];return acc} - return new_val} - var except=caml_call3(Stdlib_Array[17],_ay_,_ax_,exceptions); - if(except){var x=except[1];return x} - if(caml_call1(just,0))return caml_call1(cons,0); - throw EmptyError} - function handle_default_opt(pos,exceptions,just,cons) - {function _aw_(acc,except) - {if(0 === acc[0])return except; - if(0 === except[0])return acc; - throw [0,ConflictError,pos]} - var except=caml_call3(Stdlib_Array[17],_aw_,_ad_,exceptions); - if(0 === except[0]) - {if(0 === just[0])return _ae_;var b=just[1];return b?cons:_af_} - return except} - function no_input(param){throw EmptyError} - function symbol(i1,i2) - {var - i1_abs=caml_call1(Z[10],i1), - i2_abs=caml_call1(Q[37],i2), - _ar_=caml_call1(Q[20],i2), - sign_int=caml_mul(runtime.ml_z_sign(i1),_ar_), - _as_=caml_call1(Q[8],i1_abs), - rat_result=caml_call2(Q[40],_as_,i2_abs), - _at_=caml_call1(Q[17],rat_result), - match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_at_), - remainder=match[2], - res=match[1], - _au_=caml_call1(Q[17],rat_result); - if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_au_)) - {var _av_=caml_call2(Z[12],res,1); - return caml_call2(Z[54],_av_,sign_int)} - return caml_call2(Z[54],res,sign_int)} - function symbol$0(m1,m2) - {if(caml_equal(Z[2],m2))throw Stdlib[13]; - var _ap_=caml_call1(Q[8],m2),_aq_=caml_call1(Q[8],m1); - return caml_call2(Q[42],_aq_,_ap_)} - function symbol$1(m1,m2){return caml_call2(Z[12],m1,m2)} - function symbol$2(m1,m2){return caml_call2(Z[13],m1,m2)} - function symbol$3(m1){return caml_call2(Z[13],Z[2],m1)} - function symbol$4(i1,i2){return caml_call2(Z[12],i1,i2)} - function symbol$5(i1,i2){return caml_call2(Z[13],i1,i2)} - function symbol$6(i1){return caml_call2(Z[13],Z[2],i1)} - function symbol$7(i1,i2){return caml_call2(Z[14],i1,i2)} - function symbol$8(i1,i2) - {if(caml_equal(Z[2],i2))throw Stdlib[13];return caml_call2(Z[15],i1,i2)} - function symbol$9(i1,i2){return caml_call2(Q[38],i1,i2)} - function symbol$10(i1,i2){return caml_call2(Q[39],i1,i2)} - function symbol$11(i1){return caml_call2(Q[39],Q[2],i1)} - function symbol$12(i1,i2){return caml_call2(Q[40],i1,i2)} - function symbol$13(i1,i2) - {if(caml_equal(Q[2],i2))throw Stdlib[13];return caml_call2(Q[42],i1,i2)} - function symbol$14(d1,d2){return caml_call2(CalendarLib[9][38],d1,d2)} - function symbol$15(d1,d2){return caml_call2(CalendarLib[9][39],d1,d2)} - function symbol$16(d1,d2){return caml_call2(CalendarLib[9][37][2],d1,d2)} - function symbol$17(d1,d2){return caml_call2(CalendarLib[9][37][3],d1,d2)} - function symbol$18(d1,d2) - {try - {var - nb_day1=caml_call1(CalendarLib[9][37][15],d1), - nb_day2=caml_call1(CalendarLib[9][37][15],d2); - if(0 === nb_day2)throw Stdlib[13]; - var _an_=caml_call2(Q[59],nb_day1,nb_day2); - return _an_} - catch(_ao_) - {_ao_ = caml_wrap_exception(_ao_); - if(_ao_ === CalendarLib[9][37][14])throw IndivisableDurations; - throw _ao_}} - function symbol$19(d1,i1) - {var - match=caml_call1(CalendarLib[9][37][17],d1), - d=match[3], - m=match[2], - y=match[1], - _ak_=caml_mul(d,integer_to_int(i1)), - _al_=caml_mul(m,integer_to_int(i1)), - _am_=caml_mul(y,integer_to_int(i1)); - return caml_call3(CalendarLib[9][37][8],_am_,_al_,_ak_)} - function symbol$20(m1,m2){return runtime.ml_z_compare(m1,m2) <= 0?1:0} - function symbol$21(m1,m2){return 0 <= runtime.ml_z_compare(m1,m2)?1:0} - function symbol$22(m1,m2){return runtime.ml_z_compare(m1,m2) < 0?1:0} - function symbol$23(m1,m2){return 0 < runtime.ml_z_compare(m1,m2)?1:0} - function symbol$24(m1,m2){return 0 === runtime.ml_z_compare(m1,m2)?1:0} - function symbol$25(i1,i2){return 0 <= runtime.ml_z_compare(i1,i2)?1:0} - function symbol$26(i1,i2){return runtime.ml_z_compare(i1,i2) <= 0?1:0} - function symbol$27(i1,i2){return 0 < runtime.ml_z_compare(i1,i2)?1:0} - function symbol$28(i1,i2){return runtime.ml_z_compare(i1,i2) < 0?1:0} - function symbol$29(i1,i2){return 0 === runtime.ml_z_compare(i1,i2)?1:0} - function symbol$30(i1,i2){return 0 <= caml_call2(Q[21],i1,i2)?1:0} - function symbol$31(i1,i2){return caml_call2(Q[21],i1,i2) <= 0?1:0} - function symbol$32(i1,i2){return 0 < caml_call2(Q[21],i1,i2)?1:0} - function symbol$33(i1,i2){return caml_call2(Q[21],i1,i2) < 0?1:0} - function symbol$34(i1,i2){return 0 === caml_call2(Q[21],i1,i2)?1:0} - function symbol$35(d1,d2) - {return 0 <= caml_call2(CalendarLib[9][21],d1,d2)?1:0} - function symbol$36(d1,d2) - {return caml_call2(CalendarLib[9][21],d1,d2) <= 0?1:0} - function symbol$37(d1,d2) - {return 0 < caml_call2(CalendarLib[9][21],d1,d2)?1:0} - function symbol$38(d1,d2) - {return caml_call2(CalendarLib[9][21],d1,d2) < 0?1:0} - function symbol$39(d1,d2) - {return 0 === caml_call2(CalendarLib[9][21],d1,d2)?1:0} - function compare_periods(p1,p2) - {try - {var - p1_days=caml_call1(CalendarLib[9][37][15],p1), - p2_days=caml_call1(CalendarLib[9][37][15],p2), - _ai_=runtime.caml_int_compare(p1_days,p2_days); - return _ai_} - catch(_aj_) - {_aj_ = caml_wrap_exception(_aj_); - if(_aj_ === CalendarLib[9][37][14])throw UncomparableDurations; - throw _aj_}} - function symbol$40(d1,d2){return 0 <= compare_periods(d1,d2)?1:0} - function symbol$41(d1,d2){return compare_periods(d1,d2) <= 0?1:0} - function symbol$42(d1,d2){return 0 < compare_periods(d1,d2)?1:0} - function symbol$43(d1,d2){return compare_periods(d1,d2) < 0?1:0} - function symbol$44(d1,d2){return 0 === compare_periods(d1,d2)?1:0} - function symbol$45(d1){return caml_call1(CalendarLib[9][37][4],d1)} - function array_filter(f,a) - {var - _ag_=caml_call1(Stdlib_Array[11],a), - _ah_=caml_call2(Stdlib_List[41],f,_ag_); - return caml_call1(Stdlib_Array[12],_ah_)} - function array_length(a){return a.length - 1} - var - Runtime_ocaml_Runtime= - [0, - yojson_of_source_position, - EmptyError, - AssertionFailed, - ConflictError, - UncomparableDurations, - IndivisableDurations, - ImpossibleDate, - NoValueProvided, - yojson_of_runtime_value, - unembeddable, - embed_unit, - embed_bool, - embed_money, - embed_integer, - embed_decimal, - embed_date, - embed_duration, - embed_array, - yojson_of_information, - yojson_of_event, - yojson_of_var_def, - yojson_of_fun_call, - retrieve_log, - [0,parse_raw_events], - reset_log, - log_begin_call, - log_end_call, - log_variable_definition, - log_decision_taken, - pp_events, - money_of_cents_string, - money_of_units_int, - money_of_decimal, - money_of_cents_integer, - money_to_float, - money_to_string, - money_to_cents, - money_round, - decimal_of_string, - decimal_to_string, - decimal_of_integer, - decimal_of_float, - decimal_to_float, - decimal_round, - decimal_of_money, - integer_of_string, - integer_to_string, - integer_to_int, - integer_of_int, - integer_log2, - integer_exponentiation, - day_of_month_of_date, - month_number_of_date, - year_of_date, - date_to_string, - date_of_numbers, - first_day_of_month, - last_day_of_month, - duration_of_numbers, - duration_to_years_months_days, - duration_to_string, - handle_default, - handle_default_opt, - no_input, - symbol, - symbol$0, - symbol$1, - symbol$2, - symbol$3, - symbol$24, - symbol$20, - symbol$21, - symbol$22, - symbol$23, - symbol$4, - symbol$5, - symbol$6, - symbol$7, - symbol$8, - symbol$29, - symbol$25, - symbol$26, - symbol$27, - symbol$28, - symbol$9, - symbol$10, - symbol$11, - symbol$12, - symbol$13, - symbol$34, - symbol$30, - symbol$31, - symbol$32, - symbol$33, - symbol$14, - symbol$15, - symbol$39, - symbol$35, - symbol$36, - symbol$37, - symbol$38, - symbol$16, - symbol$17, - symbol$18, - symbol$19, - symbol$45, - symbol$44, - symbol$40, - symbol$41, - symbol$42, - symbol$43, - array_filter, - array_length]; - caml_register_global(131,Runtime_ocaml_Runtime,"Runtime_ocaml__Runtime"); - return} - (globalThis)); - - -//# 1 "../../.js/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_exn_with_js_backtrace=runtime.caml_exn_with_js_backtrace, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - var - global_data=runtime.caml_get_global_data(), - cst_Jsoo_runtime_Error_Exn= - caml_string_of_jsbytes("Jsoo_runtime.Error.Exn"), - cst_jsError=caml_string_of_jsbytes("jsError"), - Stdlib_Callback=global_data.Stdlib__Callback, - Js=[0], - Sys=[0], - Exn=[248,cst_Jsoo_runtime_Error_Exn,runtime.caml_fresh_oo_id(0)]; - caml_call2(Stdlib_Callback[2],cst_jsError,[0,Exn,[0]]); - function raise(exn){throw exn} - var - Error= - [0, - raise, - caml_exn_with_js_backtrace, - runtime.caml_js_error_option_of_exception, - Exn], - For_compatibility_only=[0], - Bigstring=[0], - Typed_array=[0,Bigstring], - Int64=[0], - Jsoo_runtime=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; - runtime.caml_register_global(4,Jsoo_runtime,"Jsoo_runtime"); - return} - (globalThis)); - - -//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" -(function(globalThis) - {"use strict"; - var - jsoo_exports=typeof module === "object" && module.exports || globalThis, - runtime=globalThis.jsoo_runtime, - caml_float_of_string=runtime.caml_float_of_string, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int_of_string=runtime.caml_int_of_string, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_get=runtime.caml_js_get, - caml_js_html_escape=runtime.caml_js_html_escape, - caml_js_set=runtime.caml_js_set, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_jsbytes_of_string=runtime.caml_jsbytes_of_string, - caml_jsstring_of_string=runtime.caml_jsstring_of_string, - caml_list_of_js_array=runtime.caml_list_of_js_array, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_register_global=runtime.caml_register_global, - caml_string_compare=runtime.caml_string_compare, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_array=runtime.caml_string_of_array, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_of_jsstring=runtime.caml_string_of_jsstring, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - var - global_data=runtime.caml_get_global_data(), - cst_parseFloat=caml_string_of_jsbytes("parseFloat"), - cst_parseInt=caml_string_of_jsbytes("parseInt"), - cst_can_t_retrieve_file_name_n= - caml_string_of_jsbytes("can't retrieve file name: not implemented"), - cst_endings=caml_string_of_jsbytes("endings"), - cst_type=caml_string_of_jsbytes("type"), - cst_loadstart=caml_string_of_jsbytes("loadstart"), - cst_progress=caml_string_of_jsbytes("progress"), - cst_abort=caml_string_of_jsbytes("abort"), - cst_error=caml_string_of_jsbytes("error"), - cst_load=caml_string_of_jsbytes("load"), - cst_loadend=caml_string_of_jsbytes("loadend"), - cst_a$1=caml_string_of_jsbytes("a"), - cst_area$1=caml_string_of_jsbytes("area"), - cst_audio$1=caml_string_of_jsbytes("audio"), - cst_base$1=caml_string_of_jsbytes("base"), - cst_blockquote$1=caml_string_of_jsbytes("blockquote"), - cst_body$1=caml_string_of_jsbytes("body"), - cst_br$1=caml_string_of_jsbytes("br"), - cst_button$1=caml_string_of_jsbytes("button"), - cst_canvas$1=caml_string_of_jsbytes("canvas"), - cst_caption$1=caml_string_of_jsbytes("caption"), - cst_col$1=caml_string_of_jsbytes("col"), - cst_colgroup$1=caml_string_of_jsbytes("colgroup"), - cst_del$1=caml_string_of_jsbytes("del"), - cst_div$1=caml_string_of_jsbytes("div"), - cst_dl$1=caml_string_of_jsbytes("dl"), - cst_embed$1=caml_string_of_jsbytes("embed"), - cst_fieldset$1=caml_string_of_jsbytes("fieldset"), - cst_form$1=caml_string_of_jsbytes("form"), - cst_frame$1=caml_string_of_jsbytes("frame"), - cst_frameset$1=caml_string_of_jsbytes("frameset"), - cst_h1$1=caml_string_of_jsbytes("h1"), - cst_h2$1=caml_string_of_jsbytes("h2"), - cst_h3$1=caml_string_of_jsbytes("h3"), - cst_h4$1=caml_string_of_jsbytes("h4"), - cst_h5$1=caml_string_of_jsbytes("h5"), - cst_h6$1=caml_string_of_jsbytes("h6"), - cst_head$1=caml_string_of_jsbytes("head"), - cst_hr$1=caml_string_of_jsbytes("hr"), - cst_html$1=caml_string_of_jsbytes("html"), - cst_iframe$1=caml_string_of_jsbytes("iframe"), - cst_img$1=caml_string_of_jsbytes("img"), - cst_input$2=caml_string_of_jsbytes("input"), - cst_ins$1=caml_string_of_jsbytes("ins"), - cst_label$1=caml_string_of_jsbytes("label"), - cst_legend$1=caml_string_of_jsbytes("legend"), - cst_li$1=caml_string_of_jsbytes("li"), - cst_link$1=caml_string_of_jsbytes("link"), - cst_map$1=caml_string_of_jsbytes("map"), - cst_meta$1=caml_string_of_jsbytes("meta"), - cst_object$1=caml_string_of_jsbytes("object"), - cst_ol$1=caml_string_of_jsbytes("ol"), - cst_optgroup$1=caml_string_of_jsbytes("optgroup"), - cst_option$1=caml_string_of_jsbytes("option"), - cst_p$1=caml_string_of_jsbytes("p"), - cst_param$1=caml_string_of_jsbytes("param"), - cst_pre$1=caml_string_of_jsbytes("pre"), - cst_q$1=caml_string_of_jsbytes("q"), - cst_script$1=caml_string_of_jsbytes("script"), - cst_select$2=caml_string_of_jsbytes("select"), - cst_style$1=caml_string_of_jsbytes("style"), - cst_table$1=caml_string_of_jsbytes("table"), - cst_tbody$1=caml_string_of_jsbytes("tbody"), - cst_td$1=caml_string_of_jsbytes("td"), - cst_textarea$1=caml_string_of_jsbytes("textarea"), - cst_tfoot$1=caml_string_of_jsbytes("tfoot"), - cst_th$1=caml_string_of_jsbytes("th"), - cst_thead$1=caml_string_of_jsbytes("thead"), - cst_title$1=caml_string_of_jsbytes("title"), - cst_tr$1=caml_string_of_jsbytes("tr"), - cst_ul$1=caml_string_of_jsbytes("ul"), - cst_video$1=caml_string_of_jsbytes("video"), - cst_KeyH=caml_string_of_jsbytes("KeyH"), - cst_Digit6=caml_string_of_jsbytes("Digit6"), - cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"), - cst_Backslash=caml_string_of_jsbytes("Backslash"), - cst_AltLeft=caml_string_of_jsbytes("AltLeft"), - cst_AltRight=caml_string_of_jsbytes("AltRight"), - cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"), - cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"), - cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"), - cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"), - cst_Backquote=caml_string_of_jsbytes("Backquote"), - cst_Backspace=caml_string_of_jsbytes("Backspace"), - cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"), - cst_BracketRight=caml_string_of_jsbytes("BracketRight"), - cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"), - cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"), - cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"), - cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"), - cst_Delete=caml_string_of_jsbytes("Delete"), - cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"), - cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"), - cst_CapsLock=caml_string_of_jsbytes("CapsLock"), - cst_Comma=caml_string_of_jsbytes("Comma"), - cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"), - cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"), - cst_ControlRight=caml_string_of_jsbytes("ControlRight"), - cst_Digit0=caml_string_of_jsbytes("Digit0"), - cst_Digit1=caml_string_of_jsbytes("Digit1"), - cst_Digit2=caml_string_of_jsbytes("Digit2"), - cst_Digit3=caml_string_of_jsbytes("Digit3"), - cst_Digit4=caml_string_of_jsbytes("Digit4"), - cst_Digit5=caml_string_of_jsbytes("Digit5"), - cst_F6=caml_string_of_jsbytes("F6"), - cst_F1=caml_string_of_jsbytes("F1"), - cst_Digit7=caml_string_of_jsbytes("Digit7"), - cst_Digit8=caml_string_of_jsbytes("Digit8"), - cst_Digit9=caml_string_of_jsbytes("Digit9"), - cst_End=caml_string_of_jsbytes("End"), - cst_Enter=caml_string_of_jsbytes("Enter"), - cst_Equal=caml_string_of_jsbytes("Equal"), - cst_Escape=caml_string_of_jsbytes("Escape"), - cst_F10=caml_string_of_jsbytes("F10"), - cst_F11=caml_string_of_jsbytes("F11"), - cst_F12=caml_string_of_jsbytes("F12"), - cst_F2=caml_string_of_jsbytes("F2"), - cst_F3=caml_string_of_jsbytes("F3"), - cst_F4=caml_string_of_jsbytes("F4"), - cst_F5=caml_string_of_jsbytes("F5"), - cst_KeyA=caml_string_of_jsbytes("KeyA"), - cst_F7=caml_string_of_jsbytes("F7"), - cst_F8=caml_string_of_jsbytes("F8"), - cst_F9=caml_string_of_jsbytes("F9"), - cst_Home=caml_string_of_jsbytes("Home"), - cst_Insert=caml_string_of_jsbytes("Insert"), - cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"), - cst_IntlYen=caml_string_of_jsbytes("IntlYen"), - cst_KeyB=caml_string_of_jsbytes("KeyB"), - cst_KeyC=caml_string_of_jsbytes("KeyC"), - cst_KeyD=caml_string_of_jsbytes("KeyD"), - cst_KeyE=caml_string_of_jsbytes("KeyE"), - cst_KeyF=caml_string_of_jsbytes("KeyF"), - cst_KeyG=caml_string_of_jsbytes("KeyG"), - cst_Numpad4=caml_string_of_jsbytes("Numpad4"), - cst_KeyX=caml_string_of_jsbytes("KeyX"), - cst_KeyP=caml_string_of_jsbytes("KeyP"), - cst_KeyI=caml_string_of_jsbytes("KeyI"), - cst_KeyJ=caml_string_of_jsbytes("KeyJ"), - cst_KeyK=caml_string_of_jsbytes("KeyK"), - cst_KeyL=caml_string_of_jsbytes("KeyL"), - cst_KeyM=caml_string_of_jsbytes("KeyM"), - cst_KeyN=caml_string_of_jsbytes("KeyN"), - cst_KeyO=caml_string_of_jsbytes("KeyO"), - cst_KeyQ=caml_string_of_jsbytes("KeyQ"), - cst_KeyR=caml_string_of_jsbytes("KeyR"), - cst_KeyS=caml_string_of_jsbytes("KeyS"), - cst_KeyT=caml_string_of_jsbytes("KeyT"), - cst_KeyU=caml_string_of_jsbytes("KeyU"), - cst_KeyV=caml_string_of_jsbytes("KeyV"), - cst_KeyW=caml_string_of_jsbytes("KeyW"), - cst_MetaRight=caml_string_of_jsbytes("MetaRight"), - cst_KeyY=caml_string_of_jsbytes("KeyY"), - cst_KeyZ=caml_string_of_jsbytes("KeyZ"), - cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"), - cst_MediaStop=caml_string_of_jsbytes("MediaStop"), - cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"), - cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"), - cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"), - cst_Minus=caml_string_of_jsbytes("Minus"), - cst_NumLock=caml_string_of_jsbytes("NumLock"), - cst_Numpad0=caml_string_of_jsbytes("Numpad0"), - cst_Numpad1=caml_string_of_jsbytes("Numpad1"), - cst_Numpad2=caml_string_of_jsbytes("Numpad2"), - cst_Numpad3=caml_string_of_jsbytes("Numpad3"), - cst_PageUp=caml_string_of_jsbytes("PageUp"), - cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"), - cst_Numpad5=caml_string_of_jsbytes("Numpad5"), - cst_Numpad6=caml_string_of_jsbytes("Numpad6"), - cst_Numpad7=caml_string_of_jsbytes("Numpad7"), - cst_Numpad8=caml_string_of_jsbytes("Numpad8"), - cst_Numpad9=caml_string_of_jsbytes("Numpad9"), - cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"), - cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"), - cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"), - cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"), - cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"), - cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"), - cst_OSLeft=caml_string_of_jsbytes("OSLeft"), - cst_OSRight=caml_string_of_jsbytes("OSRight"), - cst_PageDown=caml_string_of_jsbytes("PageDown"), - cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"), - cst_Pause=caml_string_of_jsbytes("Pause"), - cst_Period=caml_string_of_jsbytes("Period"), - cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"), - cst_Quote=caml_string_of_jsbytes("Quote"), - cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"), - cst_Semicolon=caml_string_of_jsbytes("Semicolon"), - cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"), - cst_Slash=caml_string_of_jsbytes("Slash"), - cst_Space=caml_string_of_jsbytes("Space"), - cst_Tab=caml_string_of_jsbytes("Tab"), - cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"), - cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"), - cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"), - cst_mouseout$0=caml_string_of_jsbytes("mouseout"), - cst_mouseover$0=caml_string_of_jsbytes("mouseover"), - cst_video$0=caml_string_of_jsbytes("video"), - cst_audio$0=caml_string_of_jsbytes("audio"), - cst_ul$0=caml_string_of_jsbytes("ul"), - cst_tr$0=caml_string_of_jsbytes("tr"), - cst_title$0=caml_string_of_jsbytes("title"), - cst_thead$0=caml_string_of_jsbytes("thead"), - cst_th$0=caml_string_of_jsbytes("th"), - cst_tfoot$0=caml_string_of_jsbytes("tfoot"), - cst_textarea$0=caml_string_of_jsbytes("textarea"), - cst_td$0=caml_string_of_jsbytes("td"), - cst_tbody$0=caml_string_of_jsbytes("tbody"), - cst_table$0=caml_string_of_jsbytes("table"), - cst_style$0=caml_string_of_jsbytes("style"), - cst_select$1=caml_string_of_jsbytes("select"), - cst_script$0=caml_string_of_jsbytes("script"), - cst_q$0=caml_string_of_jsbytes("q"), - cst_pre$0=caml_string_of_jsbytes("pre"), - cst_param$0=caml_string_of_jsbytes("param"), - cst_p$0=caml_string_of_jsbytes("p"), - cst_option$0=caml_string_of_jsbytes("option"), - cst_optgroup$0=caml_string_of_jsbytes("optgroup"), - cst_ol$0=caml_string_of_jsbytes("ol"), - cst_object$0=caml_string_of_jsbytes("object"), - cst_meta$0=caml_string_of_jsbytes("meta"), - cst_map$0=caml_string_of_jsbytes("map"), - cst_link$0=caml_string_of_jsbytes("link"), - cst_li$0=caml_string_of_jsbytes("li"), - cst_legend$0=caml_string_of_jsbytes("legend"), - cst_label$0=caml_string_of_jsbytes("label"), - cst_ins$0=caml_string_of_jsbytes("ins"), - cst_input$1=caml_string_of_jsbytes("input"), - cst_img$0=caml_string_of_jsbytes("img"), - cst_iframe$0=caml_string_of_jsbytes("iframe"), - cst_html$0=caml_string_of_jsbytes("html"), - cst_hr$0=caml_string_of_jsbytes("hr"), - cst_head$0=caml_string_of_jsbytes("head"), - cst_h6$0=caml_string_of_jsbytes("h6"), - cst_h5$0=caml_string_of_jsbytes("h5"), - cst_h4$0=caml_string_of_jsbytes("h4"), - cst_h3$0=caml_string_of_jsbytes("h3"), - cst_h2$0=caml_string_of_jsbytes("h2"), - cst_h1$0=caml_string_of_jsbytes("h1"), - cst_frame$0=caml_string_of_jsbytes("frame"), - cst_frameset$0=caml_string_of_jsbytes("frameset"), - cst_form$0=caml_string_of_jsbytes("form"), - cst_embed$0=caml_string_of_jsbytes("embed"), - cst_fieldset$0=caml_string_of_jsbytes("fieldset"), - cst_dl$0=caml_string_of_jsbytes("dl"), - cst_div$0=caml_string_of_jsbytes("div"), - cst_del$0=caml_string_of_jsbytes("del"), - cst_colgroup$0=caml_string_of_jsbytes("colgroup"), - cst_col$0=caml_string_of_jsbytes("col"), - cst_caption$0=caml_string_of_jsbytes("caption"), - cst_canvas$0=caml_string_of_jsbytes("canvas"), - cst_button$0=caml_string_of_jsbytes("button"), - cst_br$0=caml_string_of_jsbytes("br"), - cst_body$0=caml_string_of_jsbytes("body"), - cst_blockquote$0=caml_string_of_jsbytes("blockquote"), - cst_base$0=caml_string_of_jsbytes("base"), - cst_area$0=caml_string_of_jsbytes("area"), - cst_a$0=caml_string_of_jsbytes("a"), - cst_canvas=caml_string_of_jsbytes("canvas"), - cst_video=caml_string_of_jsbytes("video"), - cst_audio=caml_string_of_jsbytes("audio"), - cst_iframe=caml_string_of_jsbytes("iframe"), - cst_frame=caml_string_of_jsbytes("frame"), - cst_frameset=caml_string_of_jsbytes("frameset"), - cst_address=caml_string_of_jsbytes("address"), - cst_noscript=caml_string_of_jsbytes("noscript"), - cst_dt=caml_string_of_jsbytes("dt"), - cst_dd=caml_string_of_jsbytes("dd"), - cst_abbr=caml_string_of_jsbytes("abbr"), - cst_var=caml_string_of_jsbytes("var"), - cst_kbd=caml_string_of_jsbytes("kbd"), - cst_samp=caml_string_of_jsbytes("samp"), - cst_code=caml_string_of_jsbytes("code"), - cst_dfn=caml_string_of_jsbytes("dfn"), - cst_cite=caml_string_of_jsbytes("cite"), - cst_strong=caml_string_of_jsbytes("strong"), - cst_em=caml_string_of_jsbytes("em"), - cst_small=caml_string_of_jsbytes("small"), - cst_big=caml_string_of_jsbytes("big"), - cst_b=caml_string_of_jsbytes("b"), - cst_i=caml_string_of_jsbytes("i"), - cst_tt=caml_string_of_jsbytes("tt"), - cst_span=caml_string_of_jsbytes("span"), - cst_sup=caml_string_of_jsbytes("sup"), - cst_sub=caml_string_of_jsbytes("sub"), - cst_td=caml_string_of_jsbytes("td"), - cst_th=caml_string_of_jsbytes("th"), - cst_tr=caml_string_of_jsbytes("tr"), - cst_tbody=caml_string_of_jsbytes("tbody"), - cst_tfoot=caml_string_of_jsbytes("tfoot"), - cst_thead=caml_string_of_jsbytes("thead"), - cst_colgroup=caml_string_of_jsbytes("colgroup"), - cst_col=caml_string_of_jsbytes("col"), - cst_caption=caml_string_of_jsbytes("caption"), - cst_table=caml_string_of_jsbytes("table"), - cst_script=caml_string_of_jsbytes("script"), - cst_area=caml_string_of_jsbytes("area"), - cst_map=caml_string_of_jsbytes("map"), - cst_param=caml_string_of_jsbytes("param"), - cst_object=caml_string_of_jsbytes("object"), - cst_img=caml_string_of_jsbytes("img"), - cst_a=caml_string_of_jsbytes("a"), - cst_del=caml_string_of_jsbytes("del"), - cst_ins=caml_string_of_jsbytes("ins"), - cst_hr=caml_string_of_jsbytes("hr"), - cst_br=caml_string_of_jsbytes("br"), - cst_pre=caml_string_of_jsbytes("pre"), - cst_blockquote=caml_string_of_jsbytes("blockquote"), - cst_q=caml_string_of_jsbytes("q"), - cst_h6=caml_string_of_jsbytes("h6"), - cst_h5=caml_string_of_jsbytes("h5"), - cst_h4=caml_string_of_jsbytes("h4"), - cst_h3=caml_string_of_jsbytes("h3"), - cst_h2=caml_string_of_jsbytes("h2"), - cst_h1=caml_string_of_jsbytes("h1"), - cst_p=caml_string_of_jsbytes("p"), - cst_embed=caml_string_of_jsbytes("embed"), - cst_div=caml_string_of_jsbytes("div"), - cst_li=caml_string_of_jsbytes("li"), - cst_dl=caml_string_of_jsbytes("dl"), - cst_ol=caml_string_of_jsbytes("ol"), - cst_ul=caml_string_of_jsbytes("ul"), - cst_legend=caml_string_of_jsbytes("legend"), - cst_fieldset=caml_string_of_jsbytes("fieldset"), - cst_label=caml_string_of_jsbytes("label"), - cst_button=caml_string_of_jsbytes("button"), - cst_textarea=caml_string_of_jsbytes("textarea"), - cst_input$0=caml_string_of_jsbytes("input"), - cst_select$0=caml_string_of_jsbytes("select"), - cst_option=caml_string_of_jsbytes("option"), - cst_optgroup=caml_string_of_jsbytes("optgroup"), - cst_form=caml_string_of_jsbytes("form"), - cst_body=caml_string_of_jsbytes("body"), - cst_style=caml_string_of_jsbytes("style"), - cst_base=caml_string_of_jsbytes("base"), - cst_meta=caml_string_of_jsbytes("meta"), - cst_title=caml_string_of_jsbytes("title"), - cst_link=caml_string_of_jsbytes("link"), - cst_head=caml_string_of_jsbytes("head"), - cst_html=caml_string_of_jsbytes("html"), - cst_click=caml_string_of_jsbytes("click"), - cst_copy=caml_string_of_jsbytes("copy"), - cst_cut=caml_string_of_jsbytes("cut"), - cst_paste=caml_string_of_jsbytes("paste"), - cst_dblclick=caml_string_of_jsbytes("dblclick"), - cst_mousedown=caml_string_of_jsbytes("mousedown"), - cst_mouseup=caml_string_of_jsbytes("mouseup"), - cst_mouseover=caml_string_of_jsbytes("mouseover"), - cst_mousemove=caml_string_of_jsbytes("mousemove"), - cst_mouseout=caml_string_of_jsbytes("mouseout"), - cst_keypress=caml_string_of_jsbytes("keypress"), - cst_keydown=caml_string_of_jsbytes("keydown"), - cst_keyup=caml_string_of_jsbytes("keyup"), - cst_mousewheel=caml_string_of_jsbytes("mousewheel"), - cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), - cst_touchstart=caml_string_of_jsbytes("touchstart"), - cst_touchmove=caml_string_of_jsbytes("touchmove"), - cst_touchend=caml_string_of_jsbytes("touchend"), - cst_touchcancel=caml_string_of_jsbytes("touchcancel"), - cst_dragstart=caml_string_of_jsbytes("dragstart"), - cst_dragend=caml_string_of_jsbytes("dragend"), - cst_dragenter=caml_string_of_jsbytes("dragenter"), - cst_dragover=caml_string_of_jsbytes("dragover"), - cst_dragleave=caml_string_of_jsbytes("dragleave"), - cst_drag=caml_string_of_jsbytes("drag"), - cst_drop=caml_string_of_jsbytes("drop"), - cst_hashchange=caml_string_of_jsbytes("hashchange"), - cst_change=caml_string_of_jsbytes("change"), - cst_input=caml_string_of_jsbytes("input"), - cst_timeupdate=caml_string_of_jsbytes("timeupdate"), - cst_submit=caml_string_of_jsbytes("submit"), - cst_scroll=caml_string_of_jsbytes("scroll"), - cst_focus=caml_string_of_jsbytes("focus"), - cst_blur=caml_string_of_jsbytes("blur"), - cst_load$0=caml_string_of_jsbytes("load"), - cst_unload=caml_string_of_jsbytes("unload"), - cst_beforeunload=caml_string_of_jsbytes("beforeunload"), - cst_resize=caml_string_of_jsbytes("resize"), - cst_orientationchange=caml_string_of_jsbytes("orientationchange"), - cst_popstate=caml_string_of_jsbytes("popstate"), - cst_error$0=caml_string_of_jsbytes("error"), - cst_abort$0=caml_string_of_jsbytes("abort"), - cst_select=caml_string_of_jsbytes("select"), - cst_online=caml_string_of_jsbytes("online"), - cst_offline=caml_string_of_jsbytes("offline"), - cst_checking=caml_string_of_jsbytes("checking"), - cst_noupdate=caml_string_of_jsbytes("noupdate"), - cst_downloading=caml_string_of_jsbytes("downloading"), - cst_progress$0=caml_string_of_jsbytes("progress"), - cst_updateready=caml_string_of_jsbytes("updateready"), - cst_cached=caml_string_of_jsbytes("cached"), - cst_obsolete=caml_string_of_jsbytes("obsolete"), - cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"), - cst_animationstart=caml_string_of_jsbytes("animationstart"), - cst_animationend=caml_string_of_jsbytes("animationend"), - cst_animationiteration=caml_string_of_jsbytes("animationiteration"), - cst_animationcancel=caml_string_of_jsbytes("animationcancel"), - cst_canplay=caml_string_of_jsbytes("canplay"), - cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), - cst_durationchange=caml_string_of_jsbytes("durationchange"), - cst_emptied=caml_string_of_jsbytes("emptied"), - cst_ended=caml_string_of_jsbytes("ended"), - cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"), - cst_loadeddata=caml_string_of_jsbytes("loadeddata"), - cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"), - cst_loadstart$0=caml_string_of_jsbytes("loadstart"), - cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"), - cst_message=caml_string_of_jsbytes("message"), - cst_pause=caml_string_of_jsbytes("pause"), - cst_play=caml_string_of_jsbytes("play"), - cst_playing=caml_string_of_jsbytes("playing"), - cst_pointerenter=caml_string_of_jsbytes("pointerenter"), - cst_pointercancel=caml_string_of_jsbytes("pointercancel"), - cst_pointerdown=caml_string_of_jsbytes("pointerdown"), - cst_pointerleave=caml_string_of_jsbytes("pointerleave"), - cst_pointermove=caml_string_of_jsbytes("pointermove"), - cst_pointerout=caml_string_of_jsbytes("pointerout"), - cst_pointerover=caml_string_of_jsbytes("pointerover"), - cst_pointerup=caml_string_of_jsbytes("pointerup"), - cst_ratechange=caml_string_of_jsbytes("ratechange"), - cst_seeked=caml_string_of_jsbytes("seeked"), - cst_seeking=caml_string_of_jsbytes("seeking"), - cst_stalled=caml_string_of_jsbytes("stalled"), - cst_suspend=caml_string_of_jsbytes("suspend"), - cst_volumechange=caml_string_of_jsbytes("volumechange"), - cst_waiting=caml_string_of_jsbytes("waiting"), - cst_Js_of_ocaml_Dom_html_Canva= - caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"), - cst_checkbox=caml_string_of_jsbytes("checkbox"), - cst_file=caml_string_of_jsbytes("file"), - cst_password=caml_string_of_jsbytes("password"), - cst_radio=caml_string_of_jsbytes("radio"), - cst_reset=caml_string_of_jsbytes("reset"), - cst_submit$0=caml_string_of_jsbytes("submit"), - cst_text=caml_string_of_jsbytes("text"), - cst_readystatechange=caml_string_of_jsbytes("readystatechange"), - cst_loadstart$1=caml_string_of_jsbytes("loadstart"), - cst_progress$1=caml_string_of_jsbytes("progress"), - cst_abort$1=caml_string_of_jsbytes("abort"), - cst_error$1=caml_string_of_jsbytes("error"), - cst_load$1=caml_string_of_jsbytes("load"), - cst_timeout=caml_string_of_jsbytes("timeout"), - cst_loadend$0=caml_string_of_jsbytes("loadend"), - cst_Worker_onmessage_is_undefi$0= - caml_string_of_jsbytes("Worker.onmessage is undefined"), - cst_Worker_onmessage_is_undefi= - caml_string_of_jsbytes("Worker.onmessage is undefined"), - cst_Worker_import_scripts_is_u= - caml_string_of_jsbytes("Worker.import_scripts is undefined"), - cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"), - cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"), - cst_webglcontextcreationerror= - caml_string_of_jsbytes("webglcontextcreationerror"), - cst_g=caml_string_of_jsbytes("g"), - cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"), - cst$37=caml_string_of_jsbytes(""), - cst$13=caml_string_of_jsbytes(""), - cst$21=caml_string_of_jsbytes(""), - cst$14=caml_string_of_jsbytes("#"), - cst$15=caml_string_of_jsbytes("?"), - cst$20=caml_string_of_jsbytes(""), - cst$16=caml_string_of_jsbytes("/"), - cst$17=caml_string_of_jsbytes("/"), - cst$19=caml_string_of_jsbytes(":"), - cst$18=caml_string_of_jsbytes(""), - cst_http$1=caml_string_of_jsbytes("http://"), - cst$22=caml_string_of_jsbytes(""), - cst$30=caml_string_of_jsbytes(""), - cst$23=caml_string_of_jsbytes("#"), - cst$24=caml_string_of_jsbytes("?"), - cst$29=caml_string_of_jsbytes(""), - cst$25=caml_string_of_jsbytes("/"), - cst$26=caml_string_of_jsbytes("/"), - cst$28=caml_string_of_jsbytes(":"), - cst$27=caml_string_of_jsbytes(""), - cst_https$1=caml_string_of_jsbytes("https://"), - cst$31=caml_string_of_jsbytes(""), - cst$36=caml_string_of_jsbytes(""), - cst$32=caml_string_of_jsbytes("#"), - cst$33=caml_string_of_jsbytes("?"), - cst$35=caml_string_of_jsbytes(""), - cst$34=caml_string_of_jsbytes("/"), - cst_file$2=caml_string_of_jsbytes("file://"), - cst$12=caml_string_of_jsbytes(""), - cst$11=caml_string_of_jsbytes(""), - cst$10=caml_string_of_jsbytes(""), - cst$9=caml_string_of_jsbytes(""), - cst$8=caml_string_of_jsbytes(""), - cst$7=caml_string_of_jsbytes(""), - cst$6=caml_string_of_jsbytes(""), - cst$4=caml_string_of_jsbytes("="), - cst$5=caml_string_of_jsbytes("&"), - cst$2=caml_string_of_jsbytes(""), - cst$3=caml_string_of_jsbytes(""), - cst_file$0=caml_string_of_jsbytes("file"), - cst_file$1=caml_string_of_jsbytes("file:"), - cst_http=caml_string_of_jsbytes("http"), - cst_http$0=caml_string_of_jsbytes("http:"), - cst_https=caml_string_of_jsbytes("https"), - cst_https$0=caml_string_of_jsbytes("https:"), - cst$1=caml_string_of_jsbytes(" "), - cst_2B=caml_string_of_jsbytes("%2B"), - cst_Js_of_ocaml_Url_Local_exn= - caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"), - cst$0=caml_string_of_jsbytes("+"), - cst_Js_of_ocaml_Url_Not_an_htt= - caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"), - cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0= - caml_string_of_jsbytes - ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"), - cst_Ff_Ii_Ll_Ee= - caml_string_of_jsbytes - ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), - s=caml_string_of_jsbytes("4.0.0"), - git_version=caml_string_of_jsbytes("0.5.0-666-g0ac754b7-dirty"), - cst$38=caml_string_of_jsbytes(""), - cst$41=caml_string_of_jsbytes("+"), - cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"), - t5=runtime.caml_int64_create_lo_mi_hi(1,0,0), - cst_is_not_a_valid_length$0= - caml_string_of_jsbytes(" is not a valid length"), - cst_d_d_deg_grad_rad_turns= - caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"), - cst_length_conversion_error$0= - caml_string_of_jsbytes("length conversion error: "), - cst_deg$0=caml_string_of_jsbytes("deg"), - cst_grad$0=caml_string_of_jsbytes("grad"), - cst_rad$0=caml_string_of_jsbytes("rad"), - cst_turns$0=caml_string_of_jsbytes("turns"), - cst_deg=caml_string_of_jsbytes("deg"), - cst_grad=caml_string_of_jsbytes("grad"), - cst_rad=caml_string_of_jsbytes("rad"), - cst_turns=caml_string_of_jsbytes("turns"), - cst_is_not_a_valid_length= - caml_string_of_jsbytes(" is not a valid length"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"), - cst_length_conversion_error= - caml_string_of_jsbytes("length conversion error: "), - cst_pc$0=caml_string_of_jsbytes("pc"), - cst_ch$0=caml_string_of_jsbytes("ch"), - cst_cm$0=caml_string_of_jsbytes("cm"), - cst_em$1=caml_string_of_jsbytes("em"), - cst_ex$0=caml_string_of_jsbytes("ex"), - cst_gd$0=caml_string_of_jsbytes("gd"), - cst_in$0=caml_string_of_jsbytes("in"), - cst_mm$0=caml_string_of_jsbytes("mm"), - cst_pt$0=caml_string_of_jsbytes("pt"), - cst_px$0=caml_string_of_jsbytes("px"), - cst_rem$0=caml_string_of_jsbytes("rem"), - cst_vh$0=caml_string_of_jsbytes("vh"), - cst_vm$0=caml_string_of_jsbytes("vm"), - cst_vw$0=caml_string_of_jsbytes("vw"), - cst_0=caml_string_of_jsbytes("0"), - cst_em$0=caml_string_of_jsbytes("em"), - cst_ex=caml_string_of_jsbytes("ex"), - cst_px=caml_string_of_jsbytes("px"), - cst_gd=caml_string_of_jsbytes("gd"), - cst_rem=caml_string_of_jsbytes("rem"), - cst_vw=caml_string_of_jsbytes("vw"), - cst_vh=caml_string_of_jsbytes("vh"), - cst_vm=caml_string_of_jsbytes("vm"), - cst_ch=caml_string_of_jsbytes("ch"), - cst_mm=caml_string_of_jsbytes("mm"), - cst_cm=caml_string_of_jsbytes("cm"), - cst_in=caml_string_of_jsbytes("in"), - cst_pt=caml_string_of_jsbytes("pt"), - cst_pc=caml_string_of_jsbytes("pc"), - cst$40=caml_string_of_jsbytes("): "), - cst_color_conversion_error$0= - caml_string_of_jsbytes("color conversion error ("), - cst$39=caml_string_of_jsbytes("): "), - cst_color_conversion_error= - caml_string_of_jsbytes("color conversion error ("), - cst_is_not_a_valid_color$0= - caml_string_of_jsbytes(" is not a valid color"), - cst_rgba_d_d_d_d_d= - caml_string_of_jsbytes - ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_rgba_d_d_d_d_d$0= - caml_string_of_jsbytes - ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_hsla_d_d_d_d_d= - caml_string_of_jsbytes - ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_rgb=caml_string_of_jsbytes("rgb"), - cst_rgba=caml_string_of_jsbytes("rgba"), - cst_rgb$0=caml_string_of_jsbytes("rgb"), - cst_rgba$0=caml_string_of_jsbytes("rgba"), - cst_hsl=caml_string_of_jsbytes("hsl"), - cst_hsla=caml_string_of_jsbytes("hsla"), - cst_rgb_s_d_s_d_s_d= - caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"), - cst_rgb_s_d_s_d_s_d$0= - caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"), - cst_rgba_s_d_s_d_s_d_d_d= - caml_string_of_jsbytes - ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"), - cst_rgba_s_d_s_d_s_d_d_d$0= - caml_string_of_jsbytes - ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), - cst_hsl_s_d_s_d_s_d= - caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"), - cst_hsla_s_d_s_d_s_d_d_d= - caml_string_of_jsbytes - ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), - cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"), - cst_is_out_of_valid_range= - caml_string_of_jsbytes(" is out of valid range"), - partial=[8,[0,0,0],0,0,[12,41,0]], - partial$0=[12,41,0], - partial$1=[0,0,0], - cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"), - cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"), - cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"), - cst_blue$0=caml_string_of_jsbytes("blue"), - cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"), - cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"), - cst_aqua$0=caml_string_of_jsbytes("aqua"), - cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"), - cst_azure$0=caml_string_of_jsbytes("azure"), - cst_beige$0=caml_string_of_jsbytes("beige"), - cst_bisque$0=caml_string_of_jsbytes("bisque"), - cst_black$0=caml_string_of_jsbytes("black"), - cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"), - cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"), - cst_brown$0=caml_string_of_jsbytes("brown"), - cst_burlywood$0=caml_string_of_jsbytes("burlywood"), - cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"), - cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"), - cst_chocolate$0=caml_string_of_jsbytes("chocolate"), - cst_coral$0=caml_string_of_jsbytes("coral"), - cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"), - cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"), - cst_crimson$0=caml_string_of_jsbytes("crimson"), - cst_cyan$0=caml_string_of_jsbytes("cyan"), - cst_darkblue$0=caml_string_of_jsbytes("darkblue"), - cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"), - cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"), - cst_darkgray$0=caml_string_of_jsbytes("darkgray"), - cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"), - cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"), - cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"), - cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"), - cst_darkorange$0=caml_string_of_jsbytes("darkorange"), - cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"), - cst_darkred$0=caml_string_of_jsbytes("darkred"), - cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"), - cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"), - cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"), - cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"), - cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"), - cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"), - cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"), - cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"), - cst_deeppink$0=caml_string_of_jsbytes("deeppink"), - cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"), - cst_dimgray$0=caml_string_of_jsbytes("dimgray"), - cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"), - cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"), - cst_firebrick$0=caml_string_of_jsbytes("firebrick"), - cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"), - cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"), - cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"), - cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"), - cst_gold$0=caml_string_of_jsbytes("gold"), - cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"), - cst_gray$0=caml_string_of_jsbytes("gray"), - cst_green$0=caml_string_of_jsbytes("green"), - cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"), - cst_grey$0=caml_string_of_jsbytes("grey"), - cst_honeydew$0=caml_string_of_jsbytes("honeydew"), - cst_hotpink$0=caml_string_of_jsbytes("hotpink"), - cst_indianred$0=caml_string_of_jsbytes("indianred"), - cst_indigo$0=caml_string_of_jsbytes("indigo"), - cst_ivory$0=caml_string_of_jsbytes("ivory"), - cst_khaki$0=caml_string_of_jsbytes("khaki"), - cst_lavender$0=caml_string_of_jsbytes("lavender"), - cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"), - cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"), - cst_lightblue$0=caml_string_of_jsbytes("lightblue"), - cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"), - cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"), - cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"), - cst_lightgray$0=caml_string_of_jsbytes("lightgray"), - cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"), - cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"), - cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"), - cst_limegreen$0=caml_string_of_jsbytes("limegreen"), - cst_lightpink$0=caml_string_of_jsbytes("lightpink"), - cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"), - cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"), - cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"), - cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"), - cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"), - cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"), - cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"), - cst_lime$0=caml_string_of_jsbytes("lime"), - cst_linen$0=caml_string_of_jsbytes("linen"), - cst_magenta$0=caml_string_of_jsbytes("magenta"), - cst_maroon$0=caml_string_of_jsbytes("maroon"), - cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"), - cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"), - cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"), - cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"), - cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"), - cst_navy$0=caml_string_of_jsbytes("navy"), - cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"), - cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"), - cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"), - cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"), - cst_mintcream$0=caml_string_of_jsbytes("mintcream"), - cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"), - cst_moccasin$0=caml_string_of_jsbytes("moccasin"), - cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"), - cst_oldlace$0=caml_string_of_jsbytes("oldlace"), - cst_olive$0=caml_string_of_jsbytes("olive"), - cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"), - cst_orange$0=caml_string_of_jsbytes("orange"), - cst_orangered$0=caml_string_of_jsbytes("orangered"), - cst_orchid$0=caml_string_of_jsbytes("orchid"), - cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"), - cst_palegreen$0=caml_string_of_jsbytes("palegreen"), - cst_skyblue$0=caml_string_of_jsbytes("skyblue"), - cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"), - cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"), - cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"), - cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"), - cst_peru$0=caml_string_of_jsbytes("peru"), - cst_pink$0=caml_string_of_jsbytes("pink"), - cst_plum$0=caml_string_of_jsbytes("plum"), - cst_powderblue$0=caml_string_of_jsbytes("powderblue"), - cst_purple$0=caml_string_of_jsbytes("purple"), - cst_red$0=caml_string_of_jsbytes("red"), - cst_royalblue$0=caml_string_of_jsbytes("royalblue"), - cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"), - cst_salmon$0=caml_string_of_jsbytes("salmon"), - cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"), - cst_seagreen$0=caml_string_of_jsbytes("seagreen"), - cst_seashell$0=caml_string_of_jsbytes("seashell"), - cst_sienna$0=caml_string_of_jsbytes("sienna"), - cst_silver$0=caml_string_of_jsbytes("silver"), - cst_thistle$0=caml_string_of_jsbytes("thistle"), - cst_slateblue$0=caml_string_of_jsbytes("slateblue"), - cst_slategray$0=caml_string_of_jsbytes("slategray"), - cst_slategrey$0=caml_string_of_jsbytes("slategrey"), - cst_snow$0=caml_string_of_jsbytes("snow"), - cst_springgreen$0=caml_string_of_jsbytes("springgreen"), - cst_steelblue$0=caml_string_of_jsbytes("steelblue"), - cst_tan$0=caml_string_of_jsbytes("tan"), - cst_teal$0=caml_string_of_jsbytes("teal"), - cst_tomato$0=caml_string_of_jsbytes("tomato"), - cst_turquoise$0=caml_string_of_jsbytes("turquoise"), - cst_violet$0=caml_string_of_jsbytes("violet"), - cst_wheat$0=caml_string_of_jsbytes("wheat"), - cst_white$0=caml_string_of_jsbytes("white"), - cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"), - cst_yellow$0=caml_string_of_jsbytes("yellow"), - cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"), - cst_is_not_a_valid_color_name= - caml_string_of_jsbytes(" is not a valid color name"), - cst_aliceblue=caml_string_of_jsbytes("aliceblue"), - cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"), - cst_aqua=caml_string_of_jsbytes("aqua"), - cst_aquamarine=caml_string_of_jsbytes("aquamarine"), - cst_azure=caml_string_of_jsbytes("azure"), - cst_beige=caml_string_of_jsbytes("beige"), - cst_bisque=caml_string_of_jsbytes("bisque"), - cst_black=caml_string_of_jsbytes("black"), - cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"), - cst_blue=caml_string_of_jsbytes("blue"), - cst_blueviolet=caml_string_of_jsbytes("blueviolet"), - cst_brown=caml_string_of_jsbytes("brown"), - cst_burlywood=caml_string_of_jsbytes("burlywood"), - cst_cadetblue=caml_string_of_jsbytes("cadetblue"), - cst_chartreuse=caml_string_of_jsbytes("chartreuse"), - cst_chocolate=caml_string_of_jsbytes("chocolate"), - cst_coral=caml_string_of_jsbytes("coral"), - cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"), - cst_cornsilk=caml_string_of_jsbytes("cornsilk"), - cst_crimson=caml_string_of_jsbytes("crimson"), - cst_cyan=caml_string_of_jsbytes("cyan"), - cst_darkblue=caml_string_of_jsbytes("darkblue"), - cst_darkcyan=caml_string_of_jsbytes("darkcyan"), - cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"), - cst_darkgray=caml_string_of_jsbytes("darkgray"), - cst_darkgreen=caml_string_of_jsbytes("darkgreen"), - cst_darkgrey=caml_string_of_jsbytes("darkgrey"), - cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"), - cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"), - cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"), - cst_darkorange=caml_string_of_jsbytes("darkorange"), - cst_darkorchid=caml_string_of_jsbytes("darkorchid"), - cst_darkred=caml_string_of_jsbytes("darkred"), - cst_darksalmon=caml_string_of_jsbytes("darksalmon"), - cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"), - cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"), - cst_darkslategray=caml_string_of_jsbytes("darkslategray"), - cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"), - cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"), - cst_darkviolet=caml_string_of_jsbytes("darkviolet"), - cst_deeppink=caml_string_of_jsbytes("deeppink"), - cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"), - cst_dimgray=caml_string_of_jsbytes("dimgray"), - cst_dimgrey=caml_string_of_jsbytes("dimgrey"), - cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"), - cst_firebrick=caml_string_of_jsbytes("firebrick"), - cst_floralwhite=caml_string_of_jsbytes("floralwhite"), - cst_forestgreen=caml_string_of_jsbytes("forestgreen"), - cst_fuchsia=caml_string_of_jsbytes("fuchsia"), - cst_gainsboro=caml_string_of_jsbytes("gainsboro"), - cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"), - cst_gold=caml_string_of_jsbytes("gold"), - cst_goldenrod=caml_string_of_jsbytes("goldenrod"), - cst_gray=caml_string_of_jsbytes("gray"), - cst_grey=caml_string_of_jsbytes("grey"), - cst_green=caml_string_of_jsbytes("green"), - cst_greenyellow=caml_string_of_jsbytes("greenyellow"), - cst_honeydew=caml_string_of_jsbytes("honeydew"), - cst_hotpink=caml_string_of_jsbytes("hotpink"), - cst_indianred=caml_string_of_jsbytes("indianred"), - cst_indigo=caml_string_of_jsbytes("indigo"), - cst_ivory=caml_string_of_jsbytes("ivory"), - cst_khaki=caml_string_of_jsbytes("khaki"), - cst_lavender=caml_string_of_jsbytes("lavender"), - cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"), - cst_lawngreen=caml_string_of_jsbytes("lawngreen"), - cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"), - cst_lightblue=caml_string_of_jsbytes("lightblue"), - cst_lightcoral=caml_string_of_jsbytes("lightcoral"), - cst_lightcyan=caml_string_of_jsbytes("lightcyan"), - cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"), - cst_lightgray=caml_string_of_jsbytes("lightgray"), - cst_lightgreen=caml_string_of_jsbytes("lightgreen"), - cst_lightgrey=caml_string_of_jsbytes("lightgrey"), - cst_lightpink=caml_string_of_jsbytes("lightpink"), - cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"), - cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"), - cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"), - cst_lightslategray=caml_string_of_jsbytes("lightslategray"), - cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"), - cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"), - cst_lightyellow=caml_string_of_jsbytes("lightyellow"), - cst_lime=caml_string_of_jsbytes("lime"), - cst_limegreen=caml_string_of_jsbytes("limegreen"), - cst_linen=caml_string_of_jsbytes("linen"), - cst_magenta=caml_string_of_jsbytes("magenta"), - cst_maroon=caml_string_of_jsbytes("maroon"), - cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"), - cst_mediumblue=caml_string_of_jsbytes("mediumblue"), - cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"), - cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"), - cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"), - cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"), - cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"), - cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"), - cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"), - cst_midnightblue=caml_string_of_jsbytes("midnightblue"), - cst_mintcream=caml_string_of_jsbytes("mintcream"), - cst_mistyrose=caml_string_of_jsbytes("mistyrose"), - cst_moccasin=caml_string_of_jsbytes("moccasin"), - cst_navajowhite=caml_string_of_jsbytes("navajowhite"), - cst_navy=caml_string_of_jsbytes("navy"), - cst_oldlace=caml_string_of_jsbytes("oldlace"), - cst_olive=caml_string_of_jsbytes("olive"), - cst_olivedrab=caml_string_of_jsbytes("olivedrab"), - cst_orange=caml_string_of_jsbytes("orange"), - cst_orangered=caml_string_of_jsbytes("orangered"), - cst_orchid=caml_string_of_jsbytes("orchid"), - cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"), - cst_palegreen=caml_string_of_jsbytes("palegreen"), - cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"), - cst_palevioletred=caml_string_of_jsbytes("palevioletred"), - cst_papayawhip=caml_string_of_jsbytes("papayawhip"), - cst_peachpuff=caml_string_of_jsbytes("peachpuff"), - cst_peru=caml_string_of_jsbytes("peru"), - cst_pink=caml_string_of_jsbytes("pink"), - cst_plum=caml_string_of_jsbytes("plum"), - cst_powderblue=caml_string_of_jsbytes("powderblue"), - cst_purple=caml_string_of_jsbytes("purple"), - cst_red=caml_string_of_jsbytes("red"), - cst_rosybrown=caml_string_of_jsbytes("rosybrown"), - cst_royalblue=caml_string_of_jsbytes("royalblue"), - cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"), - cst_salmon=caml_string_of_jsbytes("salmon"), - cst_sandybrown=caml_string_of_jsbytes("sandybrown"), - cst_seagreen=caml_string_of_jsbytes("seagreen"), - cst_seashell=caml_string_of_jsbytes("seashell"), - cst_sienna=caml_string_of_jsbytes("sienna"), - cst_silver=caml_string_of_jsbytes("silver"), - cst_skyblue=caml_string_of_jsbytes("skyblue"), - cst_slateblue=caml_string_of_jsbytes("slateblue"), - cst_slategray=caml_string_of_jsbytes("slategray"), - cst_slategrey=caml_string_of_jsbytes("slategrey"), - cst_snow=caml_string_of_jsbytes("snow"), - cst_springgreen=caml_string_of_jsbytes("springgreen"), - cst_steelblue=caml_string_of_jsbytes("steelblue"), - cst_tan=caml_string_of_jsbytes("tan"), - cst_teal=caml_string_of_jsbytes("teal"), - cst_thistle=caml_string_of_jsbytes("thistle"), - cst_tomato=caml_string_of_jsbytes("tomato"), - cst_turquoise=caml_string_of_jsbytes("turquoise"), - cst_violet=caml_string_of_jsbytes("violet"), - cst_wheat=caml_string_of_jsbytes("wheat"), - cst_white=caml_string_of_jsbytes("white"), - cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"), - cst_yellow=caml_string_of_jsbytes("yellow"), - cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"), - cst_vkern$0=caml_string_of_jsbytes("vkern"), - cst_view$0=caml_string_of_jsbytes("view"), - cst_use$0=caml_string_of_jsbytes("use"), - cst_tspan$0=caml_string_of_jsbytes("tspan"), - cst_tref$0=caml_string_of_jsbytes("tref"), - cst_title$3=caml_string_of_jsbytes("title"), - cst_textpath$0=caml_string_of_jsbytes("textpath"), - cst_text$1=caml_string_of_jsbytes("text"), - cst_symbol$0=caml_string_of_jsbytes("symbol"), - cst_switch$0=caml_string_of_jsbytes("switch"), - cst_svg$0=caml_string_of_jsbytes("svg"), - cst_style$3=caml_string_of_jsbytes("style"), - cst_stop$0=caml_string_of_jsbytes("stop"), - cst_set$0=caml_string_of_jsbytes("set"), - cst_script$3=caml_string_of_jsbytes("script"), - cst_rect$0=caml_string_of_jsbytes("rect"), - cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"), - cst_polyline$0=caml_string_of_jsbytes("polyline"), - cst_polygon$0=caml_string_of_jsbytes("polygon"), - cst_pattern$0=caml_string_of_jsbytes("pattern"), - cst_path$0=caml_string_of_jsbytes("path"), - cst_mpath$0=caml_string_of_jsbytes("mpath"), - cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"), - cst_metadata$0=caml_string_of_jsbytes("metadata"), - cst_mask$0=caml_string_of_jsbytes("mask"), - cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"), - cst_line$0=caml_string_of_jsbytes("line"), - cst_image$0=caml_string_of_jsbytes("image"), - cst_hkern$0=caml_string_of_jsbytes("hkern"), - cst_glyphref$0=caml_string_of_jsbytes("glyphref"), - cst_glyph$0=caml_string_of_jsbytes("glyph"), - cst_g$1=caml_string_of_jsbytes("g"), - cst_foreignobject=caml_string_of_jsbytes("foreignobject"), - cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"), - cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"), - cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"), - cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"), - cst_font_face$0=caml_string_of_jsbytes("font-face"), - cst_font$0=caml_string_of_jsbytes("font"), - cst_filter$0=caml_string_of_jsbytes("filter"), - cst_ellipse$0=caml_string_of_jsbytes("ellipse"), - cst_desc$0=caml_string_of_jsbytes("desc"), - cst_defs$0=caml_string_of_jsbytes("defs"), - cst_cursor$0=caml_string_of_jsbytes("cursor"), - cst_clippath$0=caml_string_of_jsbytes("clippath"), - cst_circle$0=caml_string_of_jsbytes("circle"), - cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"), - cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"), - cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"), - cst_animate$0=caml_string_of_jsbytes("animate"), - cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"), - cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"), - cst_altglyph$0=caml_string_of_jsbytes("altglyph"), - cst_a$3=caml_string_of_jsbytes("a"), - cst_vkern=caml_string_of_jsbytes("vkern"), - cst_view=caml_string_of_jsbytes("view"), - cst_use=caml_string_of_jsbytes("use"), - cst_tspan=caml_string_of_jsbytes("tspan"), - cst_tref=caml_string_of_jsbytes("tref"), - cst_title$2=caml_string_of_jsbytes("title"), - cst_textpath=caml_string_of_jsbytes("textpath"), - cst_text$0=caml_string_of_jsbytes("text"), - cst_symbol=caml_string_of_jsbytes("symbol"), - cst_switch=caml_string_of_jsbytes("switch"), - cst_svg=caml_string_of_jsbytes("svg"), - cst_style$2=caml_string_of_jsbytes("style"), - cst_stop=caml_string_of_jsbytes("stop"), - cst_set=caml_string_of_jsbytes("set"), - cst_script$2=caml_string_of_jsbytes("script"), - cst_rect=caml_string_of_jsbytes("rect"), - cst_radialgradient=caml_string_of_jsbytes("radialgradient"), - cst_polyline=caml_string_of_jsbytes("polyline"), - cst_polygon=caml_string_of_jsbytes("polygon"), - cst_pattern=caml_string_of_jsbytes("pattern"), - cst_path=caml_string_of_jsbytes("path"), - cst_mpath=caml_string_of_jsbytes("mpath"), - cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"), - cst_metadata=caml_string_of_jsbytes("metadata"), - cst_mask=caml_string_of_jsbytes("mask"), - cst_lineargradient=caml_string_of_jsbytes("lineargradient"), - cst_line=caml_string_of_jsbytes("line"), - cst_image=caml_string_of_jsbytes("image"), - cst_hkern=caml_string_of_jsbytes("hkern"), - cst_glyphref=caml_string_of_jsbytes("glyphref"), - cst_glyph=caml_string_of_jsbytes("glyph"), - cst_g$0=caml_string_of_jsbytes("g"), - cst_foreignObject=caml_string_of_jsbytes("foreignObject"), - cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"), - cst_font_face_src=caml_string_of_jsbytes("font-face-src"), - cst_font_face_name=caml_string_of_jsbytes("font-face-name"), - cst_font_face_format=caml_string_of_jsbytes("font-face-format"), - cst_font_face=caml_string_of_jsbytes("font-face"), - cst_font=caml_string_of_jsbytes("font"), - cst_filter=caml_string_of_jsbytes("filter"), - cst_ellipse=caml_string_of_jsbytes("ellipse"), - cst_desc=caml_string_of_jsbytes("desc"), - cst_defs=caml_string_of_jsbytes("defs"), - cst_cursor=caml_string_of_jsbytes("cursor"), - cst_clippath=caml_string_of_jsbytes("clippath"), - cst_circle=caml_string_of_jsbytes("circle"), - cst_animatetransform=caml_string_of_jsbytes("animatetransform"), - cst_animatemotion=caml_string_of_jsbytes("animatemotion"), - cst_animatecolor=caml_string_of_jsbytes("animatecolor"), - cst_animate=caml_string_of_jsbytes("animate"), - cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"), - cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"), - cst_altglyph=caml_string_of_jsbytes("altglyph"), - cst_a$2=caml_string_of_jsbytes("a"), - cst_Js_of_ocaml_Dom_svg_SVGErr= - caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"), - Stdlib_String=global_data.Stdlib__String, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib=global_data.Stdlib, - Jsoo_runtime=global_data.Jsoo_runtime, - Stdlib_Printexc=global_data.Stdlib__Printexc, - Assert_failure=global_data.Assert_failure, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_Uchar=global_data.Stdlib__Uchar, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_Obj=global_data.Stdlib__Obj, - Js_of_ocaml=[0]; - caml_register_global(1635,Js_of_ocaml,"Js_of_ocaml__"); - var - Poly=[0], - _g_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67], - _h_=[0,caml_string_of_jsbytes("transparent")], - _i_=[0,caml_string_of_jsbytes("native")], - _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2850,58], - _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2849,61], - _k_= - [0, - [11, - caml_string_of_jsbytes("getElementById_exn: "), - [3,0,[11,caml_string_of_jsbytes(" not found"),0]]], - caml_string_of_jsbytes("getElementById_exn: %S not found")], - _o_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], - _n_=[0,1], - _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], - _q_=[0,caml_string_of_jsbytes(""),0], - _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cm_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cn_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _ch_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _ci_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cj_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b7_= - caml_list_of_js_array - ([caml_string_of_jsbytes("aliceblue"), - caml_string_of_jsbytes("antiquewhite"), - caml_string_of_jsbytes("aqua"), - caml_string_of_jsbytes("aquamarine"), - caml_string_of_jsbytes("azure"), - caml_string_of_jsbytes("beige"), - caml_string_of_jsbytes("bisque"), - caml_string_of_jsbytes("black"), - caml_string_of_jsbytes("blanchedalmond"), - caml_string_of_jsbytes("blue"), - caml_string_of_jsbytes("blueviolet"), - caml_string_of_jsbytes("brown"), - caml_string_of_jsbytes("burlywood"), - caml_string_of_jsbytes("cadetblue"), - caml_string_of_jsbytes("chartreuse"), - caml_string_of_jsbytes("chocolate"), - caml_string_of_jsbytes("coral"), - caml_string_of_jsbytes("cornflowerblue"), - caml_string_of_jsbytes("cornsilk"), - caml_string_of_jsbytes("crimson"), - caml_string_of_jsbytes("cyan"), - caml_string_of_jsbytes("darkblue"), - caml_string_of_jsbytes("darkcyan"), - caml_string_of_jsbytes("darkgoldenrod"), - caml_string_of_jsbytes("darkgray"), - caml_string_of_jsbytes("darkgreen"), - caml_string_of_jsbytes("darkgrey"), - caml_string_of_jsbytes("darkkhaki"), - caml_string_of_jsbytes("darkmagenta"), - caml_string_of_jsbytes("darkolivegreen"), - caml_string_of_jsbytes("darkorange"), - caml_string_of_jsbytes("darkorchid"), - caml_string_of_jsbytes("darkred"), - caml_string_of_jsbytes("darksalmon"), - caml_string_of_jsbytes("darkseagreen"), - caml_string_of_jsbytes("darkslateblue"), - caml_string_of_jsbytes("darkslategray"), - caml_string_of_jsbytes("darkslategrey"), - caml_string_of_jsbytes("darkturquoise"), - caml_string_of_jsbytes("darkviolet"), - caml_string_of_jsbytes("deeppink"), - caml_string_of_jsbytes("deepskyblue"), - caml_string_of_jsbytes("dimgray"), - caml_string_of_jsbytes("dimgrey"), - caml_string_of_jsbytes("dodgerblue"), - caml_string_of_jsbytes("firebrick"), - caml_string_of_jsbytes("floralwhite"), - caml_string_of_jsbytes("forestgreen"), - caml_string_of_jsbytes("fuchsia"), - caml_string_of_jsbytes("gainsboro"), - caml_string_of_jsbytes("ghostwhite"), - caml_string_of_jsbytes("gold"), - caml_string_of_jsbytes("goldenrod"), - caml_string_of_jsbytes("gray"), - caml_string_of_jsbytes("green"), - caml_string_of_jsbytes("greenyellow"), - caml_string_of_jsbytes("grey"), - caml_string_of_jsbytes("honeydew"), - caml_string_of_jsbytes("hotpink"), - caml_string_of_jsbytes("indianred"), - caml_string_of_jsbytes("indigo"), - caml_string_of_jsbytes("ivory"), - caml_string_of_jsbytes("khaki"), - caml_string_of_jsbytes("lavender"), - caml_string_of_jsbytes("lavenderblush"), - caml_string_of_jsbytes("lawngreen"), - caml_string_of_jsbytes("lemonchiffon"), - caml_string_of_jsbytes("lightblue"), - caml_string_of_jsbytes("lightcoral"), - caml_string_of_jsbytes("lightcyan"), - caml_string_of_jsbytes("lightgoldenrodyellow"), - caml_string_of_jsbytes("lightgray"), - caml_string_of_jsbytes("lightgreen"), - caml_string_of_jsbytes("lightgrey"), - caml_string_of_jsbytes("lightpink"), - caml_string_of_jsbytes("lightsalmon"), - caml_string_of_jsbytes("lightseagreen"), - caml_string_of_jsbytes("lightskyblue"), - caml_string_of_jsbytes("lightslategray"), - caml_string_of_jsbytes("lightslategrey"), - caml_string_of_jsbytes("lightsteelblue"), - caml_string_of_jsbytes("lightyellow"), - caml_string_of_jsbytes("lime"), - caml_string_of_jsbytes("limegreen"), - caml_string_of_jsbytes("linen"), - caml_string_of_jsbytes("magenta"), - caml_string_of_jsbytes("maroon"), - caml_string_of_jsbytes("mediumaquamarine"), - caml_string_of_jsbytes("mediumblue"), - caml_string_of_jsbytes("mediumorchid"), - caml_string_of_jsbytes("mediumpurple"), - caml_string_of_jsbytes("mediumseagreen"), - caml_string_of_jsbytes("mediumslateblue"), - caml_string_of_jsbytes("mediumspringgreen"), - caml_string_of_jsbytes("mediumturquoise"), - caml_string_of_jsbytes("mediumvioletred"), - caml_string_of_jsbytes("midnightblue"), - caml_string_of_jsbytes("mintcream"), - caml_string_of_jsbytes("mistyrose"), - caml_string_of_jsbytes("moccasin"), - caml_string_of_jsbytes("navajowhite"), - caml_string_of_jsbytes("navy"), - caml_string_of_jsbytes("oldlace"), - caml_string_of_jsbytes("olive"), - caml_string_of_jsbytes("olivedrab"), - caml_string_of_jsbytes("orange"), - caml_string_of_jsbytes("orangered"), - caml_string_of_jsbytes("orchid"), - caml_string_of_jsbytes("palegoldenrod"), - caml_string_of_jsbytes("palegreen"), - caml_string_of_jsbytes("paleturquoise"), - caml_string_of_jsbytes("palevioletred"), - caml_string_of_jsbytes("papayawhip"), - caml_string_of_jsbytes("peachpuff"), - caml_string_of_jsbytes("peru"), - caml_string_of_jsbytes("pink"), - caml_string_of_jsbytes("plum"), - caml_string_of_jsbytes("powderblue"), - caml_string_of_jsbytes("purple"), - caml_string_of_jsbytes("red"), - caml_string_of_jsbytes("rosybrown"), - caml_string_of_jsbytes("royalblue"), - caml_string_of_jsbytes("saddlebrown"), - caml_string_of_jsbytes("salmon"), - caml_string_of_jsbytes("sandybrown"), - caml_string_of_jsbytes("seagreen"), - caml_string_of_jsbytes("seashell"), - caml_string_of_jsbytes("sienna"), - caml_string_of_jsbytes("silver"), - caml_string_of_jsbytes("skyblue"), - caml_string_of_jsbytes("slateblue"), - caml_string_of_jsbytes("slategray"), - caml_string_of_jsbytes("slategrey"), - caml_string_of_jsbytes("snow"), - caml_string_of_jsbytes("springgreen"), - caml_string_of_jsbytes("steelblue"), - caml_string_of_jsbytes("tan"), - caml_string_of_jsbytes("teal"), - caml_string_of_jsbytes("thistle"), - caml_string_of_jsbytes("tomato"), - caml_string_of_jsbytes("turquoise"), - caml_string_of_jsbytes("violet"), - caml_string_of_jsbytes("wheat"), - caml_string_of_jsbytes("white"), - caml_string_of_jsbytes("whitesmoke"), - caml_string_of_jsbytes("yellow"), - caml_string_of_jsbytes("yellowgreen")]), - _b6_= - [0, - [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]], - caml_string_of_jsbytes("#%02X%02X%02X")], - _b0_= - [0, - [11, - caml_string_of_jsbytes("rgb("), - [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]], - caml_string_of_jsbytes("rgb(%d,%d,%d)")], - _b1_= - [0, - [11, - caml_string_of_jsbytes("rgb("), - [4, - 0, - 0, - 0, - [12,37,[12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]]], - caml_string_of_jsbytes("rgb(%d%%,%d%%,%d%%)")], - _b2_= - [0, - [11, - caml_string_of_jsbytes("rgba("), - [4, - 0, - 0, - 0, - [12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,44,[8,[0,0,0],0,0,[12,41,0]]]]]]]]], - caml_string_of_jsbytes("rgba(%d,%d,%d,%f)")], - _b3_= - [0, - [11, - caml_string_of_jsbytes("rgba("), - [4, - 0, - 0, - 0, - [12, - 37, - [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,44,partial]]]]]]]]]], - caml_string_of_jsbytes("rgba(%d%%,%d%%,%d%%,%f)")], - _b4_= - [0, - [11, - caml_string_of_jsbytes("hsl("), - [4, - 0, - 0, - 0, - [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]], - caml_string_of_jsbytes("hsl(%d,%d%%,%d%%)")], - _b5_= - [0, - [11, - caml_string_of_jsbytes("hsla("), - [4, - 0, - 0, - 0, - [12, - 44, - [4, - 0, - 0, - 0, - [12, - 37, - [12,44,[4,0,0,0,[12,37,[12,44,[8,partial$1,0,0,partial$0]]]]]]]]]], - caml_string_of_jsbytes("hsla(%d,%d%%,%d%%,%f)")], - _x_=[0,240,248,255], - _y_=[0,250,235,215], - _z_=[0,0,255,255], - _A_=[0,127,255,212], - _B_=[0,240,255,255], - _C_=[0,245,245,220], - _D_=[0,255,228,196], - _E_=[0,0,0,0], - _F_=[0,255,235,205], - _G_=[0,0,0,255], - _H_=[0,138,43,226], - _I_=[0,165,42,42], - _J_=[0,222,184,135], - _K_=[0,95,158,160], - _L_=[0,127,255,0], - _M_=[0,210,105,30], - _N_=[0,255,127,80], - _O_=[0,100,149,237], - _P_=[0,255,248,220], - _Q_=[0,220,20,60], - _R_=[0,0,255,255], - _S_=[0,0,0,139], - _T_=[0,0,139,139], - _U_=[0,184,134,11], - _V_=[0,169,169,169], - _W_=[0,0,100,0], - _X_=[0,169,169,169], - _Y_=[0,189,183,107], - _Z_=[0,139,0,139], - ___=[0,85,107,47], - _$_=[0,255,140,0], - _aa_=[0,153,50,204], - _ab_=[0,139,0,0], - _ac_=[0,233,150,122], - _ad_=[0,143,188,143], - _ae_=[0,72,61,139], - _af_=[0,47,79,79], - _ag_=[0,47,79,79], - _ah_=[0,0,206,209], - _ai_=[0,148,0,211], - _aj_=[0,255,20,147], - _ak_=[0,0,191,255], - _al_=[0,105,105,105], - _am_=[0,105,105,105], - _an_=[0,30,144,255], - _ao_=[0,178,34,34], - _ap_=[0,255,250,240], - _aq_=[0,34,139,34], - _ar_=[0,255,0,255], - _as_=[0,220,220,220], - _at_=[0,248,248,255], - _au_=[0,255,215,0], - _av_=[0,218,165,32], - _aw_=[0,128,128,128], - _ax_=[0,128,128,128], - _ay_=[0,0,128,0], - _az_=[0,173,255,47], - _aA_=[0,240,255,240], - _aB_=[0,255,105,180], - _aC_=[0,205,92,92], - _aD_=[0,75,0,130], - _aE_=[0,255,255,240], - _aF_=[0,240,230,140], - _aG_=[0,230,230,250], - _aH_=[0,255,240,245], - _aI_=[0,124,252,0], - _aJ_=[0,255,250,205], - _aK_=[0,173,216,230], - _aL_=[0,240,128,128], - _aM_=[0,224,255,255], - _aN_=[0,250,250,210], - _aO_=[0,211,211,211], - _aP_=[0,144,238,144], - _aQ_=[0,211,211,211], - _aR_=[0,255,182,193], - _aS_=[0,255,160,122], - _aT_=[0,32,178,170], - _aU_=[0,135,206,250], - _aV_=[0,119,136,153], - _aW_=[0,119,136,153], - _aX_=[0,176,196,222], - _aY_=[0,255,255,224], - _aZ_=[0,0,255,0], - _a0_=[0,50,205,50], - _a1_=[0,250,240,230], - _a2_=[0,255,0,255], - _a3_=[0,128,0,0], - _a4_=[0,102,205,170], - _a5_=[0,0,0,205], - _a6_=[0,186,85,211], - _a7_=[0,147,112,219], - _a8_=[0,60,179,113], - _a9_=[0,123,104,238], - _a__=[0,0,250,154], - _a$_=[0,72,209,204], - _ba_=[0,199,21,133], - _bb_=[0,25,25,112], - _bc_=[0,245,255,250], - _bd_=[0,255,228,225], - _be_=[0,255,228,181], - _bf_=[0,255,222,173], - _bg_=[0,0,0,128], - _bh_=[0,253,245,230], - _bi_=[0,128,128,0], - _bj_=[0,107,142,35], - _bk_=[0,255,165,0], - _bl_=[0,255,69,0], - _bm_=[0,218,112,214], - _bn_=[0,238,232,170], - _bo_=[0,152,251,152], - _bp_=[0,175,238,238], - _bq_=[0,219,112,147], - _br_=[0,255,239,213], - _bs_=[0,255,218,185], - _bt_=[0,205,133,63], - _bu_=[0,255,192,203], - _bv_=[0,221,160,221], - _bw_=[0,176,224,230], - _bx_=[0,128,0,128], - _by_=[0,255,0,0], - _bz_=[0,188,143,143], - _bA_=[0,65,105,225], - _bB_=[0,139,69,19], - _bC_=[0,250,128,114], - _bD_=[0,244,164,96], - _bE_=[0,46,139,87], - _bF_=[0,255,245,238], - _bG_=[0,160,82,45], - _bH_=[0,192,192,192], - _bI_=[0,135,206,235], - _bJ_=[0,106,90,205], - _bK_=[0,112,128,144], - _bL_=[0,112,128,144], - _bM_=[0,255,250,250], - _bN_=[0,0,255,127], - _bO_=[0,70,130,180], - _bP_=[0,210,180,140], - _bQ_=[0,0,128,128], - _bR_=[0,216,191,216], - _bS_=[0,255,99,71], - _bT_=[0,64,224,208], - _bU_=[0,238,130,238], - _bV_=[0,245,222,179], - _bW_=[0,255,255,255], - _bX_=[0,245,245,245], - _bY_=[0,255,255,0], - _bZ_=[0,154,205,50]; - function symbol(x,y){return x < y?1:0} - function symbol$0(x,y){return x <= y?1:0} - function symbol$1(x,y){return x !== y?1:0} - function symbol$2(x,y){return x === y?1:0} - function symbol$3(x,y){return y < x?1:0} - function symbol$4(x,y){return y <= x?1:0} - var compare=runtime.caml_int_compare; - function equal(x,y){return x === y?1:0} - function max(x,y){return y <= x?x:y} - function min(x,y){return x <= y?x:y} - var - Int_replace_polymorphic_compar= - [0, - symbol, - symbol$0, - symbol$1, - symbol$2, - symbol$3, - symbol$4, - compare, - equal, - max, - min], - make=Stdlib_String[1], - init=Stdlib_String[2], - empty=Stdlib_String[3], - of_bytes=Stdlib_String[4], - to_bytes=Stdlib_String[5], - concat=Stdlib_String[6], - cat=Stdlib_String[7], - compare$0=Stdlib_String[9], - starts_with=Stdlib_String[10], - ends_with=Stdlib_String[11], - contains_from=Stdlib_String[12], - rcontains_from=Stdlib_String[13], - contains=Stdlib_String[14], - sub=Stdlib_String[15], - split_on_char=Stdlib_String[16], - map=Stdlib_String[17], - mapi=Stdlib_String[18], - fold_left=Stdlib_String[19], - fold_right=Stdlib_String[20], - for_all=Stdlib_String[21], - exists=Stdlib_String[22], - trim=Stdlib_String[23], - escaped=Stdlib_String[24], - uppercase_ascii=Stdlib_String[25], - lowercase_ascii=Stdlib_String[26], - capitalize_ascii=Stdlib_String[27], - uncapitalize_ascii=Stdlib_String[28], - iter=Stdlib_String[29], - iteri=Stdlib_String[30], - index_from=Stdlib_String[31], - index_from_opt=Stdlib_String[32], - rindex_from=Stdlib_String[33], - rindex_from_opt=Stdlib_String[34], - index=Stdlib_String[35], - index_opt=Stdlib_String[36], - rindex=Stdlib_String[37], - rindex_opt=Stdlib_String[38], - to_seq=Stdlib_String[39], - to_seqi=Stdlib_String[40], - of_seq=Stdlib_String[41], - blit=Stdlib_String[42], - copy=Stdlib_String[43], - fill=Stdlib_String[44], - uppercase=Stdlib_String[45], - lowercase=Stdlib_String[46], - capitalize=Stdlib_String[47], - uncapitalize=Stdlib_String[48], - get_uint8=Stdlib_String[49], - get_int8=Stdlib_String[50], - get_uint16_ne=Stdlib_String[51], - get_uint16_be=Stdlib_String[52], - get_uint16_le=Stdlib_String[53], - get_int16_ne=Stdlib_String[54], - get_int16_be=Stdlib_String[55], - get_int16_le=Stdlib_String[56], - get_int32_ne=Stdlib_String[57], - get_int32_be=Stdlib_String[58], - get_int32_le=Stdlib_String[59], - get_int64_ne=Stdlib_String[60], - get_int64_be=Stdlib_String[61], - get_int64_le=Stdlib_String[62]; - function equal$0(x,y){return runtime.caml_string_equal(x,y)} - var - String= - [0, - make, - init, - empty, - of_bytes, - to_bytes, - concat, - cat, - compare$0, - starts_with, - ends_with, - contains_from, - rcontains_from, - contains, - sub, - split_on_char, - map, - mapi, - fold_left, - fold_right, - for_all, - exists, - trim, - escaped, - uppercase_ascii, - lowercase_ascii, - capitalize_ascii, - uncapitalize_ascii, - iter, - iteri, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - index, - index_opt, - rindex, - rindex_opt, - to_seq, - to_seqi, - of_seq, - blit, - copy, - fill, - uppercase, - lowercase, - capitalize, - uncapitalize, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - equal$0], - chr=Stdlib_Char[1], - escaped$0=Stdlib_Char[2], - lowercase$0=Stdlib_Char[3], - uppercase$0=Stdlib_Char[4], - lowercase_ascii$0=Stdlib_Char[5], - uppercase_ascii$0=Stdlib_Char[6], - compare$1=Stdlib_Char[7]; - function equal$1(x,y){return x === y?1:0} - var - Char= - [0, - chr, - escaped$0, - lowercase$0, - uppercase$0, - lowercase_ascii$0, - uppercase_ascii$0, - compare$1, - equal$1], - symbol$5=Int_replace_polymorphic_compar[1], - symbol$6=Int_replace_polymorphic_compar[2], - symbol$7=Int_replace_polymorphic_compar[3], - symbol$8=Int_replace_polymorphic_compar[4], - symbol$9=Int_replace_polymorphic_compar[5], - symbol$10=Int_replace_polymorphic_compar[6], - compare$2=Int_replace_polymorphic_compar[7], - equal$2=Int_replace_polymorphic_compar[8], - max$0=Int_replace_polymorphic_compar[9], - min$0=Int_replace_polymorphic_compar[10], - Js_of_ocaml_Import= - [0, - Poly, - Int_replace_polymorphic_compar, - String, - Char, - symbol$5, - symbol$6, - symbol$7, - symbol$8, - symbol$9, - symbol$10, - compare$2, - equal$2, - max$0, - min$0]; - caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import"); - var global=globalThis,Unsafe=[0,global],no_handler=null,t39=undefined; - function return$0(_gO_){return _gO_} - function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)} - function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)} - function test(x){return 1 - (x == no_handler?1:0)} - function iter$0(x,f) - {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_} - function case$0(x,f,g) - {return x == no_handler?caml_call1(f,0):caml_call1(g,x)} - function get(x,f){return x == no_handler?caml_call1(f,0):x} - function option(x){if(x){var x$0=x[1];return x$0}return no_handler} - function to_option(x) - {function _gM_(x){return [0,x]} - return case$0(x,function(param){return 0},_gM_)} - var - Opt= - [0, - no_handler, - return$0, - map$0, - bind, - test, - iter$0, - case$0, - get, - option, - to_option]; - function return$1(_gL_){return _gL_} - function map$1(x,f){return x === t39?t39:caml_call1(f,x)} - function bind$0(x,f){return x === t39?t39:caml_call1(f,x)} - function test$0(x){return x !== t39?1:0} - function iter$1(x,f) - {var _gK_=x !== t39?1:0;return _gK_?caml_call1(f,x):_gK_} - function case$1(x,f,g){return x === t39?caml_call1(f,0):caml_call1(g,x)} - function get$0(x,f){return x === t39?caml_call1(f,0):x} - function option$0(x){if(x){var x$0=x[1];return x$0}return t39} - function to_option$0(x) - {function _gJ_(x){return [0,x]} - return case$1(x,function(param){return 0},_gJ_)} - var - Optdef= - [0, - t39, - return$1, - map$1, - bind$0, - test$0, - iter$1, - case$1, - get$0, - option$0, - to_option$0]; - function coerce(x,f,g) - {function _gH_(param){return caml_call1(g,x)} - var _gI_=caml_call1(f,x); - return caml_call2(Opt[8],_gI_,_gH_)} - function coerce_opt(x,f,g) - {function _gF_(param){return caml_call1(g,x)} - var _gG_=caml_call2(Opt[4],x,f); - return caml_call2(Opt[8],_gG_,_gF_)} - var - t25=true, - t4=false, - string_constr=Unsafe[1].String, - t11=Unsafe[1].RegExp, - t4$0=Unsafe[1].Object; - function object_keys(t3){return t4$0.keys(t3)} - var - array_length=Unsafe[1].Array, - array_get=caml_js_get, - array_set=caml_js_set; - function array_map(f,a) - {return a.map - (caml_js_wrap_callback - (function(x,idx,param){return caml_call1(f,x)}))} - function array_mapi(f,a) - {return a.map - (caml_js_wrap_callback - (function(x,idx,param){return caml_call2(f,idx,x)}))} - function str_array(_gE_){return _gE_} - function match_result(_gD_){return _gD_} - var - t122=Unsafe[1].Date, - math=Unsafe[1].Math, - error_constr=Unsafe[1].Error, - include=Jsoo_runtime[3], - raise=include[1], - attach_js_backtrace=include[2], - of_exn=include[3], - Error=include[4]; - function name(e){return caml_string_of_jsstring(e.name)} - function message(e){return caml_string_of_jsstring(e.message)} - function stack(e) - {var _gC_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); - return caml_call1(Opt[10],_gC_)} - function to_string(e){return caml_string_of_jsstring(e.toString())} - function raise_js_error(e){return caml_call1(raise,e)} - function string_of_error(e){return to_string(e)} - var JSON=Unsafe[1].JSON; - function decodeURI(s){return Unsafe[1].decodeURI(s)} - function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)} - function encodeURI(s){return Unsafe[1].encodeURI(s)} - function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)} - function escape(s){return Unsafe[1].escape(s)} - function unescape(s){return Unsafe[1].unescape(s)} - function isNaN(i){return Unsafe[1].isNaN(i) | 0} - function parseInt(s) - {var s$0=Unsafe[1].parseInt(s); - return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0} - function parseFloat(s) - {var s$0=Unsafe[1].parseFloat(s); - return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0} - function _a_(param) - {if(param[1] === Error){var e=param[2];return [0,to_string(e)]}return 0} - caml_call1(Stdlib_Printexc[9],_a_); - function _b_(e) - {return e instanceof array_length - ?0 - :[0,caml_string_of_jsstring(e.toString())]} - caml_call1(Stdlib_Printexc[9],_b_); - function export_js(field,x){return jsoo_exports[field] = x} - function export$0(field,x) - {return export_js(caml_jsstring_of_string(field),x)} - function export_all(obj) - {var - t27=object_keys(obj), - t26= - caml_js_wrap_callback - (function(key,param,_gB_){return export_js(key,obj[key])}); - return t27.forEach(t26)} - var _c_=runtime.caml_js_error_of_exception; - function _d_(_gA_){return _gA_} - var - _e_= - [0, - to_string, - name, - message, - stack, - raise, - attach_js_backtrace, - of_exn, - Error, - function(_gz_){return _gz_}, - _d_]; - function _f_(_gy_){return _gy_} - var - Js_of_ocaml_Js= - [0, - no_handler, - function(_gx_){return _gx_}, - t39, - _f_, - Opt, - Optdef, - t25, - t4, - string_constr, - t11, - t11, - t11, - object_keys, - array_length, - array_length, - array_get, - array_set, - array_map, - array_mapi, - str_array, - match_result, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - math, - error_constr, - _e_, - JSON, - decodeURI, - decodeURIComponent, - encodeURI, - encodeURIComponent, - escape, - unescape, - isNaN, - parseInt, - parseFloat, - coerce, - coerce_opt, - export$0, - export_all, - Unsafe, - string_of_error, - raise_js_error, - attach_js_backtrace, - _c_, - Error]; - caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js"); - function list_of_nodeList(nodeList) - {var length=nodeList.length,acc=0,i=0; - for(;;) - {if(caml_call2(symbol$5,i,length)) - {var _gw_=nodeList.item(i),match=caml_call1(Opt[10],_gw_); - if(match) - {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; - continue} - var i$1=i + 1 | 0,i=i$1; - continue} - return caml_call1(Stdlib_List[9],acc)}} - var - disconnected=1, - preceding=2, - following=4, - contains$0=8, - contained_by=16, - implementation_specific=32; - function has(t,mask){return caml_call2(symbol$8,t & mask,mask)} - function add(x,y){return x | y} - var - DocumentPosition= - [0, - disconnected, - preceding, - following, - contains$0, - contained_by, - implementation_specific, - has, - add, - add]; - function appendChild(p,n){p.appendChild(n);return 0} - function removeChild(p,n){p.removeChild(n);return 0} - function replaceChild(p,n,o){p.replaceChild(n,o);return 0} - function insertBefore(p,n,o){p.insertBefore(n,o);return 0} - function nodeType(e) - {var match=e.nodeType; - if(match) - switch(match - 1 | 0) - {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]} - return [3,e]} - function cast(e,t){return e.nodeType === t?e:no_handler} - function element(e){return cast(e,1)} - function text(e) - {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e} - function attr(e){return cast(e,2)} - function handler(f) - {return function(e) - {if(caml_call1(Opt[5],e)) - {var res=caml_call1(f,e); - if(1 - (res | 0))e.preventDefault(); - return res} - var t18=event,t17=caml_call1(f,t18); - if(1 - (t17 | 0))t18.returnValue = t17; - return t17}} - function full_handler(f) - {return runtime.caml_js_wrap_meth_callback_unsafe - (function(this$0,e) - {if(caml_call1(Opt[5],e)) - {var res=caml_call2(f,this$0,e); - if(1 - (res | 0))e.preventDefault(); - return res} - var t21=event,t20=caml_call2(f,this$0,t21); - if(1 - (t20 | 0))t21.returnValue = t20; - return t20})} - function invoke_handler(f,this$0,event){return f.call(this$0,event)} - function eventTarget(e) - {function _gt_(param) - {function _gv_(param){throw Stdlib[8]} - return caml_call2(Opt[8],e.srcElement,_gv_)} - var t27=caml_call2(Opt[8],e.target,_gt_); - if(t27 instanceof Unsafe[1].Node) - {if(3 === t27.nodeType) - {var _gu_=function(param){throw [0,Assert_failure,_g_]}; - return caml_call2(Opt[8],t27.parentNode,_gu_)} - return t27} - return t27} - function make$0(s){return caml_jsstring_of_string(s)} - var Event=[0,make$0]; - function addEventListenerWithOptions(t50,t47,capture,once,passive,t48) - {if(t50.addEventListener === t39) - {var - t34="on".concat(t47), - t35= - function(e) - {var _gq_=[0,t48,e,[0]]; - return function(_gr_,_gs_) - {return runtime.caml_js_call(_gq_,_gr_,_gs_)}}; - t50.attachEvent(t34,t35); - return function(param){return t50.detachEvent(t34,t35)}} - var t49={}; - function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0} - iter(capture,function(t37){return t49.capture = t37}); - iter(once,function(t39){return t49.once = t39}); - iter(passive,function(t41){return t49.passive = t41}); - t50.addEventListener(t47,t48,t49); - return function(param){return t50.removeEventListener(t47,t48,t49)}} - function addEventListener(e,typ,h,capt) - {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)} - function removeEventListener(id){return caml_call1(id,0)} - function preventDefault(t54) - {if(caml_call1(Optdef[5],t54.preventDefault))return t54.preventDefault(); - var t53=! ! 0; - return t54.returnValue = t53} - function createCustomEvent(bubbles,cancelable,detail,t62) - {function opt_iter(f,param) - {if(param){var x=param[1];return caml_call1(f,x)}return 0} - var t63={}; - opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles); - opt_iter - (function(x){var t57=! ! x;return t63.cancelable = t57},cancelable); - opt_iter(function(t59){return t63.detail = t59},detail); - var t64=Unsafe[1].CustomEvent; - return new t64(t62,t63)} - var - Js_of_ocaml_Dom= - [0, - DocumentPosition, - insertBefore, - replaceChild, - removeChild, - appendChild, - list_of_nodeList, - nodeType, - [0,element,text,attr], - no_handler, - handler, - full_handler, - invoke_handler, - eventTarget, - Event, - addEventListenerWithOptions, - addEventListener, - removeEventListener, - preventDefault, - createCustomEvent]; - caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); - var - arrayBuffer=Unsafe[1].ArrayBuffer, - int8Array_inBuffer=Unsafe[1].Int8Array, - t11$0=Unsafe[1].Uint8Array, - int16Array_inBuffer=Unsafe[1].Int16Array, - uint16Array_inBuffer=Unsafe[1].Uint16Array, - int32Array_inBuffer=Unsafe[1].Int32Array, - uint32Array_inBuffer=Unsafe[1].Uint32Array, - float32Array_inBuffer=Unsafe[1].Float32Array, - float64Array_inBuffer=Unsafe[1].Float64Array, - set=caml_js_set; - function get$1(a,i){return a[i]} - function unsafe_get(a,i){return a[i]} - var dataView=Unsafe[1].DataView; - function of_arrayBuffer(ab) - {var uint8=new t11$0(ab);return caml_string_of_array(uint8)} - var - Js_of_ocaml_Typed_array= - [0, - arrayBuffer, - runtime.caml_ba_kind_of_typed_array, - runtime.caml_ba_to_typed_array, - runtime.caml_ba_from_typed_array, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - t11$0, - t11$0, - t11$0, - t11$0, - t11$0, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - set, - get$1, - unsafe_get, - dataView, - dataView, - [0, - runtime.bigstring_to_array_buffer, - runtime.bigstring_to_typed_array, - runtime.bigstring_of_array_buffer, - runtime.bigstring_of_typed_array], - [0,of_arrayBuffer,caml_string_of_array]]; - caml_register_global - (1646,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); - var t3=Unsafe[1].Blob; - function filter_map(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); - if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]} - var param$0=q; - continue} - return 0}} - function blob_raw(contentType,endings,a) - {var _gm_=0; - if(endings) - var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; - else - var _go_=0; - var - _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], - options= - filter_map - (function(param) - {var v=param[2],name=param[1]; - if(v) - {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} - return 0}, - _gp_), - options$0= - options - ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) - :t39, - t1=caml_js_from_array(a); - return new t3(t1,options$0)} - function blob_from_string(contentType,endings,s) - {return blob_raw(contentType,endings,[0,caml_jsstring_of_string(s)])} - function blob_from_any(contentType,endings,l) - {function _gk_(param) - {var _gl_=param[1]; - if(155580615 === _gl_){var s=param[2];return s} - if(486041214 <= _gl_) - {if(1037850489 <= _gl_){var a=param[2];return a} - var a$0=param[2]; - return a$0} - if(288368849 <= _gl_) - {var s$0=param[2];return caml_jsstring_of_string(s$0)} - var b=param[2]; - return b} - var l$0=caml_call2(Stdlib_List[19],_gk_,l); - return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} - function filename(file) - {var match=caml_call1(Optdef[10],file.name); - if(match){var name=match[1];return name} - var match$0=caml_call1(Optdef[10],file.fileName); - if(match$0){var name$0=match$0[1];return name$0} - return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)} - var doc_constr=Unsafe[1].Document; - function document(e){return e instanceof doc_constr?e:no_handler} - function blob(e){return e instanceof t3?e:no_handler} - function string(e){return typeof e === "string"?e:no_handler} - function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler} - var - loadstart=caml_call1(Event[1],cst_loadstart), - progress=caml_call1(Event[1],cst_progress), - abort=caml_call1(Event[1],cst_abort), - error=caml_call1(Event[1],cst_error), - load=caml_call1(Event[1],cst_load), - loadend=caml_call1(Event[1],cst_loadend), - ReaderEvent=[0,loadstart,progress,abort,error,load,loadend], - fileReader=Unsafe[1].FileReader, - Js_of_ocaml_File= - [0, - blob_from_string, - blob_from_any, - [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], - ReaderEvent, - filename, - fileReader, - addEventListener]; - caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); - var - onIE=runtime.caml_js_on_ie(0) | 0, - click=caml_call1(Event[1],cst_click), - copy$0=caml_call1(Event[1],cst_copy), - cut=caml_call1(Event[1],cst_cut), - paste=caml_call1(Event[1],cst_paste), - dblclick=caml_call1(Event[1],cst_dblclick), - mousedown=caml_call1(Event[1],cst_mousedown), - mouseup=caml_call1(Event[1],cst_mouseup), - mouseover=caml_call1(Event[1],cst_mouseover), - mousemove=caml_call1(Event[1],cst_mousemove), - mouseout=caml_call1(Event[1],cst_mouseout), - keypress=caml_call1(Event[1],cst_keypress), - keydown=caml_call1(Event[1],cst_keydown), - keyup=caml_call1(Event[1],cst_keyup), - mousewheel=caml_call1(Event[1],cst_mousewheel), - DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), - touchstart=caml_call1(Event[1],cst_touchstart), - touchmove=caml_call1(Event[1],cst_touchmove), - touchend=caml_call1(Event[1],cst_touchend), - touchcancel=caml_call1(Event[1],cst_touchcancel), - dragstart=caml_call1(Event[1],cst_dragstart), - dragend=caml_call1(Event[1],cst_dragend), - dragenter=caml_call1(Event[1],cst_dragenter), - dragover=caml_call1(Event[1],cst_dragover), - dragleave=caml_call1(Event[1],cst_dragleave), - drag=caml_call1(Event[1],cst_drag), - drop=caml_call1(Event[1],cst_drop), - hashchange=caml_call1(Event[1],cst_hashchange), - change=caml_call1(Event[1],cst_change), - input=caml_call1(Event[1],cst_input), - timeupdate=caml_call1(Event[1],cst_timeupdate), - submit=caml_call1(Event[1],cst_submit), - scroll=caml_call1(Event[1],cst_scroll), - focus=caml_call1(Event[1],cst_focus), - blur=caml_call1(Event[1],cst_blur), - load$0=caml_call1(Event[1],cst_load$0), - unload=caml_call1(Event[1],cst_unload), - beforeunload=caml_call1(Event[1],cst_beforeunload), - resize=caml_call1(Event[1],cst_resize), - orientationchange=caml_call1(Event[1],cst_orientationchange), - popstate=caml_call1(Event[1],cst_popstate), - error$0=caml_call1(Event[1],cst_error$0), - abort$0=caml_call1(Event[1],cst_abort$0), - select=caml_call1(Event[1],cst_select), - online=caml_call1(Event[1],cst_online), - offline=caml_call1(Event[1],cst_offline), - checking=caml_call1(Event[1],cst_checking), - noupdate=caml_call1(Event[1],cst_noupdate), - downloading=caml_call1(Event[1],cst_downloading), - progress$0=caml_call1(Event[1],cst_progress$0), - updateready=caml_call1(Event[1],cst_updateready), - cached=caml_call1(Event[1],cst_cached), - obsolete=caml_call1(Event[1],cst_obsolete), - domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded), - animationstart=caml_call1(Event[1],cst_animationstart), - animationend=caml_call1(Event[1],cst_animationend), - animationiteration=caml_call1(Event[1],cst_animationiteration), - animationcancel=caml_call1(Event[1],cst_animationcancel), - canplay=caml_call1(Event[1],cst_canplay), - canplaythrough=caml_call1(Event[1],cst_canplaythrough), - durationchange=caml_call1(Event[1],cst_durationchange), - emptied=caml_call1(Event[1],cst_emptied), - ended=caml_call1(Event[1],cst_ended), - gotpointercapture=caml_call1(Event[1],cst_gotpointercapture), - loadeddata=caml_call1(Event[1],cst_loadeddata), - loadedmetadata=caml_call1(Event[1],cst_loadedmetadata), - loadstart$0=caml_call1(Event[1],cst_loadstart$0), - lostpointercapture=caml_call1(Event[1],cst_lostpointercapture), - message$0=caml_call1(Event[1],cst_message), - pause=caml_call1(Event[1],cst_pause), - play=caml_call1(Event[1],cst_play), - playing=caml_call1(Event[1],cst_playing), - pointerenter=caml_call1(Event[1],cst_pointerenter), - pointercancel=caml_call1(Event[1],cst_pointercancel), - pointerdown=caml_call1(Event[1],cst_pointerdown), - pointerleave=caml_call1(Event[1],cst_pointerleave), - pointermove=caml_call1(Event[1],cst_pointermove), - pointerout=caml_call1(Event[1],cst_pointerout), - pointerover=caml_call1(Event[1],cst_pointerover), - pointerup=caml_call1(Event[1],cst_pointerup), - ratechange=caml_call1(Event[1],cst_ratechange), - seeked=caml_call1(Event[1],cst_seeked), - seeking=caml_call1(Event[1],cst_seeking), - stalled=caml_call1(Event[1],cst_stalled), - suspend=caml_call1(Event[1],cst_suspend), - volumechange=caml_call1(Event[1],cst_volumechange), - waiting=caml_call1(Event[1],cst_waiting), - make$1=Event[1], - Event$0= - [0, - click, - copy$0, - cut, - paste, - dblclick, - mousedown, - mouseup, - mouseover, - mousemove, - mouseout, - keypress, - keydown, - keyup, - mousewheel, - DOMMouseScroll, - touchstart, - touchmove, - touchend, - touchcancel, - dragstart, - dragend, - dragenter, - dragover, - dragleave, - drag, - drop, - hashchange, - change, - input, - timeupdate, - submit, - scroll, - focus, - blur, - load$0, - unload, - beforeunload, - resize, - orientationchange, - popstate, - error$0, - abort$0, - select, - online, - offline, - checking, - noupdate, - downloading, - progress$0, - updateready, - cached, - obsolete, - domContentLoaded, - animationstart, - animationend, - animationiteration, - animationcancel, - canplay, - canplaythrough, - durationchange, - emptied, - ended, - gotpointercapture, - loadeddata, - loadedmetadata, - loadstart$0, - lostpointercapture, - message$0, - pause, - play, - playing, - pointerenter, - pointercancel, - pointerdown, - pointerleave, - pointermove, - pointerout, - pointerover, - pointerup, - ratechange, - seeked, - seeking, - stalled, - suspend, - volumechange, - waiting, - make$1], - d="2d"; - function location_origin(loc) - {function _gh_(o){return o} - function _gi_(param) - {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; - if - (caml_call2(symbol$8,t8.length,0) - && - caml_call2(symbol$8,t7.length,0)) - return ""; - var t13=t8.concat("//",t7); - if(caml_call2(symbol$9,t9.length,0)) - {var t12=loc.port;return t13.concat(":",t12)} - return t13} - return caml_call3(Optdef[7],loc.origin,_gi_,_gh_)} - var _j_=Unsafe[1],t87=_j_.document; - function getElementById(id) - {function _ge_(pnode){return pnode} - function _gf_(param){throw Stdlib[8]} - var t15=caml_jsstring_of_string(id),_gg_=t87.getElementById(t15); - return caml_call3(Opt[7],_gg_,_gf_,_ge_)} - function getElementById_exn(id) - {function _ga_(pnode){return pnode} - function _gb_(param) - {var _gd_=caml_call2(Stdlib_Printf[4],_k_,id); - return caml_call1(Stdlib[2],_gd_)} - var t17=caml_jsstring_of_string(id),_gc_=t87.getElementById(t17); - return caml_call3(Opt[7],_gc_,_gb_,_ga_)} - function getElementById_opt(id) - {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); - return caml_call1(Opt[10],_f$_)} - function getElementById_coerce(id,coerce) - {function _f7_(e) - {var _f__=caml_call1(coerce,e);return caml_call1(Opt[10],_f__)} - function _f8_(param){return 0} - var t21=caml_jsstring_of_string(id),_f9_=t87.getElementById(t21); - return caml_call3(Opt[7],_f9_,_f8_,_f7_)} - function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0} - function createElement(t24,name) - {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)} - function unsafeCreateElement(doc,name){return createElement(doc,name)} - var createElementSyntax=[0,785140586]; - function unsafeCreateElementEx(type,name,doc,elt) - {for(;;) - {if(0 === type && 0 === name)return createElement(doc,elt); - var _f1_=createElementSyntax[1]; - if(785140586 === _f1_) - {try - {var - el=t87.createElement(''), - _f4_=el.tagName.toLowerCase() === "input"?1:0, - _f5_=_f4_?el.name === "x"?1:0:_f4_, - _f2_=_f5_} - catch(_f6_){var _f2_=0} - var _f3_=_f2_?982028505:-1003883683; - createElementSyntax[1] = _f3_; - continue} - if(982028505 <= _f1_) - {var t40=new array_length(); - t40.push("<",caml_jsstring_of_string(elt)); - opt_iter - (type, - function(t) - {var t34=caml_js_html_escape(t); - t40.push(' type="',t34,'"'); - return 0}); - opt_iter - (name, - function(n) - {var t38=caml_js_html_escape(n); - t40.push(' name="',t38,'"'); - return 0}); - t40.push(">"); - return doc.createElement(t40.join(""))} - var t28=createElement(doc,elt); - opt_iter(type,function(t25){return t28.type = t25}); - opt_iter(name,function(t27){return t28.name = t27}); - return t28}} - function createHtml(doc){return unsafeCreateElement(doc,cst_html)} - function createHead(doc){return unsafeCreateElement(doc,cst_head)} - function createLink(doc){return unsafeCreateElement(doc,cst_link)} - function createTitle(doc){return unsafeCreateElement(doc,cst_title)} - function createMeta(doc){return unsafeCreateElement(doc,cst_meta)} - function createBase(doc){return unsafeCreateElement(doc,cst_base)} - function createStyle(doc){return unsafeCreateElement(doc,cst_style)} - function createBody(doc){return unsafeCreateElement(doc,cst_body)} - function createForm(doc){return unsafeCreateElement(doc,cst_form)} - function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)} - function createOption(doc){return unsafeCreateElement(doc,cst_option)} - function createSelect(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_select$0)} - function createInput(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_input$0)} - function createTextarea(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_textarea)} - function createButton(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_button)} - function createLabel(doc){return unsafeCreateElement(doc,cst_label)} - function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)} - function createLegend(doc){return unsafeCreateElement(doc,cst_legend)} - function createUl(doc){return unsafeCreateElement(doc,cst_ul)} - function createOl(doc){return unsafeCreateElement(doc,cst_ol)} - function createDl(doc){return unsafeCreateElement(doc,cst_dl)} - function createLi(doc){return unsafeCreateElement(doc,cst_li)} - function createDiv(doc){return unsafeCreateElement(doc,cst_div)} - function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)} - function createP(doc){return unsafeCreateElement(doc,cst_p)} - function createH1(doc){return unsafeCreateElement(doc,cst_h1)} - function createH2(doc){return unsafeCreateElement(doc,cst_h2)} - function createH3(doc){return unsafeCreateElement(doc,cst_h3)} - function createH4(doc){return unsafeCreateElement(doc,cst_h4)} - function createH5(doc){return unsafeCreateElement(doc,cst_h5)} - function createH6(doc){return unsafeCreateElement(doc,cst_h6)} - function createQ(doc){return unsafeCreateElement(doc,cst_q)} - function createBlockquote(doc) - {return unsafeCreateElement(doc,cst_blockquote)} - function createPre(doc){return unsafeCreateElement(doc,cst_pre)} - function createBr(doc){return unsafeCreateElement(doc,cst_br)} - function createHr(doc){return unsafeCreateElement(doc,cst_hr)} - function createIns(doc){return unsafeCreateElement(doc,cst_ins)} - function createDel(doc){return unsafeCreateElement(doc,cst_del)} - function createA(doc){return unsafeCreateElement(doc,cst_a)} - function createImg(doc){return unsafeCreateElement(doc,cst_img)} - function createObject(doc){return unsafeCreateElement(doc,cst_object)} - function createParam(doc){return unsafeCreateElement(doc,cst_param)} - function createMap(doc){return unsafeCreateElement(doc,cst_map)} - function createArea(doc){return unsafeCreateElement(doc,cst_area)} - function createScript(doc){return unsafeCreateElement(doc,cst_script)} - function createTable(doc){return unsafeCreateElement(doc,cst_table)} - function createCaption(doc){return unsafeCreateElement(doc,cst_caption)} - function createCol(doc){return unsafeCreateElement(doc,cst_col)} - function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)} - function createThead(doc){return unsafeCreateElement(doc,cst_thead)} - function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)} - function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)} - function createTr(doc){return unsafeCreateElement(doc,cst_tr)} - function createTh(doc){return unsafeCreateElement(doc,cst_th)} - function createTd(doc){return unsafeCreateElement(doc,cst_td)} - function createSub(doc){return createElement(doc,cst_sub)} - function createSup(doc){return createElement(doc,cst_sup)} - function createSpan(doc){return createElement(doc,cst_span)} - function createTt(doc){return createElement(doc,cst_tt)} - function createI(doc){return createElement(doc,cst_i)} - function createB(doc){return createElement(doc,cst_b)} - function createBig(doc){return createElement(doc,cst_big)} - function createSmall(doc){return createElement(doc,cst_small)} - function createEm(doc){return createElement(doc,cst_em)} - function createStrong(doc){return createElement(doc,cst_strong)} - function createCite(doc){return createElement(doc,cst_cite)} - function createDfn(doc){return createElement(doc,cst_dfn)} - function createCode(doc){return createElement(doc,cst_code)} - function createSamp(doc){return createElement(doc,cst_samp)} - function createKbd(doc){return createElement(doc,cst_kbd)} - function createVar(doc){return createElement(doc,cst_var)} - function createAbbr(doc){return createElement(doc,cst_abbr)} - function createDd(doc){return createElement(doc,cst_dd)} - function createDt(doc){return createElement(doc,cst_dt)} - function createNoscript(doc){return createElement(doc,cst_noscript)} - function createAddress(doc){return createElement(doc,cst_address)} - function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)} - function createFrame(doc){return unsafeCreateElement(doc,cst_frame)} - function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)} - function createAudio(doc){return unsafeCreateElement(doc,cst_audio)} - function createVideo(doc){return unsafeCreateElement(doc,cst_video)} - var - Canvas_not_available= - [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)]; - function createCanvas(doc) - {var t52=unsafeCreateElement(doc,cst_canvas); - if(1 - caml_call1(Opt[5],t52.getContext))throw Canvas_not_available; - return t52} - var - html_element=Unsafe[1].HTMLElement, - element$0= - html_element === t39 - ?function(e){return e.innerHTML === t39?no_handler:e} - :function(e){return e instanceof html_element?e:no_handler}; - function unsafeCoerce(tag,e) - {var t56=e.tagName,_f0_=caml_jsstring_of_string(tag); - return t56.toLowerCase() === _f0_?e:no_handler} - function a(e){return unsafeCoerce(cst_a$0,e)} - function area(e){return unsafeCoerce(cst_area$0,e)} - function base(e){return unsafeCoerce(cst_base$0,e)} - function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)} - function body(e){return unsafeCoerce(cst_body$0,e)} - function br(e){return unsafeCoerce(cst_br$0,e)} - function button(e){return unsafeCoerce(cst_button$0,e)} - function canvas(e){return unsafeCoerce(cst_canvas$0,e)} - function caption(e){return unsafeCoerce(cst_caption$0,e)} - function col(e){return unsafeCoerce(cst_col$0,e)} - function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)} - function del(e){return unsafeCoerce(cst_del$0,e)} - function div(e){return unsafeCoerce(cst_div$0,e)} - function dl(e){return unsafeCoerce(cst_dl$0,e)} - function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)} - function embed(e){return unsafeCoerce(cst_embed$0,e)} - function form(e){return unsafeCoerce(cst_form$0,e)} - function frameset(e){return unsafeCoerce(cst_frameset$0,e)} - function frame(e){return unsafeCoerce(cst_frame$0,e)} - function h1(e){return unsafeCoerce(cst_h1$0,e)} - function h2(e){return unsafeCoerce(cst_h2$0,e)} - function h3(e){return unsafeCoerce(cst_h3$0,e)} - function h4(e){return unsafeCoerce(cst_h4$0,e)} - function h5(e){return unsafeCoerce(cst_h5$0,e)} - function h6(e){return unsafeCoerce(cst_h6$0,e)} - function head(e){return unsafeCoerce(cst_head$0,e)} - function hr(e){return unsafeCoerce(cst_hr$0,e)} - function html(e){return unsafeCoerce(cst_html$0,e)} - function iframe(e){return unsafeCoerce(cst_iframe$0,e)} - function img(e){return unsafeCoerce(cst_img$0,e)} - function input$0(e){return unsafeCoerce(cst_input$1,e)} - function ins(e){return unsafeCoerce(cst_ins$0,e)} - function label(e){return unsafeCoerce(cst_label$0,e)} - function legend(e){return unsafeCoerce(cst_legend$0,e)} - function li(e){return unsafeCoerce(cst_li$0,e)} - function link(e){return unsafeCoerce(cst_link$0,e)} - function map$2(e){return unsafeCoerce(cst_map$0,e)} - function meta(e){return unsafeCoerce(cst_meta$0,e)} - function object(e){return unsafeCoerce(cst_object$0,e)} - function ol(e){return unsafeCoerce(cst_ol$0,e)} - function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)} - function option$1(e){return unsafeCoerce(cst_option$0,e)} - function p(e){return unsafeCoerce(cst_p$0,e)} - function param(e){return unsafeCoerce(cst_param$0,e)} - function pre(e){return unsafeCoerce(cst_pre$0,e)} - function q(e){return unsafeCoerce(cst_q$0,e)} - function script(e){return unsafeCoerce(cst_script$0,e)} - function select$0(e){return unsafeCoerce(cst_select$1,e)} - function style(e){return unsafeCoerce(cst_style$0,e)} - function table(e){return unsafeCoerce(cst_table$0,e)} - function tbody(e){return unsafeCoerce(cst_tbody$0,e)} - function td(e){return unsafeCoerce(cst_td$0,e)} - function textarea(e){return unsafeCoerce(cst_textarea$0,e)} - function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)} - function th(e){return unsafeCoerce(cst_th$0,e)} - function thead(e){return unsafeCoerce(cst_thead$0,e)} - function title(e){return unsafeCoerce(cst_title$0,e)} - function tr(e){return unsafeCoerce(cst_tr$0,e)} - function ul(e){return unsafeCoerce(cst_ul$0,e)} - function audio(e){return unsafeCoerce(cst_audio$0,e)} - function video(e){return unsafeCoerce(cst_video$0,e)} - function unsafeCoerceEvent(constr,ev) - {if(constr !== t39 && ev instanceof constr)return ev;return no_handler} - function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)} - function keyboardEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)} - function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)} - function mouseScrollEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)} - function popStateEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)} - function messageEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} - function eventRelatedTarget(e) - {function _fX_(param) - {var match=caml_string_of_jsstring(e.type); - if(caml_string_notequal(match,cst_mouseout$0)) - {if(caml_string_notequal(match,cst_mouseover$0))return no_handler; - var _fY_=function(param){throw [0,Assert_failure,_l_]}; - return caml_call2(Optdef[8],e.fromElement,_fY_)} - function _fZ_(param){throw [0,Assert_failure,_m_]} - return caml_call2(Optdef[8],e.toElement,_fZ_)} - return caml_call2(Optdef[8],e.relatedTarget,_fX_)} - function eventAbsolutePosition(e) - {var t70=t87.body,t71=t87.documentElement; - return [0, - (e.clientX + t70.scrollLeft | 0) + t71.scrollLeft | 0, - (e.clientY + t70.scrollTop | 0) + t71.scrollTop | 0]} - function eventAbsolutePosition$0(e) - {function _fT_(x) - {function _fV_(y){return [0,x,y]} - function _fW_(param){return eventAbsolutePosition(e)} - return caml_call3(Optdef[7],e.pageY,_fW_,_fV_)} - function _fU_(param){return eventAbsolutePosition(e)} - return caml_call3(Optdef[7],e.pageX,_fU_,_fT_)} - function elementClientPosition(e) - {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; - return [0, - ((t80.left | 0) - t81.clientLeft | 0) - t82.clientLeft | 0, - ((t80.top | 0) - t81.clientTop | 0) - t82.clientTop | 0]} - function getDocumentScroll(param) - {var t88=t87.body,t89=t87.documentElement; - return [0, - t88.scrollLeft + t89.scrollLeft | 0, - t88.scrollTop + t89.scrollTop | 0]} - function buttonPressed(ev) - {function _fR_(x){return x} - function _fS_(param) - {var match=ev.button,switcher=match - 1 | 0; - if(! (3 < switcher >>> 0)) - switch(switcher) - {case 0:return 1;case 1:return 3;case 2:break;default:return 2} - return 0} - return caml_call3(Optdef[7],ev.which,_fS_,_fR_)} - function addMousewheelEventListenerWith(e,capture,once,passive,h) - {var t96=createDiv(t87); - t96.setAttribute("onmousewheel","return;"); - if(typeof t96.onmousewheel === "function") - {var - _fN_= - handler - (function(e) - {function _fP_(param){return 0} - var - dx= - (- caml_call2(Optdef[8],e.wheelDeltaX,_fP_) | 0) / 40 | 0; - function _fQ_(param){return e.wheelDelta} - var - dy= - (- caml_call2(Optdef[8],e.wheelDeltaY,_fQ_) | 0) / 40 | 0; - return caml_call3(h,e,dx,dy)}); - return addEventListenerWithOptions - (e,Event$0[14],capture,once,passive,_fN_)} - var - _fO_= - handler - (function(e) - {var d=e.detail; - return e.axis === e.HORIZONTAL - ?caml_call3(h,e,d,0) - :caml_call3(h,e,0,d)}); - return addEventListenerWithOptions - (e,Event$0[15],capture,once,passive,_fO_)} - function addMousewheelEventListener(e,h,capt) - {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} - function f(v) - {var - match=caml_string_of_jsstring(v), - switch$0=caml_string_compare(match,cst_KeyH); - if(0 <= switch$0) - {if(! (0 < switch$0))return 8; - var switch$1=caml_string_compare(match,cst_Numpad4); - if(0 <= switch$1) - {if(! (0 < switch$1))return 72; - var switch$2=caml_string_compare(match,cst_PageUp); - if(0 <= switch$2) - {if(! (0 < switch$2))return 98; - var switch$3=caml_string_compare(match,cst_ShiftRight); - if(0 <= switch$3) - {if(! (0 < switch$3))return 91; - if(! caml_string_notequal(match,cst_Slash))return 55; - if(! caml_string_notequal(match,cst_Space))return 41; - if(! caml_string_notequal(match,cst_Tab))return 39; - if(! caml_string_notequal(match,cst_VolumeDown))return 103; - if(! caml_string_notequal(match,cst_VolumeMute))return 102; - if(! caml_string_notequal(match,cst_VolumeUp))return 104} - else - {if(! caml_string_notequal(match,cst_Pause))return 123; - if(! caml_string_notequal(match,cst_Period))return 54; - if(! caml_string_notequal(match,cst_PrintScreen))return 120; - if(! caml_string_notequal(match,cst_Quote))return 50; - if(! caml_string_notequal(match,cst_ScrollLock))return 119; - if(! caml_string_notequal(match,cst_Semicolon))return 49; - if(! caml_string_notequal(match,cst_ShiftLeft))return 90}} - else - {var switch$4=caml_string_compare(match,cst_NumpadDivide); - if(0 <= switch$4) - {if(! (0 < switch$4))return 84; - if(! caml_string_notequal(match,cst_NumpadEnter))return 83; - if(! caml_string_notequal(match,cst_NumpadEqual))return 82; - if(! caml_string_notequal(match,cst_NumpadMultiply))return 78; - if(! caml_string_notequal(match,cst_NumpadSubtract))return 79; - if(! caml_string_notequal(match,cst_OSLeft))return 117; - if(! caml_string_notequal(match,cst_OSRight))return 118; - if(! caml_string_notequal(match,cst_PageDown))return 99} - else - {if(! caml_string_notequal(match,cst_Numpad5))return 73; - if(! caml_string_notequal(match,cst_Numpad6))return 74; - if(! caml_string_notequal(match,cst_Numpad7))return 75; - if(! caml_string_notequal(match,cst_Numpad8))return 76; - if(! caml_string_notequal(match,cst_Numpad9))return 77; - if(! caml_string_notequal(match,cst_NumpadAdd))return 80; - if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}} - else - {var switch$5=caml_string_compare(match,cst_KeyX); - if(0 <= switch$5) - {if(! (0 < switch$5))return 24; - var switch$6=caml_string_compare(match,cst_MetaRight); - if(0 <= switch$6) - {if(! (0 < switch$6))return 89; - if(! caml_string_notequal(match,cst_Minus))return 37; - if(! caml_string_notequal(match,cst_NumLock))return 85; - if(! caml_string_notequal(match,cst_Numpad0))return 68; - if(! caml_string_notequal(match,cst_Numpad1))return 69; - if(! caml_string_notequal(match,cst_Numpad2))return 70; - if(! caml_string_notequal(match,cst_Numpad3))return 71} - else - {if(! caml_string_notequal(match,cst_KeyY))return 25; - if(! caml_string_notequal(match,cst_KeyZ))return 26; - if(! caml_string_notequal(match,cst_MediaPlayPause))return 107; - if(! caml_string_notequal(match,cst_MediaStop))return 108; - if(! caml_string_notequal(match,cst_MediaTrackNext))return 106; - if(! caml_string_notequal(match,cst_MediaTrackPrevious)) - return 105; - if(! caml_string_notequal(match,cst_MetaLeft))return 88}} - else - {var switch$7=caml_string_compare(match,cst_KeyP); - if(0 <= switch$7) - {if(! (0 < switch$7))return 16; - if(! caml_string_notequal(match,cst_KeyQ))return 17; - if(! caml_string_notequal(match,cst_KeyR))return 18; - if(! caml_string_notequal(match,cst_KeyS))return 19; - if(! caml_string_notequal(match,cst_KeyT))return 20; - if(! caml_string_notequal(match,cst_KeyU))return 21; - if(! caml_string_notequal(match,cst_KeyV))return 22; - if(! caml_string_notequal(match,cst_KeyW))return 23} - else - {if(! caml_string_notequal(match,cst_KeyI))return 9; - if(! caml_string_notequal(match,cst_KeyJ))return 10; - if(! caml_string_notequal(match,cst_KeyK))return 11; - if(! caml_string_notequal(match,cst_KeyL))return 12; - if(! caml_string_notequal(match,cst_KeyM))return 13; - if(! caml_string_notequal(match,cst_KeyN))return 14; - if(! caml_string_notequal(match,cst_KeyO))return 15}}}} - else - {var switch$8=caml_string_compare(match,cst_Digit6); - if(0 <= switch$8) - {if(! (0 < switch$8))return 33; - var switch$9=caml_string_compare(match,cst_F6); - if(0 <= switch$9) - {if(! (0 < switch$9))return 61; - var switch$10=caml_string_compare(match,cst_KeyA); - if(0 <= switch$10) - {if(! (0 < switch$10))return 1; - if(! caml_string_notequal(match,cst_KeyB))return 2; - if(! caml_string_notequal(match,cst_KeyC))return 3; - if(! caml_string_notequal(match,cst_KeyD))return 4; - if(! caml_string_notequal(match,cst_KeyE))return 5; - if(! caml_string_notequal(match,cst_KeyF))return 6; - if(! caml_string_notequal(match,cst_KeyG))return 7} - else - {if(! caml_string_notequal(match,cst_F7))return 62; - if(! caml_string_notequal(match,cst_F8))return 63; - if(! caml_string_notequal(match,cst_F9))return 64; - if(! caml_string_notequal(match,cst_Home))return 100; - if(! caml_string_notequal(match,cst_Insert))return 44; - if(! caml_string_notequal(match,cst_IntlBackslash))return 121; - if(! caml_string_notequal(match,cst_IntlYen))return 122}} - else - {var switch$11=caml_string_compare(match,cst_F1); - if(0 <= switch$11) - {if(! (0 < switch$11))return 56; - if(! caml_string_notequal(match,cst_F10))return 65; - if(! caml_string_notequal(match,cst_F11))return 66; - if(! caml_string_notequal(match,cst_F12))return 67; - if(! caml_string_notequal(match,cst_F2))return 57; - if(! caml_string_notequal(match,cst_F3))return 58; - if(! caml_string_notequal(match,cst_F4))return 59; - if(! caml_string_notequal(match,cst_F5))return 60} - else - {if(! caml_string_notequal(match,cst_Digit7))return 34; - if(! caml_string_notequal(match,cst_Digit8))return 35; - if(! caml_string_notequal(match,cst_Digit9))return 36; - if(! caml_string_notequal(match,cst_End))return 101; - if(! caml_string_notequal(match,cst_Enter))return 40; - if(! caml_string_notequal(match,cst_Equal))return 38; - if(! caml_string_notequal(match,cst_Escape))return 42}}} - else - {var switch$12=caml_string_compare(match,cst_BrowserRefresh); - if(0 <= switch$12) - {if(! (0 < switch$12))return 113; - var switch$13=caml_string_compare(match,cst_Delete); - if(0 <= switch$13) - {if(! (0 < switch$13))return 45; - if(! caml_string_notequal(match,cst_Digit0))return 27; - if(! caml_string_notequal(match,cst_Digit1))return 28; - if(! caml_string_notequal(match,cst_Digit2))return 29; - if(! caml_string_notequal(match,cst_Digit3))return 30; - if(! caml_string_notequal(match,cst_Digit4))return 31; - if(! caml_string_notequal(match,cst_Digit5))return 32} - else - {if(! caml_string_notequal(match,cst_BrowserSearch))return 110; - if(! caml_string_notequal(match,cst_BrowserStop))return 114; - if(! caml_string_notequal(match,cst_CapsLock))return 46; - if(! caml_string_notequal(match,cst_Comma))return 53; - if(! caml_string_notequal(match,cst_ContextMenu))return 109; - if(! caml_string_notequal(match,cst_ControlLeft))return 86; - if(! caml_string_notequal(match,cst_ControlRight))return 87}} - else - {var switch$14=caml_string_compare(match,cst_Backslash); - if(0 <= switch$14) - {if(! (0 < switch$14))return 52; - if(! caml_string_notequal(match,cst_Backspace))return 43; - if(! caml_string_notequal(match,cst_BracketLeft))return 47; - if(! caml_string_notequal(match,cst_BracketRight))return 48; - if(! caml_string_notequal(match,cst_BrowserBack))return 116; - if(! caml_string_notequal(match,cst_BrowserFavorites)) - return 112; - if(! caml_string_notequal(match,cst_BrowserForward))return 115; - if(! caml_string_notequal(match,cst_BrowserHome))return 111} - else - {if(! caml_string_notequal(match,cst_AltLeft))return 92; - if(! caml_string_notequal(match,cst_AltRight))return 93; - if(! caml_string_notequal(match,cst_ArrowDown))return 97; - if(! caml_string_notequal(match,cst_ArrowLeft))return 94; - if(! caml_string_notequal(match,cst_ArrowRight))return 95; - if(! caml_string_notequal(match,cst_ArrowUp))return 96; - if(! caml_string_notequal(match,cst_Backquote))return 51}}}} - return 0} - function try_key_code_left(param) - {if(19 <= param) - {if(91 === param)return 88} - else - if(16 <= param) - switch(param - 16 | 0) - {case 0:return 90;case 1:return 86;default:return 92} - return 0} - function try_key_code_right(param) - {if(19 <= param) - {if(91 === param)return 89} - else - if(16 <= param) - switch(param - 16 | 0) - {case 0:return 91;case 1:return 87;default:return 93} - return 0} - function try_key_code_numpad(param) - {if(47 <= param) - {var switcher=param - 96 | 0; - if(! (15 < switcher >>> 0)) - switch(switcher) - {case 0:return 68; - case 1:return 69; - case 2:return 70; - case 3:return 71; - case 4:return 72; - case 5:return 73; - case 6:return 74; - case 7:return 75; - case 8:return 76; - case 9:return 77; - case 10:return 78; - case 11:return 80; - case 12:break; - case 13:return 79; - case 14:return 81; - default:return 84}} - else - if(12 <= param) - switch(param - 12 | 0) - {case 0:return 73; - case 1:return 83; - case 21:return 77; - case 22:return 71; - case 23:return 69; - case 24:return 75; - case 25:return 72; - case 26:return 76; - case 27:return 74; - case 28:return 70; - case 33:return 68; - case 34:return 81 - } - return 0} - function try_key_code_normal(param) - {var switcher=param - 8 | 0; - if(! (214 < switcher >>> 0)) - {var _fM_=switcher; - if(67 <= _fM_) - switch(_fM_) - {case 67:return 11; - case 68:return 12; - case 69:return 13; - case 70:return 14; - case 71:return 15; - case 72:return 16; - case 73:return 17; - case 74:return 18; - case 75:return 19; - case 76:return 20; - case 77:return 21; - case 78:return 22; - case 79:return 23; - case 80:return 24; - case 81:return 25; - case 82:return 26; - case 85:return 109; - case 104:return 56; - case 105:return 57; - case 106:return 58; - case 107:return 59; - case 108:return 60; - case 109:return 61; - case 110:return 62; - case 111:return 63; - case 112:return 64; - case 113:return 65; - case 114:return 66; - case 115:return 67; - case 137:return 119; - case 178:return 49; - case 179:return 38; - case 180:return 53; - case 181:return 37; - case 182:return 54; - case 183:return 55; - case 184:return 51; - case 211:return 47; - case 212:return 52; - case 213:return 48; - case 214:return 50 - } - else - switch(_fM_) - {case 0:return 43; - case 1:return 39; - case 5:return 40; - case 11:return 123; - case 12:return 46; - case 19:return 42; - case 24:return 41; - case 25:return 98; - case 26:return 99; - case 27:return 101; - case 28:return 100; - case 29:return 94; - case 30:return 96; - case 31:return 95; - case 32:return 97; - case 34:return 120; - case 37:return 44; - case 38:return 45; - case 40:return 27; - case 41:return 28; - case 42:return 29; - case 43:return 30; - case 44:return 31; - case 45:return 32; - case 46:return 33; - case 47:return 34; - case 48:return 35; - case 49:return 36; - case 57:return 1; - case 58:return 2; - case 59:return 3; - case 60:return 4; - case 61:return 5; - case 62:return 6; - case 63:return 7; - case 64:return 8; - case 65:return 9; - case 66:return 10 - }} - return 0} - function make_unidentified(param){return 0} - function run_next(value,f,v){return v?v:caml_call1(f,value)} - function symbol$11(x,f){return caml_call1(f,x)} - function of_event(evt) - {var _fF_=evt.keyCode; - function _fG_(_fL_){return run_next(_fF_,try_key_code_normal,_fL_)} - var match=evt.location,switcher=match - 1 | 0; - if(2 < switcher >>> 0) - var _fH_=make_unidentified; - else - switch(switcher) - {case 0: - var - _fC_=evt.keyCode, - _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; - break; - case 1: - var - _fD_=evt.keyCode, - _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; - break; - default: - var - _fE_=evt.keyCode, - _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} - var value=evt.code; - return symbol$11 - (symbol$11 - (symbol$11 - (0, - function(v) - {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), - _fH_), - _fG_)} - function char_of_int(value) - {if(caml_call2(symbol$5,0,value)) - try - {var _fA_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fA_} - catch(_fB_){return 0} - return 0} - function empty_string(param){return ""} - function none(param){return 0} - function of_event$0(evt) - {var t110=caml_call2(Optdef[8],evt.key,empty_string),match=t110.length; - return 0 === match - ?caml_call3(Optdef[7],evt.charCode,none,char_of_int) - :1 === match?char_of_int(t110.charCodeAt(0) | 0):0} - function element$1(_fz_){return _fz_} - function tagged(e) - {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase()); - if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e]; - var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0; - if(! (21 < switcher >>> 0)) - switch(switcher) - {case 0: - return caml_string_notequal(tag,cst_a$1) - ?caml_string_notequal(tag,cst_area$1) - ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e] - :[1,e] - :[0,e]; - case 1: - return caml_string_notequal(tag,cst_base$1) - ?caml_string_notequal(tag,cst_blockquote$1) - ?caml_string_notequal(tag,cst_body$1) - ?caml_string_notequal(tag,cst_br$1) - ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e] - :[6,e] - :[5,e] - :[4,e] - :[3,e]; - case 2: - return caml_string_notequal(tag,cst_canvas$1) - ?caml_string_notequal(tag,cst_caption$1) - ?caml_string_notequal(tag,cst_col$1) - ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e] - :[10,e] - :[9,e] - :[8,e]; - case 3: - return caml_string_notequal(tag,cst_del$1) - ?caml_string_notequal(tag,cst_div$1) - ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e] - :[13,e] - :[12,e]; - case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e]; - case 5: - return caml_string_notequal(tag,cst_fieldset$1) - ?caml_string_notequal(tag,cst_form$1) - ?caml_string_notequal(tag,cst_frame$1) - ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e] - :[19,e] - :[17,e] - :[16,e]; - case 7: - return caml_string_notequal(tag,cst_h1$1) - ?caml_string_notequal(tag,cst_h2$1) - ?caml_string_notequal(tag,cst_h3$1) - ?caml_string_notequal(tag,cst_h4$1) - ?caml_string_notequal(tag,cst_h5$1) - ?caml_string_notequal(tag,cst_h6$1) - ?caml_string_notequal(tag,cst_head$1) - ?caml_string_notequal(tag,cst_hr$1) - ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e] - :[27,e] - :[26,e] - :[25,e] - :[24,e] - :[23,e] - :[22,e] - :[21,e] - :[20,e]; - case 8: - return caml_string_notequal(tag,cst_iframe$1) - ?caml_string_notequal(tag,cst_img$1) - ?caml_string_notequal(tag,cst_input$2) - ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e] - :[31,e] - :[30,e] - :[29,e]; - case 11: - return caml_string_notequal(tag,cst_label$1) - ?caml_string_notequal(tag,cst_legend$1) - ?caml_string_notequal(tag,cst_li$1) - ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e] - :[35,e] - :[34,e] - :[33,e]; - case 12: - return caml_string_notequal(tag,cst_map$1) - ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e] - :[37,e]; - case 14: - return caml_string_notequal(tag,cst_object$1) - ?caml_string_notequal(tag,cst_ol$1) - ?caml_string_notequal(tag,cst_optgroup$1) - ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e] - :[41,e] - :[40,e] - :[39,e]; - case 15: - return caml_string_notequal(tag,cst_p$1) - ?caml_string_notequal(tag,cst_param$1) - ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e] - :[44,e] - :[43,e]; - case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e]; - case 18: - return caml_string_notequal(tag,cst_script$1) - ?caml_string_notequal(tag,cst_select$2) - ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e] - :[48,e] - :[47,e]; - case 19: - return caml_string_notequal(tag,cst_table$1) - ?caml_string_notequal(tag,cst_tbody$1) - ?caml_string_notequal(tag,cst_td$1) - ?caml_string_notequal(tag,cst_textarea$1) - ?caml_string_notequal(tag,cst_tfoot$1) - ?caml_string_notequal(tag,cst_th$1) - ?caml_string_notequal(tag,cst_thead$1) - ?caml_string_notequal(tag,cst_title$1) - ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e] - :[57,e] - :[56,e] - :[55,e] - :[54,e] - :[53,e] - :[52,e] - :[51,e] - :[50,e]; - case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e]; - case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e] - } - return [61,e]} - function opt_tagged(e) - {function _fx_(e){return [0,tagged(e)]} - function _fy_(param){return 0} - return caml_call3(Opt[7],e,_fy_,_fx_)} - function taggedEvent(ev) - {function _ff_(ev){return [0,ev]} - function _fg_(param) - {function _fi_(ev){return [1,ev]} - function _fj_(param) - {function _fl_(ev){return [3,ev]} - function _fm_(param) - {function _fo_(ev){return [4,ev]} - function _fp_(param) - {function _fr_(ev){return [5,ev]} - function _fs_(param) - {function _fu_(ev){return [2,ev]} - function _fv_(param){return [6,ev]} - var _fw_=messageEvent(ev); - return caml_call3(Opt[7],_fw_,_fv_,_fu_)} - var _ft_=popStateEvent(ev); - return caml_call3(Opt[7],_ft_,_fs_,_fr_)} - var _fq_=mouseScrollEvent(ev); - return caml_call3(Opt[7],_fq_,_fp_,_fo_)} - var _fn_=wheelEvent(ev); - return caml_call3(Opt[7],_fn_,_fm_,_fl_)} - var _fk_=keyboardEvent(ev); - return caml_call3(Opt[7],_fk_,_fj_,_fi_)} - var _fh_=mouseEvent(ev); - return caml_call3(Opt[7],_fh_,_fg_,_ff_)} - function opt_taggedEvent(ev) - {function _fd_(ev){return [0,taggedEvent(ev)]} - function _fe_(param){return 0} - return caml_call3(Opt[7],ev,_fe_,_fd_)} - function stopPropagation(ev) - {function _fb_(param){return ev.stopPropagation()} - function _fc_(param){return ev.cancelBubble = t25} - return caml_call3(Optdef[7],ev.stopPropagation,_fc_,_fb_)} - var - requestAnimationFrame= - runtime.caml_js_pure_expr - (function(param) - {var - l= - [0, - _j_.requestAnimationFrame, - [0, - _j_.mozRequestAnimationFrame, - [0, - _j_.webkitRequestAnimationFrame, - [0, - _j_.oRequestAnimationFrame, - [0,_j_.msRequestAnimationFrame,0]]]]]; - try - {var - _e__=function(c){return caml_call1(Optdef[5],c)}, - req=caml_call2(Stdlib_List[38],_e__,l), - _e$_=function(callback){return req(callback)}; - return _e$_} - catch(_fa_) - {_fa_ = caml_wrap_exception(_fa_); - if(_fa_ === Stdlib[8]) - {var - now=function(param){var t123=new t122();return t123.getTime()}, - last=[0,now(0)]; - return function(callback) - {var - t=now(0), - dt=last[1] + 16.6666666666666679 - t, - dt$0=dt < 0.?0.:dt; - last[1] = t; - _j_.setTimeout(callback,dt$0); - return 0}} - throw _fa_}}); - function hasPushState(param) - {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} - function hasPlaceholder(param) - {var t129=createInput(0,0,t87); - return caml_call1(Optdef[5],t129.placeholder)} - function hasRequired(param) - {var t130=createInput(0,0,t87); - return caml_call1(Optdef[5],t130.required)} - var overflow_limit=2147483000.; - function setTimeout(callback,d) - {var id=[0,0]; - function loop(step,param) - {if(2147483000. < step) - var remain=step - 2147483000.,step$0=overflow_limit; - else - var remain=0.,step$0=step; - var - cb=remain == 0.?callback:function(_e9_){return loop(remain,_e9_)}, - t131=caml_js_wrap_callback(cb); - id[1] = [0,_j_.setTimeout(t131,step$0)]; - return 0} - loop(d,0); - return id} - function clearTimeout(id) - {var _e8_=id[1]; - if(_e8_){var x=_e8_[1];id[1] = 0;return _j_.clearTimeout(x)} - return 0} - function js_array_of_collection(c){return [].slice.call(c)} - var - Js_of_ocaml_Dom_html= - [0, - d, - t87, - getElementById_opt, - getElementById_exn, - getElementById_coerce, - getElementById, - location_origin, - _j_, - no_handler, - handler, - full_handler, - invoke_handler, - eventTarget, - eventRelatedTarget, - Event$0, - addEventListenerWithOptions, - addEventListener, - removeEventListener, - addMousewheelEventListenerWith, - addMousewheelEventListener, - createCustomEvent, - buttonPressed, - eventAbsolutePosition$0, - elementClientPosition, - getDocumentScroll, - [0,of_event,try_key_code_normal], - [0,of_event$0], - createHtml, - createHead, - createLink, - createTitle, - createMeta, - createBase, - createStyle, - createBody, - createForm, - createOptgroup, - createOption, - createSelect, - createInput, - createTextarea, - createButton, - createLabel, - createFieldset, - createLegend, - createUl, - createOl, - createDl, - createLi, - createDiv, - createEmbed, - createP, - createH1, - createH2, - createH3, - createH4, - createH5, - createH6, - createQ, - createBlockquote, - createPre, - createBr, - createHr, - createIns, - createDel, - createA, - createImg, - createObject, - createParam, - createMap, - createArea, - createScript, - createTable, - createCaption, - createCol, - createColgroup, - createThead, - createTfoot, - createTbody, - createTr, - createTh, - createTd, - createSub, - createSup, - createSpan, - createTt, - createI, - createB, - createBig, - createSmall, - createEm, - createStrong, - createCite, - createDfn, - createCode, - createSamp, - createKbd, - createVar, - createAbbr, - createDd, - createDt, - createNoscript, - createAddress, - createFrameset, - createFrame, - createIframe, - createAudio, - createVideo, - Canvas_not_available, - createCanvas, - element$1, - tagged, - opt_tagged, - taggedEvent, - opt_taggedEvent, - stopPropagation, - [0, - element$0, - a, - area, - audio, - base, - blockquote, - body, - br, - button, - canvas, - caption, - col, - colgroup, - del, - div, - embed, - dl, - fieldset, - form, - frameset, - frame, - h1, - h2, - h3, - h4, - h5, - h6, - head, - hr, - html, - iframe, - img, - input$0, - ins, - label, - legend, - li, - link, - map$2, - meta, - object, - ol, - optgroup, - option$1, - p, - param, - pre, - q, - script, - select$0, - style, - table, - tbody, - td, - textarea, - tfoot, - th, - thead, - title, - tr, - ul, - video, - mouseEvent, - keyboardEvent, - wheelEvent, - mouseScrollEvent, - popStateEvent, - messageEvent], - setTimeout, - clearTimeout, - js_array_of_collection, - requestAnimationFrame, - runtime.caml_js_html_entities, - onIE, - hasPushState, - hasPlaceholder, - hasRequired]; - caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); - var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData; - function filter_map$0(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); - if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]} - var param$0=q; - continue} - return 0}} - function have_content(elt) - {var - t3=elt.name, - _e6_=caml_call2(symbol$9,t3.length,0), - _e7_=_e6_?1 - (elt.disabled | 0):_e6_; - return _e7_} - function form_elements(get,form) - {var t34=form.elements,i$2=t34.length - 1 | 0,acc=0,i=i$2; - for(;;) - {if(caml_call2(symbol$5,i,0)) - {var - _eX_= - function(v$2) - {var match$3=tagged(v$2); - switch(match$3[0]) - {case 31: - var v=match$3[1]; - if(get)var sth=get[1],get$0=sth;else var get$0=0; - if(have_content(v)) - {var - name$1=caml_string_of_jsstring(v.name), - value=v.value, - t20=v.type, - match=caml_string_of_jsbytes(t20.toLowerCase()); - if(caml_string_notequal(match,cst_checkbox)) - {if(! caml_string_notequal(match,cst_file)) - {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0]; - var match$0=caml_call1(Optdef[10],v.files); - if(match$0) - {var list=match$0[1]; - if(caml_call2(symbol$8,list.length,0)) - return [0,[0,name$1,[0,-976970511,""]],0]; - var match$1=caml_call1(Optdef[10],v.multiple); - if(match$1 && match$1[1]) - {var - _e1_=function(t28){return list.item(t28)}, - _e2_=caml_call2(Stdlib_Array[2],list.length,_e1_), - _e3_=caml_call1(Stdlib_Array[11],_e2_); - return filter_map$0 - (function(f) - {var match=caml_call1(Opt[10],f); - if(match) - {var file=match[1];return [0,[0,name$1,[0,781515420,file]]]} - return 0}, - _e3_)} - var _e4_=list.item(0),match$2=caml_call1(Opt[10],_e4_); - if(match$2) - {var file=match$2[1]; - return [0,[0,name$1,[0,781515420,file]],0]} - return 0} - return 0} - var switch$0=0; - if(caml_string_notequal(match,cst_password)) - {if(caml_string_notequal(match,cst_radio)) - {var switch$1=0; - if - (caml_string_notequal(match,cst_reset) - && - caml_string_notequal(match,cst_submit$0)) - {if(caml_string_notequal(match,cst_text)) - return [0,[0,name$1,[0,-976970511,value]],0]; - switch$0 = 1; - switch$1 = 1} - if(! switch$1)return 0}} - else - switch$0 = 1; - if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]} - return v.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0} - return 0; - case 48: - var v$0=match$3[1]; - if(have_content(v$0)) - {var name$0=caml_string_of_jsstring(v$0.name); - if(v$0.multiple | 0) - {var - _eZ_= - function(i) - {var t13=v$0.options,_e5_=t13.item(i); - return caml_call1(Opt[10],_e5_)}, - t10=v$0.options, - options=caml_call2(Stdlib_Array[2],t10.length,_eZ_), - _e0_=caml_call1(Stdlib_Array[11],options); - return filter_map$0 - (function(param) - {if(param) - {var e=param[1]; - return e.selected | 0 - ?[0,[0,name$0,[0,-976970511,e.value]]] - :0} - return 0}, - _e0_)} - return [0,[0,name$0,[0,-976970511,v$0.value]],0]} - return 0; - case 53: - var v$1=match$3[1]; - if(have_content(v$1)) - {var name=caml_string_of_jsstring(v$1.name); - return [0,[0,name,[0,-976970511,v$1.value]],0]} - return 0; - default:return 0}}, - _eY_=caml_call2(Stdlib_List[19],_eX_,acc); - return caml_call1(Stdlib_List[14],_eY_)} - var t32=form.elements,_eW_=t32.item(i),match=caml_call1(Opt[10],_eW_); - if(match) - {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; - continue} - var i$1=i - i | 0,i=i$1; - continue}} - function append(form_contents,form_elt) - {if(891486873 <= form_contents[1]) - {var list=form_contents[2];list[1] = [0,form_elt,list[1]];return 0} - var f=form_contents[2],_eU_=form_elt[2],_eV_=form_elt[1]; - if(781515420 <= _eU_[1]) - {var file=_eU_[2],t38=caml_jsstring_of_string(_eV_); - return f.append(t38,file)} - var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); - return f.append(t35,s)} - function empty_form_contents(param) - {var match=caml_call1(Optdef[10],formData); - if(match){var constr=match[1];return [0,808620462,new constr()]} - return [0,891486873,[0,0]]} - function post_form_contents(form) - {var contents=empty_form_contents(0),_eR_=form_elements(0,form); - function _eS_(_eT_){return append(contents,_eT_)} - caml_call2(Stdlib_List[17],_eS_,_eR_); - return contents} - function get_form_contents(form) - {var _eO_=form_elements(_n_,form); - function _eP_(param) - {var _eQ_=param[2]; - if(typeof _eQ_ !== "number" && -976970511 === _eQ_[1]) - {var s=_eQ_[2],name=param[1]; - return [0,name,caml_string_of_jsstring(s)]} - throw [0,Assert_failure,_o_]} - return caml_call2(Stdlib_List[19],_eP_,_eO_)} - var - Js_of_ocaml_Form= - [0, - formData, - formData_form, - append, - post_form_contents, - get_form_contents, - empty_form_contents, - form_elements]; - caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form"); - var - readystatechange=caml_call1(Event[1],cst_readystatechange), - loadstart$1=caml_call1(Event[1],cst_loadstart$1), - progress$1=caml_call1(Event[1],cst_progress$1), - abort$1=caml_call1(Event[1],cst_abort$1), - error$1=caml_call1(Event[1],cst_error$1), - load$1=caml_call1(Event[1],cst_load$1), - timeout=caml_call1(Event[1],cst_timeout), - loadend$0=caml_call1(Event[1],cst_loadend$0), - Event$1= - [0, - readystatechange, - loadstart$1, - progress$1, - abort$1, - error$1, - load$1, - timeout, - loadend$0], - Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; - caml_register_global - (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); - var t2=Unsafe[1].Worker; - function create(script) - {var t1=caml_jsstring_of_string(script);return new t2(t1)} - function import_scripts(scripts) - {if(Unsafe[1].importScripts === t39) - caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u); - var _eL_=caml_call1(Stdlib_Array[12],scripts); - function _eM_(s){return caml_jsstring_of_string(s)} - var _eN_=caml_call2(Stdlib_Array[15],_eM_,_eL_); - return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eN_)} - function set_onmessage(handler) - {if(Unsafe[1].onmessage === t39) - caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); - function js_handler(ev){return caml_call1(handler,ev.data)} - var t7=caml_js_wrap_callback(js_handler); - return Unsafe[1].onmessage = t7} - function post_message(t10) - {if(Unsafe[1].postMessage === t39) - caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0); - return Unsafe[1].postMessage(t10)} - var - Js_of_ocaml_Worker= - [0,create,import_scripts,set_onmessage,post_message]; - caml_register_global(1654,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); - var webSocket=Unsafe[1].WebSocket; - function is_supported(param){return caml_call1(Optdef[5],webSocket)} - var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported]; - caml_register_global - (1655,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); - var - defaultContextAttributes= - {"alpha":t25, - "depth":t25, - "stencil":t4, - "antialias":t25, - "premultipliedAlpha":t4, - "preserveDrawingBuffer":t4, - "preferLowPowerToHighPerformance":t4, - "failIfMajorPerformanceCaveat":t4}, - webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), - webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), - webglcontextcreationerror= - caml_call1(Event$0[87],cst_webglcontextcreationerror), - Event$2= - [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; - function getContext(t3) - {var ctx=t3.getContext("webgl"); - return caml_call1(Opt[5],ctx)?ctx:t3.getContext("experimental-webgl")} - function getContextWithAttributes(t9,t8) - {var ctx=t9.getContext("webgl",t8); - return caml_call1(Opt[5],ctx)?ctx:t9.getContext("experimental-webgl",t8)} - var - Js_of_ocaml_WebGL= - [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes]; - caml_register_global(1656,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); - function regexp(s) - {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} - function regexp_case_fold(s) - {var t3=caml_jsbytes_of_string(s);return new t11(t3,"gi")} - function regexp_with_flag(s,f) - {var - t7=caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)), - t6=caml_jsbytes_of_string(s); - return new t11(t6,t7)} - function blunt_str_array_get(a,i) - {function _eK_(param){throw [0,Assert_failure,_p_]} - return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eK_))} - function string_match(r,s,i) - {r.lastIndex = i; - var - t11=caml_jsbytes_of_string(s), - _eI_=r.exec(t11), - _eJ_=caml_call2(Opt[3],_eI_,match_result); - return caml_call1(Opt[10],_eJ_)} - function search_forward(r,s,i) - {r.lastIndex = i; - var t15=caml_jsbytes_of_string(s); - function _eF_(t17){return [0,t17.index,t17]} - var _eG_=r.exec(t15),_eH_=caml_call2(Opt[3],_eG_,_eF_); - return caml_call1(Opt[10],_eH_)} - function matched_string(r){return blunt_str_array_get(r,0)} - function matched_group(r,i) - {var _eE_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes); - return caml_call1(Optdef[10],_eE_)} - var t21=new t11("[$]","g"); - function quote_repl(s) - {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} - function global_replace(r,s,s_by) - {r.lastIndex = 0; - var t27=quote_repl(s_by),t28=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t28.replace(r,t27))} - function replace_first(r,s,s_by) - {var - match=r.ignoreCase | 0, - match$0=r.multiline | 0, - flags=match?match$0?"mi":"i":match$0?"m":"", - t32=r.source, - t35=new t11(t32,flags), - t36=quote_repl(s_by), - t37=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t37.replace(t35,t36))} - function list_of_js_array(a) - {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1; - for(;;) - {if(caml_call2(symbol$5,idx,0))return accu; - var - idx$0=idx - 1 | 0, - accu$0=[0,blunt_str_array_get(a,idx),accu], - accu=accu$0, - idx=idx$0; - continue}} - function split(r,s) - {r.lastIndex = 0; - var t42=caml_jsbytes_of_string(s); - return list_of_js_array(t42.split(r))} - function bounded_split(r,s,i) - {r.lastIndex = 0; - var t47=caml_jsbytes_of_string(s); - return list_of_js_array(t47.split(r,i))} - var t48=regexp(cst); - function quote(s) - {var t50=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t50.replace(t48,"\\$&"))} - function regexp_string(s){return regexp(quote(s))} - function regexp_string_case_fold(s){return regexp_case_fold(quote(s))} - var - Js_of_ocaml_Regexp= - [0, - regexp, - regexp_case_fold, - regexp_with_flag, - quote, - regexp_string, - regexp_string_case_fold, - string_match, - search_forward, - search_forward, - matched_string, - matched_group, - global_replace, - replace_first, - split, - bounded_split]; - caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); - var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)]; - function interrupt(param){throw Local_exn} - var plus_re=regexp_string(cst$0),t14=new t11("\\+","g"); - function urldecode_js_string_string(s) - {t14.lastIndex = 0; - return caml_string_of_jsbytes(unescape(s.replace(t14," ")))} - function urldecode(s) - {return caml_string_of_jsbytes - (unescape - (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))} - function urlencode(opt,s) - {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1; - if(with_plus) - {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); - return global_replace(plus_re,s$0,cst_2B)} - return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))} - var - Not_an_http_protocol= - [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)], - default_http_port=80, - default_https_port=443; - function path_of_path_string(s) - {var l=caml_ml_string_length(s); - function aux(i) - {try - {var _eC_=caml_call3(String[30],s,i,47),j=_eC_} - catch(_eD_) - {_eD_ = caml_wrap_exception(_eD_); - if(_eD_ !== Stdlib[8])throw _eD_; - var j=l} - var word=caml_call3(String[14],s,i,j - i | 0); - return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]} - var a=aux(0); - if(a && ! caml_string_notequal(a[1],cst$2)) - {var _eB_=a[2]; - if(! _eB_)return 0; - if(! caml_string_notequal(_eB_[1],cst$3) && ! _eB_[2])return _q_} - return a} - function encode_arguments(l) - {function _ew_(param) - {var - v=param[2], - n=param[1], - _ey_=urlencode(0,v), - _ez_=caml_call2(Stdlib[28],cst$4,_ey_), - _eA_=urlencode(0,n); - return caml_call2(Stdlib[28],_eA_,_ez_)} - var _ex_=caml_call2(Stdlib_List[19],_ew_,l); - return caml_call2(String[6],cst$5,_ex_)} - function decode_arguments_js_string(s) - {var - t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), - t18=s.split(t0), - len=t18.length; - function aux(acc,idx) - {var idx$0=idx; - for(;;) - {if(caml_call2(symbol$5,idx$0,0))return acc; - try - {var - _eo_=idx$0 - 1 | 0, - _ep_= - function(s) - {function _eu_(param) - {var - y=param[2], - x=param[1], - _ev_=urldecode_js_string_string(y); - return [0,urldecode_js_string_string(x),_ev_]} - var - t2=caml_jsstring_of_string(caml_call2(String[1],1,61)), - t5=s.indexOf(t2); - if(caml_call2(symbol$5,t5,0)) - var _et_=t39; - else - var - t7=t5 + 1 | 0, - _es_=s.slice(t7), - _et_=[0,s.slice(0,t5),_es_]; - return caml_call3(Optdef[7],_et_,interrupt,_eu_)}, - _eq_= - aux - ([0,caml_call3(Optdef[7],t18[idx$0],interrupt,_ep_),acc],_eo_); - return _eq_} - catch(_er_) - {_er_ = caml_wrap_exception(_er_); - if(_er_ === Local_exn) - {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue} - throw _er_}}} - return aux(0,len - 1 | 0)} - function decode_arguments(s) - {return decode_arguments_js_string(caml_jsbytes_of_string(s))} - var - t19=caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0), - t24=new t11(t19), - t21$0=caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee), - t26=new t11(t21$0); - function url_of_js_string(s) - {function _d7_(res) - {var - prot_string=caml_call2(Optdef[8],res[1],interrupt), - match=caml_string_of_jsbytes(prot_string.toLowerCase()); - if - (caml_string_notequal(match,cst_file$0) - && - caml_string_notequal(match,cst_file$1)) - {var switch$0=0; - if - (caml_string_notequal(match,cst_http) - && - caml_string_notequal(match,cst_http$0)) - {var switch$1=0; - if - (caml_string_notequal(match,cst_https) - && - caml_string_notequal(match,cst_https$0)) - switch$1 = 1; - if(! switch$1){var ssl=1;switch$0 = 2}} - else - switch$0 = 1; - var switch$2=0; - switch(switch$0) - {case 1:var ssl=0;switch$2 = 1;break; - case 0:break; - default:switch$2 = 1} - if(switch$2) - {var - _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, - path_str= - urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ef_)), - _eg_=function(param){return caml_jsbytes_of_string(cst$8)}, - _eh_= - urldecode_js_string_string(caml_call2(Optdef[8],res[10],_eg_)), - _ei_=function(param){return caml_jsbytes_of_string(cst$9)}, - _ej_= - decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ei_)), - _ek_=path_of_path_string(path_str), - _el_=function(param){return caml_jsbytes_of_string(cst$10)}, - s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_el_)), - _em_= - caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, - url= - [0, - urldecode_js_string_string - (caml_call2(Optdef[8],res[2],interrupt)), - _em_, - _ek_, - path_str, - _ej_, - _eh_], - _en_=ssl?[1,url]:[0,url]; - return [0,_en_]}} - throw Not_an_http_protocol} - function _d8_(param) - {function _d__(res) - {var - path_str= - urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt)); - function _eb_(param){return caml_jsbytes_of_string(cst$11)} - var _ec_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_eb_)); - function _ed_(param){return caml_jsbytes_of_string(cst$12)} - var - _ee_= - decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ed_)); - return [0,[2,[0,path_of_path_string(path_str),path_str,_ee_,_ec_]]]} - function _d$_(param){return 0} - var _ea_=t26.exec(s); - return caml_call3(Opt[7],_ea_,_d$_,_d__)} - var _d9_=t24.exec(s); - return caml_call3(Opt[7],_d9_,_d8_,_d7_)} - function url_of_string(s) - {return url_of_js_string(caml_jsbytes_of_string(s))} - function string_of_url(param) - {switch(param[0]) - {case 0: - var - match=param[1], - frag=match[6], - args=match[5], - path=match[3], - port=match[2], - host=match[1]; - if(caml_string_notequal(frag,cst$13)) - var _du_=urlencode(0,frag),_dv_=caml_call2(Stdlib[28],cst$14,_du_); - else - var _dv_=cst$21; - if(args) - var - _dw_=encode_arguments(args), - _dx_=caml_call2(Stdlib[28],cst$15,_dw_); - else - var _dx_=cst$20; - var - _dy_=caml_call2(Stdlib[28],_dx_,_dv_), - _dz_=function(x){return urlencode(0,x)}, - _dA_=caml_call2(Stdlib_List[19],_dz_,path), - _dB_=caml_call2(String[6],cst$16,_dA_), - _dC_=caml_call2(Stdlib[28],_dB_,_dy_), - _dD_=caml_call2(Stdlib[28],cst$17,_dC_); - if(80 === port) - var _dE_=cst$18; - else - var - _dI_=caml_call1(Stdlib[33],port), - _dE_=caml_call2(Stdlib[28],cst$19,_dI_); - var - _dF_=caml_call2(Stdlib[28],_dE_,_dD_), - _dG_=urlencode(0,host), - _dH_=caml_call2(Stdlib[28],_dG_,_dF_); - return caml_call2(Stdlib[28],cst_http$1,_dH_); - case 1: - var - match$0=param[1], - frag$0=match$0[6], - args$0=match$0[5], - path$0=match$0[3], - port$0=match$0[2], - host$0=match$0[1]; - if(caml_string_notequal(frag$0,cst$22)) - var - _dJ_=urlencode(0,frag$0), - _dK_=caml_call2(Stdlib[28],cst$23,_dJ_); - else - var _dK_=cst$30; - if(args$0) - var - _dL_=encode_arguments(args$0), - _dM_=caml_call2(Stdlib[28],cst$24,_dL_); - else - var _dM_=cst$29; - var - _dN_=caml_call2(Stdlib[28],_dM_,_dK_), - _dO_=function(x){return urlencode(0,x)}, - _dP_=caml_call2(Stdlib_List[19],_dO_,path$0), - _dQ_=caml_call2(String[6],cst$25,_dP_), - _dR_=caml_call2(Stdlib[28],_dQ_,_dN_), - _dS_=caml_call2(Stdlib[28],cst$26,_dR_); - if(443 === port$0) - var _dT_=cst$27; - else - var - _dX_=caml_call1(Stdlib[33],port$0), - _dT_=caml_call2(Stdlib[28],cst$28,_dX_); - var - _dU_=caml_call2(Stdlib[28],_dT_,_dS_), - _dV_=urlencode(0,host$0), - _dW_=caml_call2(Stdlib[28],_dV_,_dU_); - return caml_call2(Stdlib[28],cst_https$1,_dW_); - default: - var - match$1=param[1], - frag$1=match$1[4], - args$1=match$1[3], - path$1=match$1[1]; - if(caml_string_notequal(frag$1,cst$31)) - var - _dY_=urlencode(0,frag$1), - _dZ_=caml_call2(Stdlib[28],cst$32,_dY_); - else - var _dZ_=cst$36; - if(args$1) - var - _d0_=encode_arguments(args$1), - _d1_=caml_call2(Stdlib[28],cst$33,_d0_); - else - var _d1_=cst$35; - var - _d2_=caml_call2(Stdlib[28],_d1_,_dZ_), - _d3_=function(x){return urlencode(0,x)}, - _d4_=caml_call2(Stdlib_List[19],_d3_,path$1), - _d5_=caml_call2(String[6],cst$34,_d4_), - _d6_=caml_call2(Stdlib[28],_d5_,_d2_); - return caml_call2(Stdlib[28],cst_file$2,_d6_)}} - var _r_=caml_call1(Optdef[2],_j_.location); - if(caml_call1(Optdef[5],_r_)) - var _s_=_j_.location; - else - var - t42=function(param,_dt_){return 0}, - t41$0=function(param,_ds_){return 0}, - t40=function(param){return 0}, - _s_= - {"href":"", - "protocol":"", - "host":"", - "hostname":"", - "port":"", - "pathname":"", - "search":"", - "hash":"", - "origin":t39, - "reload":caml_js_wrap_meth_callback(t40), - "replace":caml_js_wrap_meth_callback(t41$0), - "assign":caml_js_wrap_meth_callback(t42)}; - var - host=urldecode_js_string_string(_s_.hostname), - protocol=urldecode_js_string_string(_s_.protocol), - _t_=0, - port= - function(param) - {try - {var _dq_=[0,caml_int_of_string(caml_string_of_jsbytes(_s_.port))]; - return _dq_} - catch(_dr_) - {_dr_ = caml_wrap_exception(_dr_); - if(_dr_[1] === Stdlib[7])return 0; - throw _dr_}} - (_t_), - path_string=urldecode_js_string_string(_s_.pathname), - path=path_of_path_string(path_string), - t49=_s_.search; - if(t49.charAt(0) === "?") - var t52=_s_.search,_u_=t52.slice(1); - else - var _u_=_s_.search; - var arguments$0=decode_arguments_js_string(_u_); - function get_fragment(param) - {function _dn_(res){return caml_string_of_jsstring(res[1])} - function _do_(param){return cst$37} - var t57=new t11("#(.*)"),t58=_s_.href,_dp_=t58.match(t57); - return caml_call3(Opt[7],_dp_,_do_,_dn_)} - function set_fragment(s) - {var t59=caml_jsbytes_of_string(urlencode(0,s));return _s_.hash = t59} - function get$2(param){return url_of_js_string(_s_.href)} - function set$0(u) - {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} - var - as_string=urldecode_js_string_string(_s_.href), - Js_of_ocaml_Url= - [0, - urldecode, - urlencode, - default_http_port, - default_https_port, - path_of_path_string, - encode_arguments, - decode_arguments, - url_of_string, - string_of_url, - [0, - host, - port, - protocol, - path_string, - path, - arguments$0, - get_fragment, - set_fragment, - get$2, - set$0, - as_string]]; - caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url"); - var Js_of_ocaml_Lib_version=[0,s,git_version]; - caml_register_global - (1660,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); - function update_file(name,content) - {var oc=caml_call1(Stdlib[60],name); - caml_call2(Stdlib[66],oc,content); - return caml_call1(Stdlib[76],oc)} - function set_channel_flusher(out_channel,f) - {var - f$0= - caml_js_wrap_callback - (function(s){return caml_call1(f,caml_string_of_jsbytes(s))}); - return runtime.caml_ml_set_channel_output(out_channel,f$0)} - function set_channel_filler(in_channel,f) - {var f$0=caml_js_wrap_callback(f); - return runtime.caml_ml_set_channel_refill(in_channel,f$0)} - function mount(path,f) - {return runtime.caml_mount_autoload - (path, - caml_js_wrap_callback - (function(prefix,path){return caml_call2(f,prefix,path)}))} - function unmount(path){return runtime.caml_unmount(path)} - if(caml_call2(String[62],git_version,cst$38)) - var js_of_ocaml_version=s; - else - var - _co_=caml_call2(Stdlib[28],cst$41,git_version), - js_of_ocaml_version=caml_call2(Stdlib[28],s,_co_); - var - _v_=runtime.caml_create_file, - _w_=runtime.caml_read_file_content, - Js_of_ocaml_Sys_js= - [0, - set_channel_flusher, - set_channel_filler, - function(_dm_){return runtime.caml_list_mount_point(_dm_)}, - unmount, - mount, - _w_, - _v_, - update_file, - js_of_ocaml_version]; - caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); - function empty_resize_observer_options(param){return {}} - var t2$0=Unsafe[1].ResizeObserver; - function is_supported$0(param){return caml_call1(Optdef[5],t2$0)} - function observe(node,f,box,param) - {var t1=caml_js_wrap_callback(f),t4=new t2$0(t1); - if(box) - {var box$0=box[1],t8={};t8.box = box$0;t4.observe(node,t8)} - else - t4.observe(node); - return t4} - var - Js_of_ocaml_ResizeObserver= - [0,empty_resize_observer_options,t2$0,is_supported$0,observe]; - caml_register_global - (1662,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); - var t4$1=Unsafe[1].PerformanceObserver; - function is_supported$1(param){return caml_call1(Optdef[5],t4$1)} - function observe$0(entry_types,f) - {var - _dl_= - caml_call1 - (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), - t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), - t5={}; - t5.entryTypes = t1; - var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); - t6.observe(t5); - return t6} - var Js_of_ocaml_PerformanceObserve=[0,t4$1,is_supported$1,observe$0]; - caml_register_global - (1663,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); - function empty_mutation_observer_init(param){return {}} - var t2$1=Unsafe[1].MutationObserver; - function is_supported$2(param){return caml_call1(Optdef[5],t2$1)} - function observe$1 - (node, - f, - child_list, - attributes, - character_data, - subtree, - attribute_old_value, - character_data_old_value, - attribute_filter, - param) - {function opt_iter(x,f) - {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0} - var t1=caml_js_wrap_callback(f),t19=new t2$1(t1),t18={}; - opt_iter(child_list,function(t3){return t18.childList = t3}); - opt_iter(attributes,function(t5){return t18.attributes = t5}); - opt_iter(character_data,function(t7){return t18.characterData = t7}); - opt_iter(subtree,function(t9){return t18.subtree = t9}); - opt_iter - (attribute_old_value,function(t11){return t18.attributeOldValue = t11}); - opt_iter - (character_data_old_value, - function(t13){return t18.characterDataOldValue = t13}); - opt_iter - (attribute_filter, - function(l) - {var t15=caml_js_from_array(caml_call1(Stdlib_Array[12],l)); - return t18.attributeFilter = t15}); - t19.observe(node,t18); - return t19} - var - Js_of_ocaml_MutationObserver= - [0,empty_mutation_observer_init,t2$1,is_supported$2,observe$1]; - caml_register_global - (1664,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); - var t1=Unsafe[1].Object; - function create$0(param){return new t1()} - function add$0(t,k,v){return t[k.concat("_")] = v} - function remove(t,k){return delete t[k.concat("_")]} - function find(t,k){return t[k.concat("_")]} - function keys(t) - {var - t10=Unsafe[1].Object, - t11=t10.keys(t), - res=[0,0], - _dh_=t11.length - 1 | 0, - _dg_=0; - if(! (_dh_ < 0)) - {var i=_dg_; - for(;;) - {var - _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, - t15=caml_call2(Optdef[8],t11[i],_di_), - t14=t15.length - 1 | 0, - _dj_=res[1]; - res[1] = [0,t15.substring(0,t14),_dj_]; - var _dk_=i + 1 | 0; - if(_dh_ !== i){var i=_dk_;continue} - break}} - return caml_call1(Stdlib_List[9],res[1])} - var Js_of_ocaml_Jstable=[0,create$0,add$0,remove,find,keys]; - caml_register_global(1665,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); - var t11$1=Unsafe[1].JSON; - function reviver(this$0,key,value) - {if(typeof value === "string")return caml_string_of_jsbytes(value); - if - (value instanceof array_length - && - 4 - === - value.length - && - 255 - === - value[0]) - return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); - return value} - var t3$0=caml_js_wrap_meth_callback(reviver); - function unsafe_input(t2){return t11$1.parse(t2,t3$0)} - var mlInt64_constr=t5.constructor; - function t10(key,value) - {var _df_=Stdlib_Obj[13]; - return caml_call2(symbol$8,runtime.caml_obj_tag(value),_df_) - ?caml_jsbytes_of_string(value) - :value instanceof mlInt64_constr - ?caml_js_from_array([0,255,value.lo,value.mi,value.hi]) - :value} - function output(t9){return t11$1.stringify(t9,t10)} - var Js_of_ocaml_Json=[0,output,unsafe_input]; - caml_register_global(1667,Js_of_ocaml_Json,"Js_of_ocaml__Json"); - function string_of_name(param) - {var _de_=param; - if(74 <= _de_) - {if(111 <= _de_) - switch(_de_) - {case 111:return cst_palevioletred; - case 112:return cst_papayawhip; - case 113:return cst_peachpuff; - case 114:return cst_peru; - case 115:return cst_pink; - case 116:return cst_plum; - case 117:return cst_powderblue; - case 118:return cst_purple; - case 119:return cst_red; - case 120:return cst_rosybrown; - case 121:return cst_royalblue; - case 122:return cst_saddlebrown; - case 123:return cst_salmon; - case 124:return cst_sandybrown; - case 125:return cst_seagreen; - case 126:return cst_seashell; - case 127:return cst_sienna; - case 128:return cst_silver; - case 129:return cst_skyblue; - case 130:return cst_slateblue; - case 131:return cst_slategray; - case 132:return cst_slategrey; - case 133:return cst_snow; - case 134:return cst_springgreen; - case 135:return cst_steelblue; - case 136:return cst_tan; - case 137:return cst_teal; - case 138:return cst_thistle; - case 139:return cst_tomato; - case 140:return cst_turquoise; - case 141:return cst_violet; - case 142:return cst_wheat; - case 143:return cst_white; - case 144:return cst_whitesmoke; - case 145:return cst_yellow; - default:return cst_yellowgreen} - switch(_de_) - {case 74:return cst_lightpink; - case 75:return cst_lightsalmon; - case 76:return cst_lightseagreen; - case 77:return cst_lightskyblue; - case 78:return cst_lightslategray; - case 79:return cst_lightslategrey; - case 80:return cst_lightsteelblue; - case 81:return cst_lightyellow; - case 82:return cst_lime; - case 83:return cst_limegreen; - case 84:return cst_linen; - case 85:return cst_magenta; - case 86:return cst_maroon; - case 87:return cst_mediumaquamarine; - case 88:return cst_mediumblue; - case 89:return cst_mediumorchid; - case 90:return cst_mediumpurple; - case 91:return cst_mediumseagreen; - case 92:return cst_mediumslateblue; - case 93:return cst_mediumspringgreen; - case 94:return cst_mediumturquoise; - case 95:return cst_mediumvioletred; - case 96:return cst_midnightblue; - case 97:return cst_mintcream; - case 98:return cst_mistyrose; - case 99:return cst_moccasin; - case 100:return cst_navajowhite; - case 101:return cst_navy; - case 102:return cst_oldlace; - case 103:return cst_olive; - case 104:return cst_olivedrab; - case 105:return cst_orange; - case 106:return cst_orangered; - case 107:return cst_orchid; - case 108:return cst_palegoldenrod; - case 109:return cst_palegreen; - default:return cst_paleturquoise}} - if(37 <= _de_) - switch(_de_) - {case 37:return cst_darkslategrey; - case 38:return cst_darkturquoise; - case 39:return cst_darkviolet; - case 40:return cst_deeppink; - case 41:return cst_deepskyblue; - case 42:return cst_dimgray; - case 43:return cst_dimgrey; - case 44:return cst_dodgerblue; - case 45:return cst_firebrick; - case 46:return cst_floralwhite; - case 47:return cst_forestgreen; - case 48:return cst_fuchsia; - case 49:return cst_gainsboro; - case 50:return cst_ghostwhite; - case 51:return cst_gold; - case 52:return cst_goldenrod; - case 53:return cst_gray; - case 54:return cst_grey; - case 55:return cst_green; - case 56:return cst_greenyellow; - case 57:return cst_honeydew; - case 58:return cst_hotpink; - case 59:return cst_indianred; - case 60:return cst_indigo; - case 61:return cst_ivory; - case 62:return cst_khaki; - case 63:return cst_lavender; - case 64:return cst_lavenderblush; - case 65:return cst_lawngreen; - case 66:return cst_lemonchiffon; - case 67:return cst_lightblue; - case 68:return cst_lightcoral; - case 69:return cst_lightcyan; - case 70:return cst_lightgoldenrodyellow; - case 71:return cst_lightgray; - case 72:return cst_lightgreen; - default:return cst_lightgrey} - switch(_de_) - {case 0:return cst_aliceblue; - case 1:return cst_antiquewhite; - case 2:return cst_aqua; - case 3:return cst_aquamarine; - case 4:return cst_azure; - case 5:return cst_beige; - case 6:return cst_bisque; - case 7:return cst_black; - case 8:return cst_blanchedalmond; - case 9:return cst_blue; - case 10:return cst_blueviolet; - case 11:return cst_brown; - case 12:return cst_burlywood; - case 13:return cst_cadetblue; - case 14:return cst_chartreuse; - case 15:return cst_chocolate; - case 16:return cst_coral; - case 17:return cst_cornflowerblue; - case 18:return cst_cornsilk; - case 19:return cst_crimson; - case 20:return cst_cyan; - case 21:return cst_darkblue; - case 22:return cst_darkcyan; - case 23:return cst_darkgoldenrod; - case 24:return cst_darkgray; - case 25:return cst_darkgreen; - case 26:return cst_darkgrey; - case 27:return cst_darkkhaki; - case 28:return cst_darkmagenta; - case 29:return cst_darkolivegreen; - case 30:return cst_darkorange; - case 31:return cst_darkorchid; - case 32:return cst_darkred; - case 33:return cst_darksalmon; - case 34:return cst_darkseagreen; - case 35:return cst_darkslateblue; - default:return cst_darkslategray}} - function name_of_string(s) - {var switch$0=caml_string_compare(s,cst_lightgrey$0); - if(0 <= switch$0) - {if(! (0 < switch$0))return 73; - var switch$1=caml_string_compare(s,cst_paleturquoise$0); - if(0 <= switch$1) - {if(! (0 < switch$1))return 110; - var switch$2=caml_string_compare(s,cst_skyblue$0); - if(0 <= switch$2) - {if(! (0 < switch$2))return 129; - var switch$3=caml_string_compare(s,cst_thistle$0); - if(0 <= switch$3) - {if(! (0 < switch$3))return 138; - if(! caml_string_notequal(s,cst_tomato$0))return 139; - if(! caml_string_notequal(s,cst_turquoise$0))return 140; - if(! caml_string_notequal(s,cst_violet$0))return 141; - if(! caml_string_notequal(s,cst_wheat$0))return 142; - if(! caml_string_notequal(s,cst_white$0))return 143; - if(! caml_string_notequal(s,cst_whitesmoke$0))return 144; - if(! caml_string_notequal(s,cst_yellow$0))return 145; - if(! caml_string_notequal(s,cst_yellowgreen$0))return 146} - else - {if(! caml_string_notequal(s,cst_slateblue$0))return 130; - if(! caml_string_notequal(s,cst_slategray$0))return 131; - if(! caml_string_notequal(s,cst_slategrey$0))return 132; - if(! caml_string_notequal(s,cst_snow$0))return 133; - if(! caml_string_notequal(s,cst_springgreen$0))return 134; - if(! caml_string_notequal(s,cst_steelblue$0))return 135; - if(! caml_string_notequal(s,cst_tan$0))return 136; - if(! caml_string_notequal(s,cst_teal$0))return 137}} - else - {var switch$4=caml_string_compare(s,cst_rosybrown$0); - if(0 <= switch$4) - {if(! (0 < switch$4))return 120; - if(! caml_string_notequal(s,cst_royalblue$0))return 121; - if(! caml_string_notequal(s,cst_saddlebrown$0))return 122; - if(! caml_string_notequal(s,cst_salmon$0))return 123; - if(! caml_string_notequal(s,cst_sandybrown$0))return 124; - if(! caml_string_notequal(s,cst_seagreen$0))return 125; - if(! caml_string_notequal(s,cst_seashell$0))return 126; - if(! caml_string_notequal(s,cst_sienna$0))return 127; - if(! caml_string_notequal(s,cst_silver$0))return 128} - else - {if(! caml_string_notequal(s,cst_palevioletred$0))return 111; - if(! caml_string_notequal(s,cst_papayawhip$0))return 112; - if(! caml_string_notequal(s,cst_peachpuff$0))return 113; - if(! caml_string_notequal(s,cst_peru$0))return 114; - if(! caml_string_notequal(s,cst_pink$0))return 115; - if(! caml_string_notequal(s,cst_plum$0))return 116; - if(! caml_string_notequal(s,cst_powderblue$0))return 117; - if(! caml_string_notequal(s,cst_purple$0))return 118; - if(! caml_string_notequal(s,cst_red$0))return 119}}} - else - {var switch$5=caml_string_compare(s,cst_mediumslateblue$0); - if(0 <= switch$5) - {if(! (0 < switch$5))return 92; - var switch$6=caml_string_compare(s,cst_navy$0); - if(0 <= switch$6) - {if(! (0 < switch$6))return 101; - if(! caml_string_notequal(s,cst_oldlace$0))return 102; - if(! caml_string_notequal(s,cst_olive$0))return 103; - if(! caml_string_notequal(s,cst_olivedrab$0))return 104; - if(! caml_string_notequal(s,cst_orange$0))return 105; - if(! caml_string_notequal(s,cst_orangered$0))return 106; - if(! caml_string_notequal(s,cst_orchid$0))return 107; - if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108; - if(! caml_string_notequal(s,cst_palegreen$0))return 109} - else - {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93; - if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94; - if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95; - if(! caml_string_notequal(s,cst_midnightblue$0))return 96; - if(! caml_string_notequal(s,cst_mintcream$0))return 97; - if(! caml_string_notequal(s,cst_mistyrose$0))return 98; - if(! caml_string_notequal(s,cst_moccasin$0))return 99; - if(! caml_string_notequal(s,cst_navajowhite$0))return 100}} - else - {var switch$7=caml_string_compare(s,cst_limegreen$0); - if(0 <= switch$7) - {if(! (0 < switch$7))return 83; - if(! caml_string_notequal(s,cst_linen$0))return 84; - if(! caml_string_notequal(s,cst_magenta$0))return 85; - if(! caml_string_notequal(s,cst_maroon$0))return 86; - if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87; - if(! caml_string_notequal(s,cst_mediumblue$0))return 88; - if(! caml_string_notequal(s,cst_mediumorchid$0))return 89; - if(! caml_string_notequal(s,cst_mediumpurple$0))return 90; - if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91} - else - {if(! caml_string_notequal(s,cst_lightpink$0))return 74; - if(! caml_string_notequal(s,cst_lightsalmon$0))return 75; - if(! caml_string_notequal(s,cst_lightseagreen$0))return 76; - if(! caml_string_notequal(s,cst_lightskyblue$0))return 77; - if(! caml_string_notequal(s,cst_lightslategray$0))return 78; - if(! caml_string_notequal(s,cst_lightslategrey$0))return 79; - if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80; - if(! caml_string_notequal(s,cst_lightyellow$0))return 81; - if(! caml_string_notequal(s,cst_lime$0))return 82}}}} - else - {var switch$8=caml_string_compare(s,cst_darkslategray$0); - if(0 <= switch$8) - {if(! (0 < switch$8))return 36; - var switch$9=caml_string_compare(s,cst_greenyellow$0); - if(0 <= switch$9) - {if(! (0 < switch$9))return 56; - var switch$10=caml_string_compare(s,cst_lavenderblush$0); - if(0 <= switch$10) - {if(! (0 < switch$10))return 64; - if(! caml_string_notequal(s,cst_lawngreen$0))return 65; - if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66; - if(! caml_string_notequal(s,cst_lightblue$0))return 67; - if(! caml_string_notequal(s,cst_lightcoral$0))return 68; - if(! caml_string_notequal(s,cst_lightcyan$0))return 69; - if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0)) - return 70; - if(! caml_string_notequal(s,cst_lightgray$0))return 71; - if(! caml_string_notequal(s,cst_lightgreen$0))return 72} - else - {if(! caml_string_notequal(s,cst_grey$0))return 54; - if(! caml_string_notequal(s,cst_honeydew$0))return 57; - if(! caml_string_notequal(s,cst_hotpink$0))return 58; - if(! caml_string_notequal(s,cst_indianred$0))return 59; - if(! caml_string_notequal(s,cst_indigo$0))return 60; - if(! caml_string_notequal(s,cst_ivory$0))return 61; - if(! caml_string_notequal(s,cst_khaki$0))return 62; - if(! caml_string_notequal(s,cst_lavender$0))return 63}} - else - {var switch$11=caml_string_compare(s,cst_floralwhite$0); - if(0 <= switch$11) - {if(! (0 < switch$11))return 46; - if(! caml_string_notequal(s,cst_forestgreen$0))return 47; - if(! caml_string_notequal(s,cst_fuchsia$0))return 48; - if(! caml_string_notequal(s,cst_gainsboro$0))return 49; - if(! caml_string_notequal(s,cst_ghostwhite$0))return 50; - if(! caml_string_notequal(s,cst_gold$0))return 51; - if(! caml_string_notequal(s,cst_goldenrod$0))return 52; - if(! caml_string_notequal(s,cst_gray$0))return 53; - if(! caml_string_notequal(s,cst_green$0))return 55} - else - {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37; - if(! caml_string_notequal(s,cst_darkturquoise$0))return 38; - if(! caml_string_notequal(s,cst_darkviolet$0))return 39; - if(! caml_string_notequal(s,cst_deeppink$0))return 40; - if(! caml_string_notequal(s,cst_deepskyblue$0))return 41; - if(! caml_string_notequal(s,cst_dimgray$0))return 42; - if(! caml_string_notequal(s,cst_dimgrey$0))return 43; - if(! caml_string_notequal(s,cst_dodgerblue$0))return 44; - if(! caml_string_notequal(s,cst_firebrick$0))return 45}}} - else - {var switch$12=caml_string_compare(s,cst_cornsilk$0); - if(0 <= switch$12) - {if(! (0 < switch$12))return 18; - var switch$13=caml_string_compare(s,cst_darkkhaki$0); - if(0 <= switch$13) - {if(! (0 < switch$13))return 27; - if(! caml_string_notequal(s,cst_darkmagenta$0))return 28; - if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29; - if(! caml_string_notequal(s,cst_darkorange$0))return 30; - if(! caml_string_notequal(s,cst_darkorchid$0))return 31; - if(! caml_string_notequal(s,cst_darkred$0))return 32; - if(! caml_string_notequal(s,cst_darksalmon$0))return 33; - if(! caml_string_notequal(s,cst_darkseagreen$0))return 34; - if(! caml_string_notequal(s,cst_darkslateblue$0))return 35} - else - {if(! caml_string_notequal(s,cst_crimson$0))return 19; - if(! caml_string_notequal(s,cst_cyan$0))return 20; - if(! caml_string_notequal(s,cst_darkblue$0))return 21; - if(! caml_string_notequal(s,cst_darkcyan$0))return 22; - if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23; - if(! caml_string_notequal(s,cst_darkgray$0))return 24; - if(! caml_string_notequal(s,cst_darkgreen$0))return 25; - if(! caml_string_notequal(s,cst_darkgrey$0))return 26}} - else - {var switch$14=caml_string_compare(s,cst_blue$0); - if(0 <= switch$14) - {if(! (0 < switch$14))return 9; - if(! caml_string_notequal(s,cst_blueviolet$0))return 10; - if(! caml_string_notequal(s,cst_brown$0))return 11; - if(! caml_string_notequal(s,cst_burlywood$0))return 12; - if(! caml_string_notequal(s,cst_cadetblue$0))return 13; - if(! caml_string_notequal(s,cst_chartreuse$0))return 14; - if(! caml_string_notequal(s,cst_chocolate$0))return 15; - if(! caml_string_notequal(s,cst_coral$0))return 16; - if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17} - else - {if(! caml_string_notequal(s,cst_aliceblue$0))return 0; - if(! caml_string_notequal(s,cst_antiquewhite$0))return 1; - if(! caml_string_notequal(s,cst_aqua$0))return 2; - if(! caml_string_notequal(s,cst_aquamarine$0))return 3; - if(! caml_string_notequal(s,cst_azure$0))return 4; - if(! caml_string_notequal(s,cst_beige$0))return 5; - if(! caml_string_notequal(s,cst_bisque$0))return 6; - if(! caml_string_notequal(s,cst_black$0))return 7; - if(! caml_string_notequal(s,cst_blanchedalmond$0))return 8}}}} - var _dd_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); - throw [0,Stdlib[6],_dd_]} - function rgb_of_name(param) - {var _dc_=param; - if(74 <= _dc_) - {if(111 <= _dc_) - switch(_dc_) - {case 111:return _bq_; - case 112:return _br_; - case 113:return _bs_; - case 114:return _bt_; - case 115:return _bu_; - case 116:return _bv_; - case 117:return _bw_; - case 118:return _bx_; - case 119:return _by_; - case 120:return _bz_; - case 121:return _bA_; - case 122:return _bB_; - case 123:return _bC_; - case 124:return _bD_; - case 125:return _bE_; - case 126:return _bF_; - case 127:return _bG_; - case 128:return _bH_; - case 129:return _bI_; - case 130:return _bJ_; - case 131:return _bK_; - case 132:return _bL_; - case 133:return _bM_; - case 134:return _bN_; - case 135:return _bO_; - case 136:return _bP_; - case 137:return _bQ_; - case 138:return _bR_; - case 139:return _bS_; - case 140:return _bT_; - case 141:return _bU_; - case 142:return _bV_; - case 143:return _bW_; - case 144:return _bX_; - case 145:return _bY_; - default:return _bZ_} - switch(_dc_) - {case 74:return _aR_; - case 75:return _aS_; - case 76:return _aT_; - case 77:return _aU_; - case 78:return _aV_; - case 79:return _aW_; - case 80:return _aX_; - case 81:return _aY_; - case 82:return _aZ_; - case 83:return _a0_; - case 84:return _a1_; - case 85:return _a2_; - case 86:return _a3_; - case 87:return _a4_; - case 88:return _a5_; - case 89:return _a6_; - case 90:return _a7_; - case 91:return _a8_; - case 92:return _a9_; - case 93:return _a__; - case 94:return _a$_; - case 95:return _ba_; - case 96:return _bb_; - case 97:return _bc_; - case 98:return _bd_; - case 99:return _be_; - case 100:return _bf_; - case 101:return _bg_; - case 102:return _bh_; - case 103:return _bi_; - case 104:return _bj_; - case 105:return _bk_; - case 106:return _bl_; - case 107:return _bm_; - case 108:return _bn_; - case 109:return _bo_; - default:return _bp_}} - if(37 <= _dc_) - switch(_dc_) - {case 37:return _ag_; - case 38:return _ah_; - case 39:return _ai_; - case 40:return _aj_; - case 41:return _ak_; - case 42:return _al_; - case 43:return _am_; - case 44:return _an_; - case 45:return _ao_; - case 46:return _ap_; - case 47:return _aq_; - case 48:return _ar_; - case 49:return _as_; - case 50:return _at_; - case 51:return _au_; - case 52:return _av_; - case 53:return _aw_; - case 54:return _ax_; - case 55:return _ay_; - case 56:return _az_; - case 57:return _aA_; - case 58:return _aB_; - case 59:return _aC_; - case 60:return _aD_; - case 61:return _aE_; - case 62:return _aF_; - case 63:return _aG_; - case 64:return _aH_; - case 65:return _aI_; - case 66:return _aJ_; - case 67:return _aK_; - case 68:return _aL_; - case 69:return _aM_; - case 70:return _aN_; - case 71:return _aO_; - case 72:return _aP_; - default:return _aQ_} - switch(_dc_) - {case 0:return _x_; - case 1:return _y_; - case 2:return _z_; - case 3:return _A_; - case 4:return _B_; - case 5:return _C_; - case 6:return _D_; - case 7:return _E_; - case 8:return _F_; - case 9:return _G_; - case 10:return _H_; - case 11:return _I_; - case 12:return _J_; - case 13:return _K_; - case 14:return _L_; - case 15:return _M_; - case 16:return _N_; - case 17:return _O_; - case 18:return _P_; - case 19:return _Q_; - case 20:return _R_; - case 21:return _S_; - case 22:return _T_; - case 23:return _U_; - case 24:return _V_; - case 25:return _W_; - case 26:return _X_; - case 27:return _Y_; - case 28:return _Z_; - case 29:return ___; - case 30:return _$_; - case 31:return _aa_; - case 32:return _ab_; - case 33:return _ac_; - case 34:return _ad_; - case 35:return _ae_; - default:return _af_}} - function rgb(a,r,g,b) - {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]} - function hsl(a,h,s,l) - {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]} - function string_of_t(param) - {switch(param[0]) - {case 0:var n=param[1];return string_of_name(n); - case 1: - var match=param[1],b=match[3],g=match[2],r=match[1]; - return caml_call4(Stdlib_Printf[4],_b0_,r,g,b); - case 2: - var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1]; - return caml_call4(Stdlib_Printf[4],_b1_,r$0,g$0,b$0); - case 3: - var - match$1=param[1], - a=match$1[4], - b$1=match$1[3], - g$1=match$1[2], - r$1=match$1[1]; - return caml_call5(Stdlib_Printf[4],_b2_,r$1,g$1,b$1,a); - case 4: - var - match$2=param[1], - a$0=match$2[4], - b$2=match$2[3], - g$2=match$2[2], - r$2=match$2[1]; - return caml_call5(Stdlib_Printf[4],_b3_,r$2,g$2,b$2,a$0); - case 5: - var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1]; - return caml_call4(Stdlib_Printf[4],_b4_,h,s,l); - default: - var - match$4=param[1], - a$1=match$4[4], - l$0=match$4[3], - s$0=match$4[2], - h$0=match$4[1]; - return caml_call5(Stdlib_Printf[4],_b5_,h$0,s$0,l$0,a$1)}} - function hex_of_rgb(param) - {var blue=param[3],green=param[2],red=param[1]; - function in_range(i) - {var - _c__=caml_call2(symbol$5,i,0), - _c$_=_c__ || caml_call2(symbol$9,i,255); - if(_c$_) - {var - _da_=caml_call1(Stdlib[33],i), - _db_=caml_call2(Stdlib[28],_da_,cst_is_out_of_valid_range); - throw [0,Stdlib[6],_db_]} - return _c$_} - in_range(red); - in_range(green); - in_range(blue); - return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} - function js_t_of_js_string(s) - {var - t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), - t13=new t11(t0), - t2=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0), - t17=new t11(t2), - t4=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d), - t15=new t11(t4), - t6=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0), - t19=new t11(t6), - t8=caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d), - t21=new t11(t8), - t10=caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d), - t23=new t11(t10); - if - (! - (t13.test(s) | 0) - && - ! - (t15.test(s) | 0) - && - ! - (t17.test(s) | 0) - && - ! - (t19.test(s) | 0) - && - ! - (t21.test(s) | 0) - && - ! - (t23.test(s) | 0)) - {var _c7_=caml_string_of_jsstring(s); - if(caml_call2(Stdlib_List[36],_c7_,_b7_))return s; - var - _c8_=caml_string_of_jsstring(s), - _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); - throw [0,Stdlib[6],_c9_]} - return s} - function js(c) - {if(0 === c[0]) - {var n=c[1];return caml_jsstring_of_string(string_of_name(n))} - return caml_jsstring_of_string(string_of_t(c))} - function ml(c) - {var s=caml_string_of_jsstring(c); - try - {var _cU_=[0,name_of_string(s)];return _cU_} - catch(_cV_) - {_cV_ = caml_wrap_exception(_cV_); - if(_cV_[1] === Stdlib[6]) - {var - fail= - function(param) - {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); - throw [0,Stdlib[6],_c6_]}, - re_rgb=regexp(cst_rgba_d_d_d_d_d), - re_rgb_pct=regexp(cst_rgba_d_d_d_d_d$0), - re_hsl=regexp(cst_hsla_d_d_d_d_d), - i_of_s_o= - function(param) - {if(param) - {var i=param[1]; - try - {var _c4_=caml_int_of_string(i);return _c4_} - catch(_c5_) - {_c5_ = caml_wrap_exception(_c5_); - if(_c5_[1] === Stdlib[6]) - var s=_c5_[2]; - else - {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[2]} - var - _c1_=caml_call2(Stdlib[28],cst$39,s), - _c2_=caml_call2(Stdlib[28],i,_c1_), - _c3_=caml_call2(Stdlib[28],cst_color_conversion_error,_c2_); - throw [0,Stdlib[6],_c3_]}} - return fail(0)}, - f_of_s= - function(f) - {try - {var _cZ_=caml_float_of_string(f);return _cZ_} - catch(_c0_) - {_c0_ = caml_wrap_exception(_c0_); - if(_c0_[1] === Stdlib[6]) - var s=_c0_[2]; - else - {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[2]} - var - _cW_=caml_call2(Stdlib[28],cst$40,s), - _cX_=caml_call2(Stdlib[28],f,_cW_), - _cY_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cX_); - throw [0,Stdlib[6],_cY_]}}, - match=string_match(re_rgb,s,0); - if(match) - {var - r=match[1], - red=matched_group(r,2), - green=matched_group(r,3), - blue=matched_group(r,4), - alpha=matched_group(r,5), - match$0=matched_group(r,1); - if(match$0) - {var _cC_=match$0[1]; - if(! caml_string_notequal(_cC_,cst_rgb)) - {if(alpha)return fail(0); - var _cG_=i_of_s_o(blue),_cH_=i_of_s_o(green); - return [1,[0,i_of_s_o(red),_cH_,_cG_]]} - if(! caml_string_notequal(_cC_,cst_rgba)) - {if(alpha) - {var - a=alpha[1], - _cD_=f_of_s(a), - _cE_=i_of_s_o(blue), - _cF_=i_of_s_o(green); - return [3,[0,i_of_s_o(red),_cF_,_cE_,_cD_]]} - return fail(0)}} - return fail(0)} - var match$1=string_match(re_rgb_pct,s,0); - if(match$1) - {var - r$0=match$1[1], - red$0=matched_group(r$0,2), - green$0=matched_group(r$0,3), - blue$0=matched_group(r$0,4), - alpha$0=matched_group(r$0,5), - match$2=matched_group(r$0,1); - if(match$2) - {var _cI_=match$2[1]; - if(! caml_string_notequal(_cI_,cst_rgb$0)) - {if(alpha$0)return fail(0); - var _cM_=i_of_s_o(blue$0),_cN_=i_of_s_o(green$0); - return [2,[0,i_of_s_o(red$0),_cN_,_cM_]]} - if(! caml_string_notequal(_cI_,cst_rgba$0)) - {if(alpha$0) - {var - a$0=alpha$0[1], - _cJ_=f_of_s(a$0), - _cK_=i_of_s_o(blue$0), - _cL_=i_of_s_o(green$0); - return [4,[0,i_of_s_o(red$0),_cL_,_cK_,_cJ_]]} - return fail(0)}} - return fail(0)} - var match$3=string_match(re_hsl,s,0); - if(match$3) - {var - r$1=match$3[1], - red$1=matched_group(r$1,2), - green$1=matched_group(r$1,3), - blue$1=matched_group(r$1,4), - alpha$1=matched_group(r$1,5), - match$4=matched_group(r$1,1); - if(match$4) - {var _cO_=match$4[1]; - if(! caml_string_notequal(_cO_,cst_hsl)) - {if(alpha$1)return fail(0); - var _cS_=i_of_s_o(blue$1),_cT_=i_of_s_o(green$1); - return [5,[0,i_of_s_o(red$1),_cT_,_cS_]]} - if(! caml_string_notequal(_cO_,cst_hsla)) - {if(alpha$1) - {var - a$1=alpha$1[1], - _cP_=f_of_s(a$1), - _cQ_=i_of_s_o(blue$1), - _cR_=i_of_s_o(green$1); - return [6,[0,i_of_s_o(red$1),_cR_,_cQ_,_cP_]]} - return fail(0)}} - return fail(0)} - return fail(0)} - throw _cV_}} - function string_of_t$0(param) - {if(typeof param === "number") - return cst_0; - else - switch(param[0]) - {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_b8_,f,cst_em$0); - case 1: - var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex); - case 2: - var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_b__,f$1,cst_px); - case 3: - var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_b$_,f$2,cst_gd); - case 4: - var f$3=param[1]; - return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); - case 5: - var f$4=param[1]; - return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); - case 6: - var f$5=param[1]; - return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); - case 7: - var f$6=param[1]; - return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); - case 8: - var f$7=param[1]; - return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); - case 9: - var f$8=param[1]; - return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); - case 10: - var f$9=param[1]; - return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); - case 11: - var f$10=param[1]; - return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); - case 12: - var f$11=param[1]; - return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); - default: - var f$12=param[1]; - return caml_call3(Stdlib_Printf[4],_cj_,f$12,cst_pc)}} - function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))} - function ml$0(t) - {var s=caml_string_of_jsstring(t); - if(caml_call2(String[62],s,cst_0$0))return 0; - function fail(param) - {var _cB_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); - throw [0,Stdlib[6],_cB_]} - var re=regexp(cst_d_d_s_S),match=string_match(re,s,0); - if(match) - {var r=match[1],match$0=matched_group(r,1); - if(match$0) - {var f=match$0[1]; - try - {var _cz_=caml_float_of_string(f)} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Stdlib[6]) - {var - s$0=exn[2], - _cy_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); - throw [0,Stdlib[6],_cy_]} - throw exn} - var f$0=_cz_} - else - var f$0=fail(0); - var match$1=matched_group(r,2); - if(match$1) - {var _cA_=match$1[1],switch$0=caml_string_compare(_cA_,cst_pc$0); - if(0 <= switch$0) - {if(! (0 < switch$0))return [13,f$0]; - if(! caml_string_notequal(_cA_,cst_pt$0))return [12,f$0]; - if(! caml_string_notequal(_cA_,cst_px$0))return [2,f$0]; - if(! caml_string_notequal(_cA_,cst_rem$0))return [4,f$0]; - if(! caml_string_notequal(_cA_,cst_vh$0))return [6,f$0]; - if(! caml_string_notequal(_cA_,cst_vm$0))return [7,f$0]; - if(! caml_string_notequal(_cA_,cst_vw$0))return [5,f$0]} - else - {if(! caml_string_notequal(_cA_,cst_ch$0))return [8,f$0]; - if(! caml_string_notequal(_cA_,cst_cm$0))return [10,f$0]; - if(! caml_string_notequal(_cA_,cst_em$1))return [0,f$0]; - if(! caml_string_notequal(_cA_,cst_ex$0))return [1,f$0]; - if(! caml_string_notequal(_cA_,cst_gd$0))return [3,f$0]; - if(! caml_string_notequal(_cA_,cst_in$0))return [11,f$0]; - if(! caml_string_notequal(_cA_,cst_mm$0))return [9,f$0]} - return fail(0)} - return fail(0)} - return fail(0)} - var Length=[0,string_of_t$0,js$0,ml$0]; - function string_of_t$1(param) - {switch(param[0]) - {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_ck_,f,cst_deg); - case 1: - var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); - case 2: - var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); - default: - var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}} - function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))} - function ml$1(j) - {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns); - function fail(param) - {var _cx_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); - throw [0,Stdlib[6],_cx_]} - var match=string_match(re,s,0); - if(match) - {var r=match[1],match$0=matched_group(r,1); - if(match$0) - {var f=match$0[1]; - try - {var _cv_=caml_float_of_string(f)} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Stdlib[6]) - {var - s$0=exn[2], - _cu_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); - throw [0,Stdlib[6],_cu_]} - throw exn} - var f$0=_cv_} - else - var f$0=fail(0); - var match$1=matched_group(r,2); - if(match$1) - {var _cw_=match$1[1]; - if(! caml_string_notequal(_cw_,cst_deg$0))return [0,f$0]; - if(! caml_string_notequal(_cw_,cst_grad$0))return [1,f$0]; - if(! caml_string_notequal(_cw_,cst_rad$0))return [2,f$0]; - if(! caml_string_notequal(_cw_,cst_turns$0))return [3,f$0]} - return fail(0)} - return fail(0)} - var - Angle=[0,string_of_t$1,js$1,ml$1], - Js_of_ocaml_CSS= - [0, - [0, - string_of_name, - rgb_of_name, - hex_of_rgb, - rgb, - hsl, - string_of_t, - js, - ml, - js_t_of_js_string], - Length, - Angle]; - caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); - function listen(opt,target,typ,cb) - {if(opt)var sth=opt[1],capture=sth;else var capture=0; - var _ct_=! ! capture; - return addEventListener - (target, - typ, - full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}), - _ct_)} - var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener]; - caml_register_global - (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); - var - t0="http://www.w3.org/2000/svg", - SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)]; - function createElement$0(t2,name) - {var t1=caml_jsstring_of_string(name); - return t2.createElementNS("http://www.w3.org/2000/svg",t1)} - function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)} - function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)} - function createAltGlyph(doc) - {return unsafeCreateElement$0(doc,cst_altglyph)} - function createAltGlyphDef(doc) - {return unsafeCreateElement$0(doc,cst_altglyphdef)} - function createAltGlyphItem(doc) - {return unsafeCreateElement$0(doc,cst_altglyphitem)} - function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)} - function createAnimateColor(doc) - {return unsafeCreateElement$0(doc,cst_animatecolor)} - function createAnimateMotion(doc) - {return unsafeCreateElement$0(doc,cst_animatemotion)} - function createAnimateTransform(doc) - {return unsafeCreateElement$0(doc,cst_animatetransform)} - function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)} - function createClipPath(doc) - {return unsafeCreateElement$0(doc,cst_clippath)} - function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)} - function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)} - function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)} - function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)} - function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)} - function createFont(doc){return unsafeCreateElement$0(doc,cst_font)} - function createFontFace(doc) - {return unsafeCreateElement$0(doc,cst_font_face)} - function createFontFaceFormat(doc) - {return unsafeCreateElement$0(doc,cst_font_face_format)} - function createFontFaceName(doc) - {return unsafeCreateElement$0(doc,cst_font_face_name)} - function createFontFaceSrc(doc) - {return unsafeCreateElement$0(doc,cst_font_face_src)} - function createFontFaceUri(doc) - {return unsafeCreateElement$0(doc,cst_font_face_uri)} - function createForeignObject(doc) - {return unsafeCreateElement$0(doc,cst_foreignObject)} - function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)} - function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)} - function createGlyphRef(doc) - {return unsafeCreateElement$0(doc,cst_glyphref)} - function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)} - function createImage(doc){return unsafeCreateElement$0(doc,cst_image)} - function createLineElement(doc) - {return unsafeCreateElement$0(doc,cst_line)} - function createLinearElement(doc) - {return unsafeCreateElement$0(doc,cst_lineargradient)} - function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)} - function createMetaData(doc) - {return unsafeCreateElement$0(doc,cst_metadata)} - function createMissingGlyph(doc) - {return unsafeCreateElement$0(doc,cst_missing_glyph)} - function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)} - function createPath(doc){return unsafeCreateElement$0(doc,cst_path)} - function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)} - function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)} - function createPolyline(doc) - {return unsafeCreateElement$0(doc,cst_polyline)} - function createRadialgradient(doc) - {return unsafeCreateElement$0(doc,cst_radialgradient)} - function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)} - function createScript$0(doc) - {return unsafeCreateElement$0(doc,cst_script$2)} - function createSet(doc){return unsafeCreateElement$0(doc,cst_set)} - function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)} - function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)} - function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)} - function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)} - function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)} - function createTextElement(doc) - {return unsafeCreateElement$0(doc,cst_text$0)} - function createTextpath(doc) - {return unsafeCreateElement$0(doc,cst_textpath)} - function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)} - function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)} - function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)} - function createUse(doc){return unsafeCreateElement$0(doc,cst_use)} - function createView(doc){return unsafeCreateElement$0(doc,cst_view)} - function createvkern(doc){return unsafeCreateElement$0(doc,cst_vkern)} - var svg_element=Unsafe[1].SVGElement,document$0=Unsafe[1].document; - function getElementById$0(id) - {function _cq_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} - function _cr_(param){throw Stdlib[8]} - var - t6=caml_jsstring_of_string(id), - t7=Unsafe[1].document, - _cs_=t7.getElementById(t6); - return caml_call3(Opt[7],_cs_,_cr_,_cq_)} - function element$2(e){return e instanceof svg_element?e:no_handler} - function unsafeCoerce$0(e,tag) - {var t9=e.tagName,_cp_=caml_jsstring_of_string(tag); - return t9.toLowerCase() === _cp_?e:no_handler} - function a$0(e){return unsafeCoerce$0(e,cst_a$3)} - function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)} - function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)} - function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)} - function animate(e){return unsafeCoerce$0(e,cst_animate$0)} - function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)} - function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)} - function animateTransform(e) - {return unsafeCoerce$0(e,cst_animatetransform$0)} - function circle(e){return unsafeCoerce$0(e,cst_circle$0)} - function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)} - function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)} - function defs(e){return unsafeCoerce$0(e,cst_defs$0)} - function desc(e){return unsafeCoerce$0(e,cst_desc$0)} - function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)} - function filter(e){return unsafeCoerce$0(e,cst_filter$0)} - function font(e){return unsafeCoerce$0(e,cst_font$0)} - function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)} - function fontFaceFormat(e) - {return unsafeCoerce$0(e,cst_font_face_format$0)} - function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)} - function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)} - function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)} - function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)} - function g(e){return unsafeCoerce$0(e,cst_g$1)} - function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)} - function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)} - function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)} - function image(e){return unsafeCoerce$0(e,cst_image$0)} - function lineElement(e){return unsafeCoerce$0(e,cst_line$0)} - function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)} - function mask(e){return unsafeCoerce$0(e,cst_mask$0)} - function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)} - function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)} - function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)} - function path$0(e){return unsafeCoerce$0(e,cst_path$0)} - function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)} - function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)} - function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)} - function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)} - function rect(e){return unsafeCoerce$0(e,cst_rect$0)} - function script$0(e){return unsafeCoerce$0(e,cst_script$3)} - function set$1(e){return unsafeCoerce$0(e,cst_set$0)} - function stop(e){return unsafeCoerce$0(e,cst_stop$0)} - function style$0(e){return unsafeCoerce$0(e,cst_style$3)} - function svg(e){return unsafeCoerce$0(e,cst_svg$0)} - function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)} - function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)} - function textElement(e){return unsafeCoerce$0(e,cst_text$1)} - function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)} - function title$0(e){return unsafeCoerce$0(e,cst_title$3)} - function tref(e){return unsafeCoerce$0(e,cst_tref$0)} - function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)} - function use(e){return unsafeCoerce$0(e,cst_use$0)} - function view(e){return unsafeCoerce$0(e,cst_view$0)} - function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)} - var - Js_of_ocaml_Dom_svg= - [0, - t0, - SVGError, - createElement$0, - createA$0, - createAltGlyph, - createAltGlyphDef, - createAltGlyphItem, - createAnimate, - createAnimateColor, - createAnimateMotion, - createAnimateTransform, - createCircle, - createClipPath, - createCursor, - createDefs, - createDesc, - createEllipse, - createFilter, - createFont, - createFontFace, - createFontFaceFormat, - createFontFaceName, - createFontFaceSrc, - createFontFaceUri, - createForeignObject, - createG, - createGlyph, - createGlyphRef, - createhkern, - createImage, - createLineElement, - createLinearElement, - createMask, - createMetaData, - createMissingGlyph, - createMPath, - createPath, - createPattern, - createPolygon, - createPolyline, - createRadialgradient, - createRect, - createScript$0, - createSet, - createStop, - createStyle$0, - createSvg, - createSwitch, - createSymbol, - createTextElement, - createTextpath, - createTitle$0, - createTref, - createTspan, - createUse, - createView, - createvkern, - svg_element, - document$0, - getElementById$0, - [0, - element$2, - a$0, - altGlyph, - altGlyphDef, - altGlyphItem, - animate, - animateColor, - animateMotion, - animateTransform, - circle, - clipPath, - cursor, - defs, - desc, - ellipse, - filter, - font, - fontFace, - fontFaceFormat, - fontFaceName, - fontFaceSrc, - fontFaceUri, - foreignObject, - g, - glyph, - glyphRef, - hkern, - image, - lineElement, - linearElement, - mask, - metaData, - missingGlyph, - mPath, - path$0, - pattern, - polygon, - polyline, - radialgradient, - rect, - script$0, - set$1, - stop, - style$0, - svg, - switch$0, - symbol$12, - textElement, - textpath, - title$0, - tref, - tspan, - use, - view, - vkern]]; - caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); - function withCredentials(b) - {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} - var - eventSource=Unsafe[1].EventSource, - eventSource_options=Unsafe[1].EventSource, - Js_of_ocaml_EventSource= - [0,withCredentials,eventSource,eventSource_options,addEventListener]; - caml_register_global - (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); - var - console=runtime.caml_js_get_console(0), - Js_of_ocaml_Firebug=[0,console]; - caml_register_global(1672,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); - function empty_position_options(param){return {}} - var - t1$0=Unsafe[1].navigator, - geolocation=caml_call1(Optdef[5],t1$0)?t1$0.geolocation:t1$0; - function is_supported$3(param){return caml_call1(Optdef[5],geolocation)} - var - Js_of_ocaml_Geolocation= - [0,empty_position_options,geolocation,is_supported$3]; - caml_register_global - (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); - function empty_intersection_observer_op(param){return {}} - var intersectionObserver_unsafe=Unsafe[1].IntersectionObserver; - function is_supported$4(param) - {return caml_call1(Optdef[5],intersectionObserver_unsafe)} - var - Js_of_ocaml_IntersectionObserv= - [0, - empty_intersection_observer_op, - is_supported$4, - intersectionObserver_unsafe]; - caml_register_global - (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); - function object_options(param){return {"localeMatcher":"best fit"}} - function options(param) - {return {"localeMatcher":"best fit", - "usage":"sort", - "sensitivity":"variant", - "ignorePunctuation":t4, - "numeric":t4, - "caseFirst":"false"}} - var Collator=[0,object_options,options]; - function options$0(param) - {return {"localeMatcher":"best fit", - "timeZone":t39, - "hour12":t39, - "hourCycle":t39, - "formatMatcher":"best fit", - "weekday":t39, - "era":t39, - "year":t39, - "month":t39, - "day":t39, - "hour":t39, - "minute":t39, - "second":t39, - "timeZoneName":t39}} - var DateTimeFormat=[0,object_options,options$0]; - function options$1(param) - {return {"localeMatcher":"best fit", - "style":"decimal", - "currency":t39, - "currencyDisplay":t39, - "useGrouping":t25, - "minimumIntegerDigits":t39, - "minimumFractionDigits":t39, - "maximumFractionDigits":t39, - "minimumSignificantDigits":t39, - "maximumSignificantDigits":t39}} - var NumberFormat=[0,object_options,options$1]; - function options$2(param) - {return {"localeMatcher":"best fit","type":"cardinal"}} - var - PluralRules=[0,object_options,options$2], - intl=Unsafe[1].Intl, - t35=Unsafe[1].Intl, - collator_constr=t35.Collator, - t37=Unsafe[1].Intl, - dateTimeFormat_constr=t37.DateTimeFormat, - t39$0=Unsafe[1].Intl, - numberFormat_constr=t39$0.NumberFormat, - t41=Unsafe[1].Intl, - pluralRules_constr=t41.PluralRules; - function is_supported$5(param){return caml_call1(Optdef[5],intl)} - var - Js_of_ocaml_Intl= - [0, - Collator, - DateTimeFormat, - NumberFormat, - PluralRules, - intl, - collator_constr, - dateTimeFormat_constr, - numberFormat_constr, - pluralRules_constr, - is_supported$5]; - caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); - var Js_of_ocaml$0=[0]; - caml_register_global(1676,Js_of_ocaml$0,"Js_of_ocaml"); - return} - (globalThis)); - - -//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_int_of_string=runtime.caml_int_of_string, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_jsstring_of_string=runtime.caml_jsstring_of_string, - caml_register_global=runtime.caml_register_global, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - var - global_data=runtime.caml_get_global_data(), - partial=[4,0,0,0,[12,46,0]], - cst_No_rule_applies_in_the_giv= - caml_string_of_jsbytes - ("No rule applies in the given context to give a value to the variable"), - cst_A_conflict_happend_between= - caml_string_of_jsbytes - ("A conflict happend between two rules giving a value to the variable"), - cst_A_failure_happened_in_the_= - caml_string_of_jsbytes("A failure happened in the assertion"), - cst_Begin_call=caml_string_of_jsbytes("Begin call"), - cst_End_call=caml_string_of_jsbytes("End call"), - cst_Variable_definition=caml_string_of_jsbytes("Variable definition"), - cst_Decision_taken=caml_string_of_jsbytes("Decision taken"), - cst_date_of_jsoo_invalid_date= - caml_string_of_jsbytes("date_of_jsoo: invalid date"), - Stdlib_Format=global_data.Stdlib__Format, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, - Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, - Yojson=global_data.Yojson, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_String=global_data.Stdlib__String, - Stdlib=global_data.Stdlib, - Runtime_jsoo=[0]; - caml_register_global(52,Runtime_jsoo,"Runtime_jsoo"); - var - _a_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(" in file "), - [2, - 0, - [11, - caml_string_of_jsbytes(", position "), - [4, - 0, - 0, - 0, - [12, - 58, - [4, - 0, - 0, - 0, - [11,caml_string_of_jsbytes("--"),[4,0,0,0,[12,58,partial]]]]]]]]]], - caml_string_of_jsbytes("%s in file %s, position %d:%d--%d:%d.")]; - function duration_of_jsoo(d) - {return caml_call3(Runtime_ocaml_Runtime[59],d.years,d.months,d.days)} - function duration_to_jsoo(d) - {var - match=caml_call1(Runtime_ocaml_Runtime[60],d), - days=match[3], - months=match[2], - years=match[1]; - return {"years":years,"months":months,"days":days}} - function date_of_jsoo(d) - {var d$0=runtime.caml_string_of_jsstring(d); - if(caml_call2(Stdlib_String[14],d$0,84)) - var - _r_=caml_call1(caml_call1(Stdlib_String[16],84),d$0), - d$1=caml_call1(Stdlib_List[5],_r_); - else - var d$1=d$0; - var match=caml_call2(Stdlib_String[16],45,d$1); - if(match) - {var _s_=match[2]; - if(_s_) - {var _t_=_s_[2]; - if(_t_ && ! _t_[2]) - {var - day=_t_[1], - month=_s_[1], - year=match[1], - _u_=caml_int_of_string(day), - _v_=caml_int_of_string(month), - _w_=caml_int_of_string(year); - return caml_call3(Runtime_ocaml_Runtime[56],_w_,_v_,_u_)}}} - return caml_call1(Stdlib[2],cst_date_of_jsoo_invalid_date)} - function date_to_jsoo(d) - {return caml_jsstring_of_string(caml_call1(Runtime_ocaml_Runtime[55],d))} - function t19(param) - {return caml_js_wrap_meth_callback - (function(param) - {var _i_=caml_call1(Runtime_ocaml_Runtime[23],0); - function _j_(evt) - {if(3 === evt[0]) - var - pos=evt[1], - _q_= - caml_call2(Stdlib_List[19],caml_jsstring_of_string,pos[6]), - t12=caml_js_from_array(caml_call1(Stdlib_Array[12],_q_)), - t7=caml_jsstring_of_string(pos[1]), - _l_= - caml_call1 - (Js_of_ocaml_Js[4], - {"fileName":t7, - "startLine":pos[2], - "endLine":pos[4], - "startColumn":pos[3], - "endColumn":pos[5], - "lawHeadings":t12}); - else - var _l_=Js_of_ocaml_Js[3]; - if(2 === evt[0]) - var v=evt[2],_m_=v; - else - var _m_=caml_call1(Runtime_ocaml_Runtime[10],0); - var - _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), - t15= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); - if(3 === evt[0]) - var _o_=0; - else - var - info=evt[1], - _o_=caml_call2(Stdlib_List[19],caml_jsstring_of_string,info); - var - t14= - caml_js_from_array(caml_call1(Stdlib_Array[12],_o_)); - switch(evt[0]) - {case 0:var _p_=cst_Begin_call;break; - case 1:var _p_=cst_End_call;break; - case 2:var _p_=cst_Variable_definition;break; - default:var _p_=cst_Decision_taken} - var t13=caml_jsstring_of_string(_p_); - return {"eventType":t13, - "information":t14, - "loggedValueJson":t15, - "sourcePosition":_l_}} - var _k_=caml_call2(Stdlib_List[19],_j_,_i_); - return caml_js_from_array(caml_call1(Stdlib_Array[12],_k_))})} - function t18(param) - {return caml_js_wrap_meth_callback - (function(param) - {var - _d_=caml_call1(Runtime_ocaml_Runtime[23],0), - _e_=caml_call1(Runtime_ocaml_Runtime[24][1],_d_); - function _f_(event) - {var - _h_=caml_call1(Runtime_ocaml_Runtime[20],event), - t6= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_)); - return {"data":t6}} - var _g_=caml_call1(caml_call1(Stdlib_List[19],_f_),_e_); - return caml_js_from_array(caml_call1(Stdlib_Array[12],_g_))})} - function t17(param) - {return caml_js_wrap_meth_callback(Runtime_ocaml_Runtime[25])} - var - event_manager= - {"resetLog":caml_js_wrap_meth_callback(t17), - "retrieveEvents":caml_js_wrap_meth_callback(t18), - "retrieveRawEvents":caml_js_wrap_meth_callback(t19)}; - function execute_or_throw_error(f) - {function throw_error(descr,pos) - {var - t21= - caml_jsstring_of_string - (caml_call7 - (Stdlib_Format[133],_a_,descr,pos[1],pos[2],pos[3],pos[4],pos[5])); - function t23(param){return t21} - var - _c_= - caml_call1 - (Js_of_ocaml_Js[33][9], - {"name":"NoValueProvided", - "message":t21, - "stack":Js_of_ocaml_Js[6][1], - "toString":caml_js_wrap_meth_callback(t23)}); - return caml_call1(Js_of_ocaml_Js[33][5],_c_)} - try - {var _b_=caml_call1(f,0);return _b_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Runtime_ocaml_Runtime[8]) - {var pos=exn[2]; - return throw_error(cst_No_rule_applies_in_the_giv,pos)} - if(exn[1] === Runtime_ocaml_Runtime[4]) - {var pos$0=exn[2]; - return throw_error(cst_A_conflict_happend_between,pos$0)} - if(exn[1] === Runtime_ocaml_Runtime[3]) - {var pos$1=exn[2]; - return throw_error(cst_A_failure_happened_in_the_,pos$1)} - throw exn}} - var - Runtime_jsoo_Runtime= - [0, - event_manager, - duration_of_jsoo, - duration_to_jsoo, - date_of_jsoo, - date_to_jsoo, - execute_or_throw_error]; - caml_register_global(62,Runtime_jsoo_Runtime,"Runtime_jsoo__Runtime"); - return} - (globalThis)); - - -//# 1 "law_source/.law_source.objs/law_source.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_equal=runtime.caml_equal, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_to_array=runtime.caml_js_to_array, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_register_global=runtime.caml_register_global, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_of_jsstring=runtime.caml_string_of_jsstring, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - var - global_data=runtime.caml_get_global_data(), - cst_0$68=caml_string_of_jsbytes("0"), - cst_0$67=caml_string_of_jsbytes("0"), - cst_0$65=caml_string_of_jsbytes("0"), - cst_0$66=caml_string_of_jsbytes("0"), - cst_0$64=caml_string_of_jsbytes("0"), - cst_1$28=caml_string_of_jsbytes("1."), - cst_0_5$0=caml_string_of_jsbytes("0.5"), - cst_0$63=caml_string_of_jsbytes("0."), - cst_12$10=caml_string_of_jsbytes("12."), - cst_12$8=caml_string_of_jsbytes("12."), - cst_1$27=caml_string_of_jsbytes("1."), - cst_12$9=caml_string_of_jsbytes("12."), - cst_12$7=caml_string_of_jsbytes("12."), - cst_12$5=caml_string_of_jsbytes("12."), - cst_1$26=caml_string_of_jsbytes("1."), - cst_12$6=caml_string_of_jsbytes("12."), - cst_0$62=caml_string_of_jsbytes("0"), - cst_1$25=caml_string_of_jsbytes("1"), - cst_11=caml_string_of_jsbytes("11"), - cst_16$1=caml_string_of_jsbytes("16"), - cst_0_0369=caml_string_of_jsbytes("0.0369"), - cst_1$24=caml_string_of_jsbytes("1"), - cst_16$0=caml_string_of_jsbytes("16"), - cst_0_0567=caml_string_of_jsbytes("0.0567"), - cst_1$23=caml_string_of_jsbytes("1"), - cst_1$22=caml_string_of_jsbytes("1"), - cst_0$61=caml_string_of_jsbytes("0"), - cst_0_16$1=caml_string_of_jsbytes("0.16"), - cst_0_08$0=caml_string_of_jsbytes("0.08"), - cst_0_04=caml_string_of_jsbytes("0.04"), - cst_0$60=caml_string_of_jsbytes("0"), - cst_0$58=caml_string_of_jsbytes("0."), - cst_0$59=caml_string_of_jsbytes("0."), - cst_1$21=caml_string_of_jsbytes("1"), - cst_0_232=caml_string_of_jsbytes("0.232"), - cst_0$57=caml_string_of_jsbytes("0"), - cst_1$20=caml_string_of_jsbytes("1"), - cst_0_2379=caml_string_of_jsbytes("0.2379"), - cst_0$56=caml_string_of_jsbytes("0"), - cst_1$19=caml_string_of_jsbytes("1"), - cst_0_2437=caml_string_of_jsbytes("0.2437"), - cst_0$55=caml_string_of_jsbytes("0"), - cst_1$18=caml_string_of_jsbytes("1"), - cst_0_2496=caml_string_of_jsbytes("0.2496"), - cst_0$54=caml_string_of_jsbytes("0"), - cst_1$17=caml_string_of_jsbytes("1"), - cst_0_2555=caml_string_of_jsbytes("0.2555"), - cst_0$53=caml_string_of_jsbytes("0"), - cst_1$16=caml_string_of_jsbytes("1"), - cst_0_2613=caml_string_of_jsbytes("0.2613"), - cst_0$52=caml_string_of_jsbytes("0"), - cst_1$15=caml_string_of_jsbytes("1"), - cst_0_2672=caml_string_of_jsbytes("0.2672"), - cst_0$51=caml_string_of_jsbytes("0"), - cst_1$14=caml_string_of_jsbytes("1"), - cst_0_2804=caml_string_of_jsbytes("0.2804"), - cst_0$50=caml_string_of_jsbytes("0"), - cst_1$13=caml_string_of_jsbytes("1"), - cst_0_2936=caml_string_of_jsbytes("0.2936"), - cst_0$49=caml_string_of_jsbytes("0"), - cst_1$12=caml_string_of_jsbytes("1"), - cst_0_3068=caml_string_of_jsbytes("0.3068"), - cst_0$48=caml_string_of_jsbytes("0"), - cst_1$11=caml_string_of_jsbytes("1"), - cst_0_32$0=caml_string_of_jsbytes("0.32"), - cst_0$47=caml_string_of_jsbytes("0"), - cst_1$10=caml_string_of_jsbytes("1"), - cst_0_32=caml_string_of_jsbytes("0.32"), - cst_0$46=caml_string_of_jsbytes("0"), - cst_1$9=caml_string_of_jsbytes("1"), - cst_0_16$0=caml_string_of_jsbytes("0.16"), - cst_0$45=caml_string_of_jsbytes("0"), - cst_1$8=caml_string_of_jsbytes("1"), - cst_0_08=caml_string_of_jsbytes("0.08"), - cst_0$44=caml_string_of_jsbytes("0"), - cst_2$15=caml_string_of_jsbytes("2"), - cst_2$16=caml_string_of_jsbytes("2"), - cst_0_41=caml_string_of_jsbytes("0.41"), - cst_0$43=caml_string_of_jsbytes("0"), - cst_2$13=caml_string_of_jsbytes("2"), - cst_2$14=caml_string_of_jsbytes("2"), - cst_0_205=caml_string_of_jsbytes("0.205"), - cst_0$42=caml_string_of_jsbytes("0"), - cst_2$11=caml_string_of_jsbytes("2"), - cst_2$12=caml_string_of_jsbytes("2"), - cst_0_1025=caml_string_of_jsbytes("0.1025"), - cst_0$41=caml_string_of_jsbytes("0"), - cst_0_20234=caml_string_of_jsbytes("0.20234"), - cst_0_10117=caml_string_of_jsbytes("0.10117"), - cst_0_05059=caml_string_of_jsbytes("0.05059"), - cst_12$4=caml_string_of_jsbytes("12."), - cst_12$2=caml_string_of_jsbytes("12."), - cst_1$7=caml_string_of_jsbytes("1."), - cst_12$3=caml_string_of_jsbytes("12."), - cst_12$1=caml_string_of_jsbytes("12."), - cst_12=caml_string_of_jsbytes("12."), - cst_1$6=caml_string_of_jsbytes("1."), - cst_12$0=caml_string_of_jsbytes("12."), - cst_0$40=caml_string_of_jsbytes("0"), - cst_1$5=caml_string_of_jsbytes("1"), - cst_1$4=caml_string_of_jsbytes("1"), - cst_2$10=caml_string_of_jsbytes("2"), - cst_0$38=caml_string_of_jsbytes("0"), - cst_0_145=caml_string_of_jsbytes("0.145"), - cst_0$39=caml_string_of_jsbytes("0"), - cst_0$36=caml_string_of_jsbytes("0"), - cst_0_1393=caml_string_of_jsbytes("0.1393"), - cst_0$37=caml_string_of_jsbytes("0"), - cst_0$34=caml_string_of_jsbytes("0"), - cst_0_1335=caml_string_of_jsbytes("0.1335"), - cst_0$35=caml_string_of_jsbytes("0"), - cst_0$32=caml_string_of_jsbytes("0"), - cst_0_1278=caml_string_of_jsbytes("0.1278"), - cst_0$33=caml_string_of_jsbytes("0"), - cst_0$30=caml_string_of_jsbytes("0"), - cst_0_122=caml_string_of_jsbytes("0.122"), - cst_0$31=caml_string_of_jsbytes("0"), - cst_0$28=caml_string_of_jsbytes("0"), - cst_0_1163=caml_string_of_jsbytes("0.1163"), - cst_0$29=caml_string_of_jsbytes("0"), - cst_0$26=caml_string_of_jsbytes("0"), - cst_0_1105=caml_string_of_jsbytes("0.1105"), - cst_0$27=caml_string_of_jsbytes("0"), - cst_0$24=caml_string_of_jsbytes("0"), - cst_0_0976=caml_string_of_jsbytes("0.0976"), - cst_0$25=caml_string_of_jsbytes("0"), - cst_0$22=caml_string_of_jsbytes("0"), - cst_0_0847=caml_string_of_jsbytes("0.0847"), - cst_0$23=caml_string_of_jsbytes("0"), - cst_0$20=caml_string_of_jsbytes("0"), - cst_0_0717=caml_string_of_jsbytes("0.0717"), - cst_0$21=caml_string_of_jsbytes("0"), - cst_0$18=caml_string_of_jsbytes("0"), - cst_5728=caml_string_of_jsbytes("5728"), - cst_0$19=caml_string_of_jsbytes("0"), - cst_0$16=caml_string_of_jsbytes("0"), - cst_0_0588$0=caml_string_of_jsbytes("0.0588"), - cst_0$17=caml_string_of_jsbytes("0"), - cst_1$3=caml_string_of_jsbytes("1"), - cst_0_0588=caml_string_of_jsbytes("0.0588"), - cst_0$15=caml_string_of_jsbytes("0"), - cst_1$2=caml_string_of_jsbytes("1."), - cst_0_5=caml_string_of_jsbytes("0.5"), - cst_0$14=caml_string_of_jsbytes("0."), - cst_0$13=caml_string_of_jsbytes("0."), - cst_2$9=caml_string_of_jsbytes("2"), - cst_0_0463$0=caml_string_of_jsbytes("0.0463"), - cst_0$12=caml_string_of_jsbytes("0"), - cst_2$8=caml_string_of_jsbytes("2"), - cst_0_0539=caml_string_of_jsbytes("0.0539"), - cst_0$11=caml_string_of_jsbytes("0"), - cst_2$7=caml_string_of_jsbytes("2"), - cst_0_0615=caml_string_of_jsbytes("0.0615"), - cst_0$10=caml_string_of_jsbytes("0"), - cst_2$6=caml_string_of_jsbytes("2"), - cst_0_069=caml_string_of_jsbytes("0.069"), - cst_0$9=caml_string_of_jsbytes("0"), - cst_2$5=caml_string_of_jsbytes("2"), - cst_0_0766=caml_string_of_jsbytes("0.0766"), - cst_0$8=caml_string_of_jsbytes("0"), - cst_2$4=caml_string_of_jsbytes("2"), - cst_0_0842=caml_string_of_jsbytes("0.0842"), - cst_0$7=caml_string_of_jsbytes("0"), - cst_2$3=caml_string_of_jsbytes("2"), - cst_0_0918=caml_string_of_jsbytes("0.0918"), - cst_0$6=caml_string_of_jsbytes("0"), - cst_2$2=caml_string_of_jsbytes("2"), - cst_0_1089=caml_string_of_jsbytes("0.1089"), - cst_0$5=caml_string_of_jsbytes("0"), - cst_2$1=caml_string_of_jsbytes("2"), - cst_0_1259=caml_string_of_jsbytes("0.1259"), - cst_0$4=caml_string_of_jsbytes("0"), - cst_2$0=caml_string_of_jsbytes("2"), - cst_0_143=caml_string_of_jsbytes("0.143"), - cst_0$3=caml_string_of_jsbytes("0"), - cst_2=caml_string_of_jsbytes("2"), - cst_0_16=caml_string_of_jsbytes("0.16"), - cst_0$2=caml_string_of_jsbytes("0"), - cst_3$1=caml_string_of_jsbytes("3"), - cst_3$2=caml_string_of_jsbytes("3"), - cst_0_0463=caml_string_of_jsbytes("0.0463"), - cst_0$1=caml_string_of_jsbytes("0"), - cst_1$1=caml_string_of_jsbytes("1"), - cst_1$0=caml_string_of_jsbytes("1"), - cst_562800$0=caml_string_of_jsbytes("562800"), - cst_5628600=caml_string_of_jsbytes("5628600"), - cst_568400$0=caml_string_of_jsbytes("568400"), - cst_5684900=caml_string_of_jsbytes("5684900"), - cst_577500$0=caml_string_of_jsbytes("577500"), - cst_5775900=caml_string_of_jsbytes("5775900"), - cst_582700$0=caml_string_of_jsbytes("582700"), - cst_5827900=caml_string_of_jsbytes("5827900"), - cst_559500$0=caml_string_of_jsbytes("559500"), - cst_5595000=caml_string_of_jsbytes("5595000"), - cst_562800=caml_string_of_jsbytes("562800"), - cst_7877000=caml_string_of_jsbytes("7877000"), - cst_568400=caml_string_of_jsbytes("568400"), - cst_7955800=caml_string_of_jsbytes("7955800"), - cst_577500=caml_string_of_jsbytes("577500"), - cst_8083100=caml_string_of_jsbytes("8083100"), - cst_582700=caml_string_of_jsbytes("582700"), - cst_8155800=caml_string_of_jsbytes("8155800"), - cst_559500=caml_string_of_jsbytes("559500"), - cst_7830000=caml_string_of_jsbytes("7830000"), - cst_14=caml_string_of_jsbytes("14"), - cst_3$0=caml_string_of_jsbytes("3"), - cst_3=caml_string_of_jsbytes("3"), - cst_169$0=caml_string_of_jsbytes("169."), - cst_0_55$0=caml_string_of_jsbytes("0.55"), - cst_169=caml_string_of_jsbytes("169."), - cst_0_55=caml_string_of_jsbytes("0.55"), - cst_20=caml_string_of_jsbytes("20"), - cst_41316=caml_string_of_jsbytes("41316"), - cst_41440=caml_string_of_jsbytes("41440"), - cst_41481=caml_string_of_jsbytes("41481"), - cst_42228=caml_string_of_jsbytes("42228"), - cst_1003=caml_string_of_jsbytes("1003"), - cst_757=caml_string_of_jsbytes("757"), - cst_1015=caml_string_of_jsbytes("1015"), - cst_766=caml_string_of_jsbytes("766"), - cst_1025=caml_string_of_jsbytes("1025"), - cst_774=caml_string_of_jsbytes("774"), - cst_1057=caml_string_of_jsbytes("1057"), - cst_798=caml_string_of_jsbytes("798"), - cst_1085=caml_string_of_jsbytes("1085"), - cst_819=caml_string_of_jsbytes("819"), - cst_0=caml_string_of_jsbytes("0"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_1=caml_string_of_jsbytes("-1"), - cst_16=caml_string_of_jsbytes("16"), - cst_i_avait_enfant_charge_avan= - caml_string_of_jsbytes - ("i_avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), - cst_i_personne_charge_effectiv= - caml_string_of_jsbytes - ("i_personne_charge_effective_permanente_remplit_titre_I_in"), - cst_i_personne_charge_effectiv$0= - caml_string_of_jsbytes - ("i_personne_charge_effective_permanente_est_parent_in"), - cst_i_r_sidence_in=caml_string_of_jsbytes("i_r\xc3\xa9sidence_in"), - cst_i_ressources_m_nage_in= - caml_string_of_jsbytes("i_ressources_m\xc3\xa9nage_in"), - cst_i_enfants_in=caml_string_of_jsbytes("i_enfants_in"), - cst_i_date_courante_in=caml_string_of_jsbytes("i_date_courante_in"), - cst_i_montant_vers_out= - caml_string_of_jsbytes("i_montant_vers\xc3\xa9_out"), - cst_date_courante_in$2=caml_string_of_jsbytes("date_courante_in"), - cst_montant_out=caml_string_of_jsbytes("montant_out"), - cst_r_sidence_in$1=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_date_courante_in$1=caml_string_of_jsbytes("date_courante_in"), - cst_brut_horaire_out=caml_string_of_jsbytes("brut_horaire_out"), - cst_avait_enfant_charge_avant_= - caml_string_of_jsbytes - ("avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), - cst_enfants_charge_in= - caml_string_of_jsbytes("enfants_\xc3\xa0_charge_in"), - cst_date_courante_in$0=caml_string_of_jsbytes("date_courante_in"), - cst_r_sidence_in$0=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_ressources_m_nage_in= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_in"), - cst_personne_charge_effective_= - caml_string_of_jsbytes - ("personne_charge_effective_permanente_remplit_titre_I_in"), - cst_personne_charge_effective_$0= - caml_string_of_jsbytes - ("personne_charge_effective_permanente_est_parent_in"), - cst_montant_vers_out=caml_string_of_jsbytes("montant_vers\xc3\xa9_out"), - cst_enfants_in=caml_string_of_jsbytes("enfants_in"), - cst_le_plus_g_out=caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9_out"), - cst_ge_minimum_alin_a_1_l521_3= - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3_out"), - cst_r_sidence_in=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_prestation_courante_in= - caml_string_of_jsbytes("prestation_courante_in"), - cst_date_courante_in=caml_string_of_jsbytes("date_courante_in"), - cst_r_gime_outre_mer_l751_1_ou= - caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1_out"), - cst_ge_l512_3_2_out=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2_out"), - cst_conditions_hors_ge_out= - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge_out"), - cst_droit_ouvert_out=caml_string_of_jsbytes("droit_ouvert_out"), - cst_b_n_ficie_titre_personnel_= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_a_d_j_ouvert_droit_aux_all= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_prise_en_charge=caml_string_of_jsbytes("prise_en_charge"), - cst_ge=caml_string_of_jsbytes("\xc3\xa2ge"), - cst_date_de_naissance=caml_string_of_jsbytes("date_de_naissance"), - cst_r_muneration_mensuelle= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_obligation_scolaire=caml_string_of_jsbytes("obligation_scolaire"), - cst_identifiant=caml_string_of_jsbytes("identifiant"), - cst_d_b_n_ficie_titre_personne= - caml_string_of_jsbytes - ("d_b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_d_a_d_j_ouvert_droit_aux_a= - caml_string_of_jsbytes - ("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_d_prise_en_charge=caml_string_of_jsbytes("d_prise_en_charge"), - cst_d_date_de_naissance=caml_string_of_jsbytes("d_date_de_naissance"), - cst_d_r_muneration_mensuelle= - caml_string_of_jsbytes("d_r\xc3\xa9muneration_mensuelle"), - cst_d_identifiant=caml_string_of_jsbytes("d_identifiant"), - cst_Guadeloupe=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane=caml_string_of_jsbytes("Guyane"), - cst_Martinique=caml_string_of_jsbytes("Martinique"), - cst_LaR_union=caml_string_of_jsbytes("LaR\xc3\xa9union"), - cst_SaintBarth_lemy=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), - cst_SaintMartin=caml_string_of_jsbytes("SaintMartin"), - cst_M_tropole=caml_string_of_jsbytes("M\xc3\xa9tropole"), - cst_SaintPierreEtMiquelon=caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Mayotte=caml_string_of_jsbytes("Mayotte"), - cst_PrestationAccueilJeuneEnfa= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationsFamiliales=caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationLogement=caml_string_of_jsbytes("AllocationLogement"), - cst_Allocation_ducationEnfantH= - caml_string_of_jsbytes - ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), - cst_AllocationSoutienFamilial= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationRentr_eScolaire= - caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), - cst_AllocationJournali_rePrese= - caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), - cst_Normal=caml_string_of_jsbytes("Normal"), - cst_AllocationVers_eAuxService= - caml_string_of_jsbytes("AllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_Compl_te=caml_string_of_jsbytes("Compl\xc3\xa8te"), - cst_Partag_e=caml_string_of_jsbytes("Partag\xc3\xa9e"), - cst_Z_ro=caml_string_of_jsbytes("Z\xc3\xa9ro"), - cst_Avant=caml_string_of_jsbytes("Avant"), - cst_Pendant=caml_string_of_jsbytes("Pendant"), - cst_Apr_s=caml_string_of_jsbytes("Apr\xc3\xa8s"), - cst_GardeAltern_ePartageAlloca= - caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), - cst_GardeAltern_eAllocataireUn= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), - cst_EffectiveEtPermanente=caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ServicesSociauxAllocationV= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), - cst_ServicesSociauxAllocationV$0= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_The_function_conditions_ho= - caml_string_of_jsbytes - ("The function 'conditions_hors_age_out' translation isn't yet supported..."), - cst_The_function_droit_ouvert_= - caml_string_of_jsbytes - ("The function 'droit_ouvert_out' translation isn't yet supported..."), - cst_Guadeloupe$0=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$0=caml_string_of_jsbytes("Guyane"), - cst_LaReunion=caml_string_of_jsbytes("LaReunion"), - cst_Martinique$0=caml_string_of_jsbytes("Martinique"), - cst_Mayotte$0=caml_string_of_jsbytes("Mayotte"), - cst_Metropole=caml_string_of_jsbytes("Metropole"), - cst_SaintBarthelemy=caml_string_of_jsbytes("SaintBarthelemy"), - cst_SaintMartin$0=caml_string_of_jsbytes("SaintMartin"), - cst_SaintPierreEtMiquelon$0= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_AllocationEducationEnfantH= - caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), - cst_AllocationJournalierePrese= - caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), - cst_AllocationLogement$0=caml_string_of_jsbytes("AllocationLogement"), - cst_AllocationRentreeScolaire= - caml_string_of_jsbytes("AllocationRentreeScolaire"), - cst_AllocationSoutienFamilial$0= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$0= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial=caml_string_of_jsbytes("ComplementFamilial"), - cst_PrestationAccueilJeuneEnfa$0= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationVerseeAuxService= - caml_string_of_jsbytes("AllocationVerseeAuxServicesSociaux"), - cst_Normal$0=caml_string_of_jsbytes("Normal"), - cst_Complete=caml_string_of_jsbytes("Complete"), - cst_Partagee=caml_string_of_jsbytes("Partagee"), - cst_Zero=caml_string_of_jsbytes("Zero"), - cst_Apres=caml_string_of_jsbytes("Apres"), - cst_Avant$0=caml_string_of_jsbytes("Avant"), - cst_Pendant$0=caml_string_of_jsbytes("Pendant"), - cst_EffectiveEtPermanente$0= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_GardeAlterneeAllocataireUn= - caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), - cst_GardeAlterneePartageAlloca= - caml_string_of_jsbytes("GardeAlterneePartageAllocations"), - cst_ServicesSociauxAllocationV$1= - caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), - cst_ServicesSociauxAllocationV$2= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), - cst_AllocationsFamilialesLib= - caml_string_of_jsbytes("AllocationsFamilialesLib"), - cst_0$403=caml_string_of_jsbytes("0"), - cst_0$404=caml_string_of_jsbytes("0"), - cst_0$405=caml_string_of_jsbytes("0."), - cst_0$402=caml_string_of_jsbytes("0"), - cst_0$400=caml_string_of_jsbytes("0"), - cst_0$401=caml_string_of_jsbytes("0"), - cst_0$398=caml_string_of_jsbytes("0"), - cst_0$399=caml_string_of_jsbytes("0"), - cst_0$396=caml_string_of_jsbytes("0"), - cst_0$397=caml_string_of_jsbytes("0"), - cst_0$394=caml_string_of_jsbytes("0"), - cst_0$395=caml_string_of_jsbytes("0"), - cst_0$392=caml_string_of_jsbytes("0"), - cst_0$393=caml_string_of_jsbytes("0"), - cst_100$11=caml_string_of_jsbytes("100."), - cst_0_01$1=caml_string_of_jsbytes("0.01"), - cst_4999$1=caml_string_of_jsbytes("4999"), - cst_0$391=caml_string_of_jsbytes("0"), - cst_1$268=caml_string_of_jsbytes("1"), - cst_1$267=caml_string_of_jsbytes("1"), - cst_0$390=caml_string_of_jsbytes("0"), - cst_1$266=caml_string_of_jsbytes("1"), - cst_1$265=caml_string_of_jsbytes("1"), - cst_0$389=caml_string_of_jsbytes("0"), - cst_1$264=caml_string_of_jsbytes("1"), - cst_0$387=caml_string_of_jsbytes("0"), - cst_0$388=caml_string_of_jsbytes("0"), - cst_1$263=caml_string_of_jsbytes("1"), - cst_1$262=caml_string_of_jsbytes("1"), - cst_0$386=caml_string_of_jsbytes("0"), - cst_1$261=caml_string_of_jsbytes("1"), - cst_1$260=caml_string_of_jsbytes("1"), - cst_3$87=caml_string_of_jsbytes("3"), - cst_0$383=caml_string_of_jsbytes("0"), - cst_0_2$1=caml_string_of_jsbytes("0.2"), - cst_3$88=caml_string_of_jsbytes("3"), - cst_0$384=caml_string_of_jsbytes("0"), - cst_0$385=caml_string_of_jsbytes("0"), - cst_2_4=caml_string_of_jsbytes("2.4"), - cst_1$259=caml_string_of_jsbytes("1"), - cst_3$86=caml_string_of_jsbytes("3"), - cst_0$382=caml_string_of_jsbytes("0"), - cst_0$380=caml_string_of_jsbytes("0"), - cst_0$381=caml_string_of_jsbytes("0"), - cst_0$378=caml_string_of_jsbytes("0"), - cst_0$379=caml_string_of_jsbytes("0"), - cst_0$376=caml_string_of_jsbytes("0"), - cst_0$377=caml_string_of_jsbytes("0"), - cst_0$374=caml_string_of_jsbytes("0"), - cst_0$375=caml_string_of_jsbytes("0"), - cst_100$10=caml_string_of_jsbytes("100."), - cst_0_01$0=caml_string_of_jsbytes("0.01"), - cst_4999$0=caml_string_of_jsbytes("4999"), - cst_0$373=caml_string_of_jsbytes("0"), - cst_0$371=caml_string_of_jsbytes("0"), - cst_50$7=caml_string_of_jsbytes("50"), - cst_50$8=caml_string_of_jsbytes("50"), - cst_0$372=caml_string_of_jsbytes("0"), - cst_0$369=caml_string_of_jsbytes("0"), - cst_0$370=caml_string_of_jsbytes("0"), - cst_0$368=caml_string_of_jsbytes("0"), - cst_0$367=caml_string_of_jsbytes("0"), - cst_100$9=caml_string_of_jsbytes("100."), - cst_0_01=caml_string_of_jsbytes("0.01"), - cst_4999=caml_string_of_jsbytes("4999"), - cst_0_75$7=caml_string_of_jsbytes("0.75"), - cst_0$364=caml_string_of_jsbytes("0"), - cst_158700=caml_string_of_jsbytes("158700"), - cst_191300=caml_string_of_jsbytes("191300"), - cst_1$256=caml_string_of_jsbytes("1"), - cst_205500=caml_string_of_jsbytes("205500"), - cst_2$104=caml_string_of_jsbytes("2"), - cst_211300=caml_string_of_jsbytes("211300"), - cst_3$83=caml_string_of_jsbytes("3"), - cst_217100=caml_string_of_jsbytes("217100"), - cst_4$79=caml_string_of_jsbytes("4"), - cst_222900=caml_string_of_jsbytes("222900"), - cst_5$129=caml_string_of_jsbytes("5"), - cst_228000=caml_string_of_jsbytes("228000"), - cst_5$130=caml_string_of_jsbytes("5"), - cst_19800=caml_string_of_jsbytes("19800"), - cst_228000$0=caml_string_of_jsbytes("228000"), - cst_0$365=caml_string_of_jsbytes("0"), - cst_139300=caml_string_of_jsbytes("139300"), - cst_170600=caml_string_of_jsbytes("170600"), - cst_1$257=caml_string_of_jsbytes("1"), - cst_184700=caml_string_of_jsbytes("184700"), - cst_2$105=caml_string_of_jsbytes("2"), - cst_191200=caml_string_of_jsbytes("191200"), - cst_3$84=caml_string_of_jsbytes("3"), - cst_197700$0=caml_string_of_jsbytes("197700"), - cst_4$80=caml_string_of_jsbytes("4"), - cst_204200=caml_string_of_jsbytes("204200"), - cst_5$131=caml_string_of_jsbytes("5"), - cst_218700=caml_string_of_jsbytes("218700"), - cst_5$132=caml_string_of_jsbytes("5"), - cst_19100$1=caml_string_of_jsbytes("19100"), - cst_218700$0=caml_string_of_jsbytes("218700"), - cst_0$366=caml_string_of_jsbytes("0"), - cst_130600=caml_string_of_jsbytes("130600"), - cst_158400=caml_string_of_jsbytes("158400"), - cst_1$258=caml_string_of_jsbytes("1"), - cst_172600=caml_string_of_jsbytes("172600"), - cst_2$106=caml_string_of_jsbytes("2"), - cst_179800$0=caml_string_of_jsbytes("179800"), - cst_3$85=caml_string_of_jsbytes("3"), - cst_187000=caml_string_of_jsbytes("187000"), - cst_4$81=caml_string_of_jsbytes("4"), - cst_194200$0=caml_string_of_jsbytes("194200"), - cst_5$133=caml_string_of_jsbytes("5"), - cst_208600$0=caml_string_of_jsbytes("208600"), - cst_5$134=caml_string_of_jsbytes("5"), - cst_18200=caml_string_of_jsbytes("18200"), - cst_208600$1=caml_string_of_jsbytes("208600"), - cst_0$361=caml_string_of_jsbytes("0"), - cst_160400=caml_string_of_jsbytes("160400"), - cst_193400=caml_string_of_jsbytes("193400"), - cst_1$253=caml_string_of_jsbytes("1"), - cst_207800=caml_string_of_jsbytes("207800"), - cst_2$101=caml_string_of_jsbytes("2"), - cst_213700=caml_string_of_jsbytes("213700"), - cst_3$80=caml_string_of_jsbytes("3"), - cst_219600=caml_string_of_jsbytes("219600"), - cst_4$76=caml_string_of_jsbytes("4"), - cst_225500$0=caml_string_of_jsbytes("225500"), - cst_5$123=caml_string_of_jsbytes("5"), - cst_230500$1=caml_string_of_jsbytes("230500"), - cst_5$124=caml_string_of_jsbytes("5"), - cst_20000=caml_string_of_jsbytes("20000"), - cst_230500$2=caml_string_of_jsbytes("230500"), - cst_0$362=caml_string_of_jsbytes("0"), - cst_140800$0=caml_string_of_jsbytes("140800"), - cst_172500$0=caml_string_of_jsbytes("172500"), - cst_1$254=caml_string_of_jsbytes("1"), - cst_186700=caml_string_of_jsbytes("186700"), - cst_2$102=caml_string_of_jsbytes("2"), - cst_193300=caml_string_of_jsbytes("193300"), - cst_3$81=caml_string_of_jsbytes("3"), - cst_199900$1=caml_string_of_jsbytes("199900"), - cst_4$77=caml_string_of_jsbytes("4"), - cst_206500=caml_string_of_jsbytes("206500"), - cst_5$125=caml_string_of_jsbytes("5"), - cst_221100=caml_string_of_jsbytes("221100"), - cst_5$126=caml_string_of_jsbytes("5"), - cst_19300$0=caml_string_of_jsbytes("19300"), - cst_221100$0=caml_string_of_jsbytes("221100"), - cst_0$363=caml_string_of_jsbytes("0"), - cst_132000$0=caml_string_of_jsbytes("132000"), - cst_180100$0=caml_string_of_jsbytes("180100"), - cst_1$255=caml_string_of_jsbytes("1"), - cst_174500=caml_string_of_jsbytes("174500"), - cst_2$103=caml_string_of_jsbytes("2"), - cst_181800$0=caml_string_of_jsbytes("181800"), - cst_3$82=caml_string_of_jsbytes("3"), - cst_189100=caml_string_of_jsbytes("189100"), - cst_4$78=caml_string_of_jsbytes("4"), - cst_194200=caml_string_of_jsbytes("194200"), - cst_5$127=caml_string_of_jsbytes("5"), - cst_210900=caml_string_of_jsbytes("210900"), - cst_5$128=caml_string_of_jsbytes("5"), - cst_18400=caml_string_of_jsbytes("18400"), - cst_210900$0=caml_string_of_jsbytes("210900"), - cst_0$358=caml_string_of_jsbytes("0"), - cst_163300=caml_string_of_jsbytes("163300"), - cst_196900=caml_string_of_jsbytes("196900"), - cst_1$250=caml_string_of_jsbytes("1"), - cst_211600=caml_string_of_jsbytes("211600"), - cst_2$98=caml_string_of_jsbytes("2"), - cst_217600$0=caml_string_of_jsbytes("217600"), - cst_3$77=caml_string_of_jsbytes("3"), - cst_223600=caml_string_of_jsbytes("223600"), - cst_4$73=caml_string_of_jsbytes("4"), - cst_229600=caml_string_of_jsbytes("229600"), - cst_5$117=caml_string_of_jsbytes("5"), - cst_234600=caml_string_of_jsbytes("234600"), - cst_5$118=caml_string_of_jsbytes("5"), - cst_20400=caml_string_of_jsbytes("20400"), - cst_234600$0=caml_string_of_jsbytes("234600"), - cst_0$359=caml_string_of_jsbytes("0"), - cst_143300=caml_string_of_jsbytes("143300"), - cst_175600=caml_string_of_jsbytes("175600"), - cst_1$251=caml_string_of_jsbytes("1"), - cst_190100=caml_string_of_jsbytes("190100"), - cst_2$99=caml_string_of_jsbytes("2"), - cst_196600=caml_string_of_jsbytes("196600"), - cst_3$78=caml_string_of_jsbytes("3"), - cst_203500=caml_string_of_jsbytes("203500"), - cst_4$74=caml_string_of_jsbytes("4"), - cst_210200=caml_string_of_jsbytes("210200"), - cst_5$119=caml_string_of_jsbytes("5"), - cst_225100=caml_string_of_jsbytes("225100"), - cst_5$120=caml_string_of_jsbytes("5"), - cst_19600=caml_string_of_jsbytes("19600"), - cst_225100$0=caml_string_of_jsbytes("225100"), - cst_0$360=caml_string_of_jsbytes("0"), - cst_134400=caml_string_of_jsbytes("134400"), - cst_163000$0=caml_string_of_jsbytes("163000"), - cst_1$252=caml_string_of_jsbytes("1"), - cst_177700=caml_string_of_jsbytes("177700"), - cst_2$100=caml_string_of_jsbytes("2"), - cst_185100=caml_string_of_jsbytes("185100"), - cst_3$79=caml_string_of_jsbytes("3"), - cst_192500$0=caml_string_of_jsbytes("192500"), - cst_4$75=caml_string_of_jsbytes("4"), - cst_199900$0=caml_string_of_jsbytes("199900"), - cst_5$121=caml_string_of_jsbytes("5"), - cst_214700=caml_string_of_jsbytes("214700"), - cst_5$122=caml_string_of_jsbytes("5"), - cst_18700=caml_string_of_jsbytes("18700"), - cst_214700$0=caml_string_of_jsbytes("214700"), - cst_0$355=caml_string_of_jsbytes("0"), - cst_167200=caml_string_of_jsbytes("167200"), - cst_201600=caml_string_of_jsbytes("201600"), - cst_1$247=caml_string_of_jsbytes("1"), - cst_216700=caml_string_of_jsbytes("216700"), - cst_2$95=caml_string_of_jsbytes("2"), - cst_222800=caml_string_of_jsbytes("222800"), - cst_3$74=caml_string_of_jsbytes("3"), - cst_229000=caml_string_of_jsbytes("229000"), - cst_4$70=caml_string_of_jsbytes("4"), - cst_235100=caml_string_of_jsbytes("235100"), - cst_5$111=caml_string_of_jsbytes("5"), - cst_240200=caml_string_of_jsbytes("240200"), - cst_5$112=caml_string_of_jsbytes("5"), - cst_20900$0=caml_string_of_jsbytes("20900"), - cst_240200$0=caml_string_of_jsbytes("240200"), - cst_0$356=caml_string_of_jsbytes("0"), - cst_146700=caml_string_of_jsbytes("146700"), - cst_179800=caml_string_of_jsbytes("179800"), - cst_1$248=caml_string_of_jsbytes("1"), - cst_194700=caml_string_of_jsbytes("194700"), - cst_2$96=caml_string_of_jsbytes("2"), - cst_201500=caml_string_of_jsbytes("201500"), - cst_3$75=caml_string_of_jsbytes("3"), - cst_208400=caml_string_of_jsbytes("208400"), - cst_4$71=caml_string_of_jsbytes("4"), - cst_215200=caml_string_of_jsbytes("215200"), - cst_5$113=caml_string_of_jsbytes("5"), - cst_230500=caml_string_of_jsbytes("230500"), - cst_5$114=caml_string_of_jsbytes("5"), - cst_20100$0=caml_string_of_jsbytes("20100"), - cst_230500$0=caml_string_of_jsbytes("230500"), - cst_0$357=caml_string_of_jsbytes("0"), - cst_137600=caml_string_of_jsbytes("137600"), - cst_166900=caml_string_of_jsbytes("166900"), - cst_1$249=caml_string_of_jsbytes("1"), - cst_182000=caml_string_of_jsbytes("182000"), - cst_2$97=caml_string_of_jsbytes("2"), - cst_189500=caml_string_of_jsbytes("189500"), - cst_3$76=caml_string_of_jsbytes("3"), - cst_197100=caml_string_of_jsbytes("197100"), - cst_4$72=caml_string_of_jsbytes("4"), - cst_204700$0=caml_string_of_jsbytes("204700"), - cst_5$115=caml_string_of_jsbytes("5"), - cst_219900=caml_string_of_jsbytes("219900"), - cst_5$116=caml_string_of_jsbytes("5"), - cst_19100$0=caml_string_of_jsbytes("19100"), - cst_219900$0=caml_string_of_jsbytes("219900"), - cst_0$352=caml_string_of_jsbytes("0"), - cst_167400=caml_string_of_jsbytes("167400"), - cst_201800=caml_string_of_jsbytes("201800"), - cst_1$244=caml_string_of_jsbytes("1"), - cst_216900=caml_string_of_jsbytes("216900"), - cst_2$92=caml_string_of_jsbytes("2"), - cst_223000=caml_string_of_jsbytes("223000"), - cst_3$71=caml_string_of_jsbytes("3"), - cst_229200=caml_string_of_jsbytes("229200"), - cst_4$67=caml_string_of_jsbytes("4"), - cst_235300=caml_string_of_jsbytes("235300"), - cst_5$105=caml_string_of_jsbytes("5"), - cst_240400=caml_string_of_jsbytes("240400"), - cst_5$106=caml_string_of_jsbytes("5"), - cst_20900=caml_string_of_jsbytes("20900"), - cst_240400$0=caml_string_of_jsbytes("240400"), - cst_0$353=caml_string_of_jsbytes("0"), - cst_146800=caml_string_of_jsbytes("146800"), - cst_180000=caml_string_of_jsbytes("180000"), - cst_1$245=caml_string_of_jsbytes("1"), - cst_194900=caml_string_of_jsbytes("194900"), - cst_2$93=caml_string_of_jsbytes("2"), - cst_201700$0=caml_string_of_jsbytes("201700"), - cst_3$72=caml_string_of_jsbytes("3"), - cst_208600=caml_string_of_jsbytes("208600"), - cst_4$68=caml_string_of_jsbytes("4"), - cst_215400=caml_string_of_jsbytes("215400"), - cst_5$107=caml_string_of_jsbytes("5"), - cst_230700=caml_string_of_jsbytes("230700"), - cst_5$108=caml_string_of_jsbytes("5"), - cst_20100=caml_string_of_jsbytes("20100"), - cst_230700$0=caml_string_of_jsbytes("230700"), - cst_0$354=caml_string_of_jsbytes("0"), - cst_137700=caml_string_of_jsbytes("137700"), - cst_167100=caml_string_of_jsbytes("167100"), - cst_1$246=caml_string_of_jsbytes("1"), - cst_182200=caml_string_of_jsbytes("182200"), - cst_2$94=caml_string_of_jsbytes("2"), - cst_189700=caml_string_of_jsbytes("189700"), - cst_3$73=caml_string_of_jsbytes("3"), - cst_197300=caml_string_of_jsbytes("197300"), - cst_4$69=caml_string_of_jsbytes("4"), - cst_204900=caml_string_of_jsbytes("204900"), - cst_5$109=caml_string_of_jsbytes("5"), - cst_220100=caml_string_of_jsbytes("220100"), - cst_5$110=caml_string_of_jsbytes("5"), - cst_19100=caml_string_of_jsbytes("19100"), - cst_220100$0=caml_string_of_jsbytes("220100"), - cst_0$349=caml_string_of_jsbytes("0"), - cst_169100=caml_string_of_jsbytes("169100"), - cst_203800=caml_string_of_jsbytes("203800"), - cst_1$241=caml_string_of_jsbytes("1"), - cst_219100=caml_string_of_jsbytes("219100"), - cst_2$89=caml_string_of_jsbytes("2"), - cst_225200=caml_string_of_jsbytes("225200"), - cst_3$68=caml_string_of_jsbytes("3"), - cst_231500=caml_string_of_jsbytes("231500"), - cst_4$64=caml_string_of_jsbytes("4"), - cst_237700=caml_string_of_jsbytes("237700"), - cst_5$99=caml_string_of_jsbytes("5"), - cst_242800$2=caml_string_of_jsbytes("242800"), - cst_5$100=caml_string_of_jsbytes("5"), - cst_21100=caml_string_of_jsbytes("21100"), - cst_242800$3=caml_string_of_jsbytes("242800"), - cst_0$350=caml_string_of_jsbytes("0"), - cst_148300=caml_string_of_jsbytes("148300"), - cst_181800=caml_string_of_jsbytes("181800"), - cst_1$242=caml_string_of_jsbytes("1"), - cst_196800=caml_string_of_jsbytes("196800"), - cst_2$90=caml_string_of_jsbytes("2"), - cst_203700=caml_string_of_jsbytes("203700"), - cst_3$69=caml_string_of_jsbytes("3"), - cst_210700=caml_string_of_jsbytes("210700"), - cst_4$65=caml_string_of_jsbytes("4"), - cst_217600=caml_string_of_jsbytes("217600"), - cst_5$101=caml_string_of_jsbytes("5"), - cst_233000=caml_string_of_jsbytes("233000"), - cst_5$102=caml_string_of_jsbytes("5"), - cst_20300=caml_string_of_jsbytes("20300"), - cst_233000$0=caml_string_of_jsbytes("233000"), - cst_0$351=caml_string_of_jsbytes("0"), - cst_139100=caml_string_of_jsbytes("139100"), - cst_168800=caml_string_of_jsbytes("168800"), - cst_1$243=caml_string_of_jsbytes("1"), - cst_184000$1=caml_string_of_jsbytes("184000"), - cst_2$91=caml_string_of_jsbytes("2"), - cst_191600=caml_string_of_jsbytes("191600"), - cst_3$70=caml_string_of_jsbytes("3"), - cst_199300=caml_string_of_jsbytes("199300"), - cst_4$66=caml_string_of_jsbytes("4"), - cst_206900=caml_string_of_jsbytes("206900"), - cst_5$103=caml_string_of_jsbytes("5"), - cst_222300=caml_string_of_jsbytes("222300"), - cst_5$104=caml_string_of_jsbytes("5"), - cst_19300=caml_string_of_jsbytes("19300"), - cst_222300$0=caml_string_of_jsbytes("222300"), - cst_0$346=caml_string_of_jsbytes("0"), - cst_171100=caml_string_of_jsbytes("171100"), - cst_206200=caml_string_of_jsbytes("206200"), - cst_1$238=caml_string_of_jsbytes("1"), - cst_221700=caml_string_of_jsbytes("221700"), - cst_2$86=caml_string_of_jsbytes("2"), - cst_227900=caml_string_of_jsbytes("227900"), - cst_3$65=caml_string_of_jsbytes("3"), - cst_234300=caml_string_of_jsbytes("234300"), - cst_4$61=caml_string_of_jsbytes("4"), - cst_240600=caml_string_of_jsbytes("240600"), - cst_5$93=caml_string_of_jsbytes("5"), - cst_245700=caml_string_of_jsbytes("245700"), - cst_5$94=caml_string_of_jsbytes("5"), - cst_21400=caml_string_of_jsbytes("21400"), - cst_245700$0=caml_string_of_jsbytes("245700"), - cst_0$347=caml_string_of_jsbytes("0"), - cst_150100=caml_string_of_jsbytes("150100"), - cst_184000$0=caml_string_of_jsbytes("184000"), - cst_1$239=caml_string_of_jsbytes("1"), - cst_199200=caml_string_of_jsbytes("199200"), - cst_2$87=caml_string_of_jsbytes("2"), - cst_206100=caml_string_of_jsbytes("206100"), - cst_3$66=caml_string_of_jsbytes("3"), - cst_213200=caml_string_of_jsbytes("213200"), - cst_4$62=caml_string_of_jsbytes("4"), - cst_220200=caml_string_of_jsbytes("220200"), - cst_5$95=caml_string_of_jsbytes("5"), - cst_235800=caml_string_of_jsbytes("235800"), - cst_5$96=caml_string_of_jsbytes("5"), - cst_20500=caml_string_of_jsbytes("20500"), - cst_235800$0=caml_string_of_jsbytes("235800"), - cst_0$348=caml_string_of_jsbytes("0"), - cst_140800=caml_string_of_jsbytes("140800"), - cst_170800=caml_string_of_jsbytes("170800"), - cst_1$240=caml_string_of_jsbytes("1"), - cst_186200=caml_string_of_jsbytes("186200"), - cst_2$88=caml_string_of_jsbytes("2"), - cst_193900=caml_string_of_jsbytes("193900"), - cst_3$67=caml_string_of_jsbytes("3"), - cst_201700=caml_string_of_jsbytes("201700"), - cst_4$63=caml_string_of_jsbytes("4"), - cst_209400=caml_string_of_jsbytes("209400"), - cst_5$97=caml_string_of_jsbytes("5"), - cst_225000=caml_string_of_jsbytes("225000"), - cst_5$98=caml_string_of_jsbytes("5"), - cst_19500=caml_string_of_jsbytes("19500"), - cst_225000$0=caml_string_of_jsbytes("225000"), - cst_0$343=caml_string_of_jsbytes("0"), - cst_26084=caml_string_of_jsbytes("26084"), - cst_31435=caml_string_of_jsbytes("31435"), - cst_1$235=caml_string_of_jsbytes("1"), - cst_33798=caml_string_of_jsbytes("33798"), - cst_2$83=caml_string_of_jsbytes("2"), - cst_34743=caml_string_of_jsbytes("34743"), - cst_3$62=caml_string_of_jsbytes("3"), - cst_35719=caml_string_of_jsbytes("35719"), - cst_4$58=caml_string_of_jsbytes("4"), - cst_36679=caml_string_of_jsbytes("36679"), - cst_5$87=caml_string_of_jsbytes("5"), - cst_37457=caml_string_of_jsbytes("37457"), - cst_5$88=caml_string_of_jsbytes("5"), - cst_3262=caml_string_of_jsbytes("3262"), - cst_37457$0=caml_string_of_jsbytes("37457"), - cst_0$344=caml_string_of_jsbytes("0"), - cst_22883=caml_string_of_jsbytes("22883"), - cst_28051=caml_string_of_jsbytes("28051"), - cst_1$236=caml_string_of_jsbytes("1"), - cst_30368=caml_string_of_jsbytes("30368"), - cst_2$84=caml_string_of_jsbytes("2"), - cst_31420=caml_string_of_jsbytes("31420"), - cst_3$63=caml_string_of_jsbytes("3"), - cst_32502=caml_string_of_jsbytes("32502"), - cst_4$59=caml_string_of_jsbytes("4"), - cst_33569=caml_string_of_jsbytes("33569"), - cst_5$89=caml_string_of_jsbytes("5"), - cst_35947=caml_string_of_jsbytes("35947"), - cst_5$90=caml_string_of_jsbytes("5"), - cst_3125=caml_string_of_jsbytes("3125"), - cst_35947$0=caml_string_of_jsbytes("35947"), - cst_0$345=caml_string_of_jsbytes("0"), - cst_21465=caml_string_of_jsbytes("21465"), - cst_26038=caml_string_of_jsbytes("26038"), - cst_1$237=caml_string_of_jsbytes("1"), - cst_28386=caml_string_of_jsbytes("28386"), - cst_2$85=caml_string_of_jsbytes("2"), - cst_29560=caml_string_of_jsbytes("29560"), - cst_3$64=caml_string_of_jsbytes("3"), - cst_30749=caml_string_of_jsbytes("30749"), - cst_4$60=caml_string_of_jsbytes("4"), - cst_31923=caml_string_of_jsbytes("31923"), - cst_5$91=caml_string_of_jsbytes("5"), - cst_34301=caml_string_of_jsbytes("34301"), - cst_5$92=caml_string_of_jsbytes("5"), - cst_2973=caml_string_of_jsbytes("2973"), - cst_34301$0=caml_string_of_jsbytes("34301"), - cst_0$340=caml_string_of_jsbytes("0"), - cst_26397=caml_string_of_jsbytes("26397"), - cst_31812=caml_string_of_jsbytes("31812"), - cst_1$232=caml_string_of_jsbytes("1"), - cst_34204=caml_string_of_jsbytes("34204"), - cst_2$80=caml_string_of_jsbytes("2"), - cst_35160=caml_string_of_jsbytes("35160"), - cst_3$59=caml_string_of_jsbytes("3"), - cst_36148=caml_string_of_jsbytes("36148"), - cst_4$55=caml_string_of_jsbytes("4"), - cst_37119=caml_string_of_jsbytes("37119"), - cst_5$81=caml_string_of_jsbytes("5"), - cst_37906=caml_string_of_jsbytes("37906"), - cst_5$82=caml_string_of_jsbytes("5"), - cst_3301=caml_string_of_jsbytes("3301"), - cst_37906$0=caml_string_of_jsbytes("37906"), - cst_0$341=caml_string_of_jsbytes("0"), - cst_23158=caml_string_of_jsbytes("23158"), - cst_28388=caml_string_of_jsbytes("28388"), - cst_1$233=caml_string_of_jsbytes("1"), - cst_30732=caml_string_of_jsbytes("30732"), - cst_2$81=caml_string_of_jsbytes("2"), - cst_31797$1=caml_string_of_jsbytes("31797"), - cst_3$60=caml_string_of_jsbytes("3"), - cst_32892=caml_string_of_jsbytes("32892"), - cst_4$56=caml_string_of_jsbytes("4"), - cst_33972=caml_string_of_jsbytes("33972"), - cst_5$83=caml_string_of_jsbytes("5"), - cst_36378=caml_string_of_jsbytes("36378"), - cst_5$84=caml_string_of_jsbytes("5"), - cst_3163=caml_string_of_jsbytes("3163"), - cst_36378$0=caml_string_of_jsbytes("36378"), - cst_0$342=caml_string_of_jsbytes("0"), - cst_21723=caml_string_of_jsbytes("21723"), - cst_26350=caml_string_of_jsbytes("26350"), - cst_1$234=caml_string_of_jsbytes("1"), - cst_28727=caml_string_of_jsbytes("28727"), - cst_2$82=caml_string_of_jsbytes("2"), - cst_29915=caml_string_of_jsbytes("29915"), - cst_3$61=caml_string_of_jsbytes("3"), - cst_31118=caml_string_of_jsbytes("31118"), - cst_4$57=caml_string_of_jsbytes("4"), - cst_32306=caml_string_of_jsbytes("32306"), - cst_5$85=caml_string_of_jsbytes("5"), - cst_34713=caml_string_of_jsbytes("34713"), - cst_5$86=caml_string_of_jsbytes("5"), - cst_3009=caml_string_of_jsbytes("3009"), - cst_34713$0=caml_string_of_jsbytes("34713"), - cst_0$337=caml_string_of_jsbytes("0"), - cst_26714$0=caml_string_of_jsbytes("26714"), - cst_32194=caml_string_of_jsbytes("32194"), - cst_1$229=caml_string_of_jsbytes("1"), - cst_34614=caml_string_of_jsbytes("34614"), - cst_2$77=caml_string_of_jsbytes("2"), - cst_35582=caml_string_of_jsbytes("35582"), - cst_3$56=caml_string_of_jsbytes("3"), - cst_36582=caml_string_of_jsbytes("36582"), - cst_4$52=caml_string_of_jsbytes("4"), - cst_37564=caml_string_of_jsbytes("37564"), - cst_5$75=caml_string_of_jsbytes("5"), - cst_38361=caml_string_of_jsbytes("38361"), - cst_5$76=caml_string_of_jsbytes("5"), - cst_3341=caml_string_of_jsbytes("3341"), - cst_38361$0=caml_string_of_jsbytes("38361"), - cst_0$338=caml_string_of_jsbytes("0"), - cst_23436=caml_string_of_jsbytes("23436"), - cst_28729=caml_string_of_jsbytes("28729"), - cst_1$230=caml_string_of_jsbytes("1"), - cst_31101=caml_string_of_jsbytes("31101"), - cst_2$78=caml_string_of_jsbytes("2"), - cst_32179=caml_string_of_jsbytes("32179"), - cst_3$57=caml_string_of_jsbytes("3"), - cst_33287=caml_string_of_jsbytes("33287"), - cst_4$53=caml_string_of_jsbytes("4"), - cst_34380=caml_string_of_jsbytes("34380"), - cst_5$77=caml_string_of_jsbytes("5"), - cst_36815=caml_string_of_jsbytes("36815"), - cst_5$78=caml_string_of_jsbytes("5"), - cst_3201=caml_string_of_jsbytes("3201"), - cst_36815$0=caml_string_of_jsbytes("36815"), - cst_0$339=caml_string_of_jsbytes("0"), - cst_21984=caml_string_of_jsbytes("21984"), - cst_26666=caml_string_of_jsbytes("26666"), - cst_1$231=caml_string_of_jsbytes("1"), - cst_29072=caml_string_of_jsbytes("29072"), - cst_2$79=caml_string_of_jsbytes("2"), - cst_30274=caml_string_of_jsbytes("30274"), - cst_3$58=caml_string_of_jsbytes("3"), - cst_31491=caml_string_of_jsbytes("31491"), - cst_4$54=caml_string_of_jsbytes("4"), - cst_32694=caml_string_of_jsbytes("32694"), - cst_5$79=caml_string_of_jsbytes("5"), - cst_35130=caml_string_of_jsbytes("35130"), - cst_5$80=caml_string_of_jsbytes("5"), - cst_3045=caml_string_of_jsbytes("3045"), - cst_35130$0=caml_string_of_jsbytes("35130"), - cst_0$334=caml_string_of_jsbytes("0"), - cst_27195=caml_string_of_jsbytes("27195"), - cst_32773=caml_string_of_jsbytes("32773"), - cst_1$226=caml_string_of_jsbytes("1"), - cst_35237=caml_string_of_jsbytes("35237"), - cst_2$74=caml_string_of_jsbytes("2"), - cst_36222=caml_string_of_jsbytes("36222"), - cst_3$53=caml_string_of_jsbytes("3"), - cst_37240=caml_string_of_jsbytes("37240"), - cst_4$49=caml_string_of_jsbytes("4"), - cst_38240=caml_string_of_jsbytes("38240"), - cst_5$69=caml_string_of_jsbytes("5"), - cst_39051=caml_string_of_jsbytes("39051"), - cst_5$70=caml_string_of_jsbytes("5"), - cst_3401=caml_string_of_jsbytes("3401"), - cst_39051$0=caml_string_of_jsbytes("39051"), - cst_0$335=caml_string_of_jsbytes("0"), - cst_23858=caml_string_of_jsbytes("23858"), - cst_29246=caml_string_of_jsbytes("29246"), - cst_1$227=caml_string_of_jsbytes("1"), - cst_31661=caml_string_of_jsbytes("31661"), - cst_2$75=caml_string_of_jsbytes("2"), - cst_32758=caml_string_of_jsbytes("32758"), - cst_3$54=caml_string_of_jsbytes("3"), - cst_33886=caml_string_of_jsbytes("33886"), - cst_4$50=caml_string_of_jsbytes("4"), - cst_34999=caml_string_of_jsbytes("34999"), - cst_5$71=caml_string_of_jsbytes("5"), - cst_37478=caml_string_of_jsbytes("37478"), - cst_5$72=caml_string_of_jsbytes("5"), - cst_3259=caml_string_of_jsbytes("3259"), - cst_37478$0=caml_string_of_jsbytes("37478"), - cst_0$336=caml_string_of_jsbytes("0"), - cst_22380=caml_string_of_jsbytes("22380"), - cst_27146=caml_string_of_jsbytes("27146"), - cst_1$228=caml_string_of_jsbytes("1"), - cst_29595=caml_string_of_jsbytes("29595"), - cst_2$76=caml_string_of_jsbytes("2"), - cst_30819=caml_string_of_jsbytes("30819"), - cst_3$55=caml_string_of_jsbytes("3"), - cst_32058=caml_string_of_jsbytes("32058"), - cst_4$51=caml_string_of_jsbytes("4"), - cst_33282=caml_string_of_jsbytes("33282"), - cst_5$73=caml_string_of_jsbytes("5"), - cst_35762=caml_string_of_jsbytes("35762"), - cst_5$74=caml_string_of_jsbytes("5"), - cst_3100=caml_string_of_jsbytes("3100"), - cst_35762$0=caml_string_of_jsbytes("35762"), - cst_0$331=caml_string_of_jsbytes("0"), - cst_27956=caml_string_of_jsbytes("27956"), - cst_33691=caml_string_of_jsbytes("33691"), - cst_1$223=caml_string_of_jsbytes("1"), - cst_36224=caml_string_of_jsbytes("36224"), - cst_2$71=caml_string_of_jsbytes("2"), - cst_37236=caml_string_of_jsbytes("37236"), - cst_3$50=caml_string_of_jsbytes("3"), - cst_38283=caml_string_of_jsbytes("38283"), - cst_4$46=caml_string_of_jsbytes("4"), - cst_39311=caml_string_of_jsbytes("39311"), - cst_5$63=caml_string_of_jsbytes("5"), - cst_40144=caml_string_of_jsbytes("40144"), - cst_5$64=caml_string_of_jsbytes("5"), - cst_3496=caml_string_of_jsbytes("3496"), - cst_40144$0=caml_string_of_jsbytes("40144"), - cst_0$332=caml_string_of_jsbytes("0"), - cst_24526=caml_string_of_jsbytes("24526"), - cst_30065=caml_string_of_jsbytes("30065"), - cst_1$224=caml_string_of_jsbytes("1"), - cst_32548=caml_string_of_jsbytes("32548"), - cst_2$72=caml_string_of_jsbytes("2"), - cst_33675=caml_string_of_jsbytes("33675"), - cst_3$51=caml_string_of_jsbytes("3"), - cst_34865$0=caml_string_of_jsbytes("34865"), - cst_4$47=caml_string_of_jsbytes("4"), - cst_35979=caml_string_of_jsbytes("35979"), - cst_5$65=caml_string_of_jsbytes("5"), - cst_38527=caml_string_of_jsbytes("38527"), - cst_5$66=caml_string_of_jsbytes("5"), - cst_3350=caml_string_of_jsbytes("3350"), - cst_38527$0=caml_string_of_jsbytes("38527"), - cst_0$333=caml_string_of_jsbytes("0"), - cst_23007=caml_string_of_jsbytes("23007"), - cst_27906=caml_string_of_jsbytes("27906"), - cst_1$225=caml_string_of_jsbytes("1"), - cst_30424=caml_string_of_jsbytes("30424"), - cst_2$73=caml_string_of_jsbytes("2"), - cst_31682=caml_string_of_jsbytes("31682"), - cst_3$52=caml_string_of_jsbytes("3"), - cst_32956$0=caml_string_of_jsbytes("32956"), - cst_4$48=caml_string_of_jsbytes("4"), - cst_34214=caml_string_of_jsbytes("34214"), - cst_5$67=caml_string_of_jsbytes("5"), - cst_36733=caml_string_of_jsbytes("36733"), - cst_5$68=caml_string_of_jsbytes("5"), - cst_3187=caml_string_of_jsbytes("3187"), - cst_36733$0=caml_string_of_jsbytes("36733"), - cst_0$328=caml_string_of_jsbytes("0"), - cst_28728=caml_string_of_jsbytes("28728"), - cst_34621=caml_string_of_jsbytes("34621"), - cst_1$220=caml_string_of_jsbytes("1"), - cst_37224=caml_string_of_jsbytes("37224"), - cst_2$68=caml_string_of_jsbytes("2"), - cst_38264=caml_string_of_jsbytes("38264"), - cst_3$47=caml_string_of_jsbytes("3"), - cst_39340$0=caml_string_of_jsbytes("39340"), - cst_4$43=caml_string_of_jsbytes("4"), - cst_40396=caml_string_of_jsbytes("40396"), - cst_5$57=caml_string_of_jsbytes("5"), - cst_41252=caml_string_of_jsbytes("41252"), - cst_5$58=caml_string_of_jsbytes("5"), - cst_3592=caml_string_of_jsbytes("3592"), - cst_41252$0=caml_string_of_jsbytes("41252"), - cst_0$329=caml_string_of_jsbytes("0"), - cst_25203=caml_string_of_jsbytes("25203"), - cst_30895=caml_string_of_jsbytes("30895"), - cst_1$221=caml_string_of_jsbytes("1"), - cst_33446=caml_string_of_jsbytes("33446"), - cst_2$69=caml_string_of_jsbytes("2"), - cst_34604=caml_string_of_jsbytes("34604"), - cst_3$48=caml_string_of_jsbytes("3"), - cst_35796=caml_string_of_jsbytes("35796"), - cst_4$44=caml_string_of_jsbytes("4"), - cst_36972=caml_string_of_jsbytes("36972"), - cst_5$59=caml_string_of_jsbytes("5"), - cst_39590=caml_string_of_jsbytes("39590"), - cst_5$60=caml_string_of_jsbytes("5"), - cst_3442=caml_string_of_jsbytes("3442"), - cst_39590$0=caml_string_of_jsbytes("39590"), - cst_0$330=caml_string_of_jsbytes("0"), - cst_23642=caml_string_of_jsbytes("23642"), - cst_28676=caml_string_of_jsbytes("28676"), - cst_1$222=caml_string_of_jsbytes("1"), - cst_31264$0=caml_string_of_jsbytes("31264"), - cst_2$70=caml_string_of_jsbytes("2"), - cst_32556=caml_string_of_jsbytes("32556"), - cst_3$49=caml_string_of_jsbytes("3"), - cst_33866=caml_string_of_jsbytes("33866"), - cst_4$45=caml_string_of_jsbytes("4"), - cst_35158=caml_string_of_jsbytes("35158"), - cst_5$61=caml_string_of_jsbytes("5"), - cst_37778=caml_string_of_jsbytes("37778"), - cst_5$62=caml_string_of_jsbytes("5"), - cst_3275=caml_string_of_jsbytes("3275"), - cst_37778$0=caml_string_of_jsbytes("37778"), - cst_0$325=caml_string_of_jsbytes("0"), - cst_29575=caml_string_of_jsbytes("29575"), - cst_35642=caml_string_of_jsbytes("35642"), - cst_1$217=caml_string_of_jsbytes("1"), - cst_38322=caml_string_of_jsbytes("38322"), - cst_2$65=caml_string_of_jsbytes("2"), - cst_39393=caml_string_of_jsbytes("39393"), - cst_3$44=caml_string_of_jsbytes("3"), - cst_40501=caml_string_of_jsbytes("40501"), - cst_4$40=caml_string_of_jsbytes("4"), - cst_41588=caml_string_of_jsbytes("41588"), - cst_5$51=caml_string_of_jsbytes("5"), - cst_42469=caml_string_of_jsbytes("42469"), - cst_5$52=caml_string_of_jsbytes("5"), - cst_3698=caml_string_of_jsbytes("3698"), - cst_42469$0=caml_string_of_jsbytes("42469"), - cst_0$326=caml_string_of_jsbytes("0"), - cst_25946=caml_string_of_jsbytes("25946"), - cst_31806=caml_string_of_jsbytes("31806"), - cst_1$218=caml_string_of_jsbytes("1"), - cst_34433=caml_string_of_jsbytes("34433"), - cst_2$66=caml_string_of_jsbytes("2"), - cst_35625=caml_string_of_jsbytes("35625"), - cst_3$45=caml_string_of_jsbytes("3"), - cst_36852=caml_string_of_jsbytes("36852"), - cst_4$41=caml_string_of_jsbytes("4"), - cst_38063=caml_string_of_jsbytes("38063"), - cst_5$53=caml_string_of_jsbytes("5"), - cst_40758=caml_string_of_jsbytes("40758"), - cst_5$54=caml_string_of_jsbytes("5"), - cst_3544=caml_string_of_jsbytes("3544"), - cst_40758$0=caml_string_of_jsbytes("40758"), - cst_0$327=caml_string_of_jsbytes("0"), - cst_24339=caml_string_of_jsbytes("24339"), - cst_29522=caml_string_of_jsbytes("29522"), - cst_1$219=caml_string_of_jsbytes("1"), - cst_32186=caml_string_of_jsbytes("32186"), - cst_2$67=caml_string_of_jsbytes("2"), - cst_33516=caml_string_of_jsbytes("33516"), - cst_3$46=caml_string_of_jsbytes("3"), - cst_34865=caml_string_of_jsbytes("34865"), - cst_4$42=caml_string_of_jsbytes("4"), - cst_36195=caml_string_of_jsbytes("36195"), - cst_5$55=caml_string_of_jsbytes("5"), - cst_38892=caml_string_of_jsbytes("38892"), - cst_5$56=caml_string_of_jsbytes("5"), - cst_3372=caml_string_of_jsbytes("3372"), - cst_38892$0=caml_string_of_jsbytes("38892"), - cst_0$322=caml_string_of_jsbytes("0"), - cst_29670=caml_string_of_jsbytes("29670"), - cst_35757=caml_string_of_jsbytes("35757"), - cst_1$214=caml_string_of_jsbytes("1"), - cst_38445=caml_string_of_jsbytes("38445"), - cst_2$62=caml_string_of_jsbytes("2"), - cst_39519=caml_string_of_jsbytes("39519"), - cst_3$41=caml_string_of_jsbytes("3"), - cst_40601=caml_string_of_jsbytes("40601"), - cst_4$37=caml_string_of_jsbytes("4"), - cst_41721=caml_string_of_jsbytes("41721"), - cst_5$45=caml_string_of_jsbytes("5"), - cst_42605=caml_string_of_jsbytes("42605"), - cst_5$46=caml_string_of_jsbytes("5"), - cst_3710=caml_string_of_jsbytes("3710"), - cst_42605$0=caml_string_of_jsbytes("42605"), - cst_0$323=caml_string_of_jsbytes("0"), - cst_26029=caml_string_of_jsbytes("26029"), - cst_31908=caml_string_of_jsbytes("31908"), - cst_1$215=caml_string_of_jsbytes("1"), - cst_34643=caml_string_of_jsbytes("34643"), - cst_2$63=caml_string_of_jsbytes("2"), - cst_35739=caml_string_of_jsbytes("35739"), - cst_3$42=caml_string_of_jsbytes("3"), - cst_36970=caml_string_of_jsbytes("36970"), - cst_4$38=caml_string_of_jsbytes("4"), - cst_38185=caml_string_of_jsbytes("38185"), - cst_5$47=caml_string_of_jsbytes("5"), - cst_40888=caml_string_of_jsbytes("40888"), - cst_5$48=caml_string_of_jsbytes("5"), - cst_3555=caml_string_of_jsbytes("3555"), - cst_40888$0=caml_string_of_jsbytes("40888"), - cst_0$324=caml_string_of_jsbytes("0"), - cst_24417=caml_string_of_jsbytes("24417"), - cst_29616=caml_string_of_jsbytes("29616"), - cst_1$216=caml_string_of_jsbytes("1"), - cst_32289=caml_string_of_jsbytes("32289"), - cst_2$64=caml_string_of_jsbytes("2"), - cst_33623$0=caml_string_of_jsbytes("33623"), - cst_3$43=caml_string_of_jsbytes("3"), - cst_34977=caml_string_of_jsbytes("34977"), - cst_4$39=caml_string_of_jsbytes("4"), - cst_36311=caml_string_of_jsbytes("36311"), - cst_5$49=caml_string_of_jsbytes("5"), - cst_39016=caml_string_of_jsbytes("39016"), - cst_5$50=caml_string_of_jsbytes("5"), - cst_3383=caml_string_of_jsbytes("3383"), - cst_39016$0=caml_string_of_jsbytes("39016"), - cst_0$319=caml_string_of_jsbytes("0"), - cst_29996=caml_string_of_jsbytes("29996"), - cst_36149=caml_string_of_jsbytes("36149"), - cst_1$211=caml_string_of_jsbytes("1"), - cst_38868=caml_string_of_jsbytes("38868"), - cst_2$59=caml_string_of_jsbytes("2"), - cst_39954=caml_string_of_jsbytes("39954"), - cst_3$38=caml_string_of_jsbytes("3"), - cst_41078=caml_string_of_jsbytes("41078"), - cst_4$34=caml_string_of_jsbytes("4"), - cst_42180=caml_string_of_jsbytes("42180"), - cst_5$39=caml_string_of_jsbytes("5"), - cst_43074=caml_string_of_jsbytes("43074"), - cst_5$40=caml_string_of_jsbytes("5"), - cst_3751=caml_string_of_jsbytes("3751"), - cst_43074$0=caml_string_of_jsbytes("43074"), - cst_0$320=caml_string_of_jsbytes("0"), - cst_26315=caml_string_of_jsbytes("26315"), - cst_32259=caml_string_of_jsbytes("32259"), - cst_1$212=caml_string_of_jsbytes("1"), - cst_34923=caml_string_of_jsbytes("34923"), - cst_2$60=caml_string_of_jsbytes("2"), - cst_36132=caml_string_of_jsbytes("36132"), - cst_3$39=caml_string_of_jsbytes("3"), - cst_37373=caml_string_of_jsbytes("37373"), - cst_4$35=caml_string_of_jsbytes("4"), - cst_38605=caml_string_of_jsbytes("38605"), - cst_5$41=caml_string_of_jsbytes("5"), - cst_41338=caml_string_of_jsbytes("41338"), - cst_5$42=caml_string_of_jsbytes("5"), - cst_3594=caml_string_of_jsbytes("3594"), - cst_41338$0=caml_string_of_jsbytes("41338"), - cst_0$321=caml_string_of_jsbytes("0"), - cst_24686=caml_string_of_jsbytes("24686"), - cst_29942=caml_string_of_jsbytes("29942"), - cst_1$213=caml_string_of_jsbytes("1"), - cst_32644=caml_string_of_jsbytes("32644"), - cst_2$61=caml_string_of_jsbytes("2"), - cst_33993=caml_string_of_jsbytes("33993"), - cst_3$40=caml_string_of_jsbytes("3"), - cst_35362=caml_string_of_jsbytes("35362"), - cst_4$36=caml_string_of_jsbytes("4"), - cst_36710=caml_string_of_jsbytes("36710"), - cst_5$43=caml_string_of_jsbytes("5"), - cst_39445=caml_string_of_jsbytes("39445"), - cst_5$44=caml_string_of_jsbytes("5"), - cst_3420=caml_string_of_jsbytes("3420"), - cst_39445$0=caml_string_of_jsbytes("39445"), - cst_0$316=caml_string_of_jsbytes("0"), - cst_30296=caml_string_of_jsbytes("30296"), - cst_36510=caml_string_of_jsbytes("36510"), - cst_1$208=caml_string_of_jsbytes("1"), - cst_39257=caml_string_of_jsbytes("39257"), - cst_2$56=caml_string_of_jsbytes("2"), - cst_40354=caml_string_of_jsbytes("40354"), - cst_3$35=caml_string_of_jsbytes("3"), - cst_41489=caml_string_of_jsbytes("41489"), - cst_4$31=caml_string_of_jsbytes("4"), - cst_42602=caml_string_of_jsbytes("42602"), - cst_5$33=caml_string_of_jsbytes("5"), - cst_43505=caml_string_of_jsbytes("43505"), - cst_5$34=caml_string_of_jsbytes("5"), - cst_3789=caml_string_of_jsbytes("3789"), - cst_43505$0=caml_string_of_jsbytes("43505"), - cst_0$317=caml_string_of_jsbytes("0"), - cst_26578=caml_string_of_jsbytes("26578"), - cst_32582=caml_string_of_jsbytes("32582"), - cst_1$209=caml_string_of_jsbytes("1"), - cst_35272=caml_string_of_jsbytes("35272"), - cst_2$57=caml_string_of_jsbytes("2"), - cst_36493=caml_string_of_jsbytes("36493"), - cst_3$36=caml_string_of_jsbytes("3"), - cst_37751=caml_string_of_jsbytes("37751"), - cst_4$32=caml_string_of_jsbytes("4"), - cst_38991=caml_string_of_jsbytes("38991"), - cst_5$35=caml_string_of_jsbytes("5"), - cst_41751=caml_string_of_jsbytes("41751"), - cst_5$36=caml_string_of_jsbytes("5"), - cst_3630=caml_string_of_jsbytes("3630"), - cst_41751$0=caml_string_of_jsbytes("41751"), - cst_0$318=caml_string_of_jsbytes("0"), - cst_24933=caml_string_of_jsbytes("24933"), - cst_30241=caml_string_of_jsbytes("30241"), - cst_1$210=caml_string_of_jsbytes("1"), - cst_32970=caml_string_of_jsbytes("32970"), - cst_2$58=caml_string_of_jsbytes("2"), - cst_34333=caml_string_of_jsbytes("34333"), - cst_3$37=caml_string_of_jsbytes("3"), - cst_35716=caml_string_of_jsbytes("35716"), - cst_4$33=caml_string_of_jsbytes("4"), - cst_37077=caml_string_of_jsbytes("37077"), - cst_5$37=caml_string_of_jsbytes("5"), - cst_39839=caml_string_of_jsbytes("39839"), - cst_5$38=caml_string_of_jsbytes("5"), - cst_3454=caml_string_of_jsbytes("3454"), - cst_39839$0=caml_string_of_jsbytes("39839"), - cst_0$313=caml_string_of_jsbytes("0"), - cst_30947=caml_string_of_jsbytes("30947"), - cst_37295=caml_string_of_jsbytes("37295"), - cst_1$205=caml_string_of_jsbytes("1"), - cst_40101=caml_string_of_jsbytes("40101"), - cst_2$53=caml_string_of_jsbytes("2"), - cst_41222=caml_string_of_jsbytes("41222"), - cst_3$32=caml_string_of_jsbytes("3"), - cst_42381=caml_string_of_jsbytes("42381"), - cst_4$28=caml_string_of_jsbytes("4"), - cst_43518=caml_string_of_jsbytes("43518"), - cst_5$27=caml_string_of_jsbytes("5"), - cst_44440=caml_string_of_jsbytes("44440"), - cst_5$28=caml_string_of_jsbytes("5"), - cst_3870=caml_string_of_jsbytes("3870"), - cst_44440$0=caml_string_of_jsbytes("44440"), - cst_0$314=caml_string_of_jsbytes("0"), - cst_27149=caml_string_of_jsbytes("27149"), - cst_33283=caml_string_of_jsbytes("33283"), - cst_1$206=caml_string_of_jsbytes("1"), - cst_36030=caml_string_of_jsbytes("36030"), - cst_2$54=caml_string_of_jsbytes("2"), - cst_37278=caml_string_of_jsbytes("37278"), - cst_3$33=caml_string_of_jsbytes("3"), - cst_38563=caml_string_of_jsbytes("38563"), - cst_4$29=caml_string_of_jsbytes("4"), - cst_39829=caml_string_of_jsbytes("39829"), - cst_5$29=caml_string_of_jsbytes("5"), - cst_42649=caml_string_of_jsbytes("42649"), - cst_5$30=caml_string_of_jsbytes("5"), - cst_3708=caml_string_of_jsbytes("3708"), - cst_42659=caml_string_of_jsbytes("42659"), - cst_0$315=caml_string_of_jsbytes("0"), - cst_25469=caml_string_of_jsbytes("25469"), - cst_30891=caml_string_of_jsbytes("30891"), - cst_1$207=caml_string_of_jsbytes("1"), - cst_33679=caml_string_of_jsbytes("33679"), - cst_2$55=caml_string_of_jsbytes("2"), - cst_35071=caml_string_of_jsbytes("35071"), - cst_3$34=caml_string_of_jsbytes("3"), - cst_36484=caml_string_of_jsbytes("36484"), - cst_4$30=caml_string_of_jsbytes("4"), - cst_37874=caml_string_of_jsbytes("37874"), - cst_5$31=caml_string_of_jsbytes("5"), - cst_40696=caml_string_of_jsbytes("40696"), - cst_5$32=caml_string_of_jsbytes("5"), - cst_3528=caml_string_of_jsbytes("3528"), - cst_40696$0=caml_string_of_jsbytes("40696"), - cst_0$310=caml_string_of_jsbytes("0"), - cst_31123=caml_string_of_jsbytes("31123"), - cst_37508=caml_string_of_jsbytes("37508"), - cst_1$202=caml_string_of_jsbytes("1"), - cst_40330=caml_string_of_jsbytes("40330"), - cst_2$50=caml_string_of_jsbytes("2"), - cst_41457=caml_string_of_jsbytes("41457"), - cst_3$29=caml_string_of_jsbytes("3"), - cst_42623=caml_string_of_jsbytes("42623"), - cst_4$25=caml_string_of_jsbytes("4"), - cst_43766=caml_string_of_jsbytes("43766"), - cst_5$21=caml_string_of_jsbytes("5"), - cst_44693=caml_string_of_jsbytes("44693"), - cst_5$22=caml_string_of_jsbytes("5"), - cst_3892=caml_string_of_jsbytes("3892"), - cst_44693$0=caml_string_of_jsbytes("44693"), - cst_0$311=caml_string_of_jsbytes("0"), - cst_27304=caml_string_of_jsbytes("27304"), - cst_33473=caml_string_of_jsbytes("33473"), - cst_1$203=caml_string_of_jsbytes("1"), - cst_36235=caml_string_of_jsbytes("36235"), - cst_2$51=caml_string_of_jsbytes("2"), - cst_37490=caml_string_of_jsbytes("37490"), - cst_3$30=caml_string_of_jsbytes("3"), - cst_38783=caml_string_of_jsbytes("38783"), - cst_4$26=caml_string_of_jsbytes("4"), - cst_40056=caml_string_of_jsbytes("40056"), - cst_5$23=caml_string_of_jsbytes("5"), - cst_42892=caml_string_of_jsbytes("42892"), - cst_5$24=caml_string_of_jsbytes("5"), - cst_3729=caml_string_of_jsbytes("3729"), - cst_42892$0=caml_string_of_jsbytes("42892"), - cst_0$312=caml_string_of_jsbytes("0"), - cst_25614=caml_string_of_jsbytes("25614"), - cst_31067=caml_string_of_jsbytes("31067"), - cst_1$204=caml_string_of_jsbytes("1"), - cst_33871=caml_string_of_jsbytes("33871"), - cst_2$52=caml_string_of_jsbytes("2"), - cst_35271=caml_string_of_jsbytes("35271"), - cst_3$31=caml_string_of_jsbytes("3"), - cst_36692=caml_string_of_jsbytes("36692"), - cst_4$27=caml_string_of_jsbytes("4"), - cst_38090=caml_string_of_jsbytes("38090"), - cst_5$25=caml_string_of_jsbytes("5"), - cst_40928=caml_string_of_jsbytes("40928"), - cst_5$26=caml_string_of_jsbytes("5"), - cst_3548=caml_string_of_jsbytes("3548"), - cst_40928$0=caml_string_of_jsbytes("40928"), - cst_0$307=caml_string_of_jsbytes("0"), - cst_31148=caml_string_of_jsbytes("31148"), - cst_37538=caml_string_of_jsbytes("37538"), - cst_1$199=caml_string_of_jsbytes("1"), - cst_40362=caml_string_of_jsbytes("40362"), - cst_2$47=caml_string_of_jsbytes("2"), - cst_41490=caml_string_of_jsbytes("41490"), - cst_3$26=caml_string_of_jsbytes("3"), - cst_42657=caml_string_of_jsbytes("42657"), - cst_4$22=caml_string_of_jsbytes("4"), - cst_43801=caml_string_of_jsbytes("43801"), - cst_5$15=caml_string_of_jsbytes("5"), - cst_44729=caml_string_of_jsbytes("44729"), - cst_5$16=caml_string_of_jsbytes("5"), - cst_3895=caml_string_of_jsbytes("3895"), - cst_44729$0=caml_string_of_jsbytes("44729"), - cst_0$308=caml_string_of_jsbytes("0"), - cst_27326=caml_string_of_jsbytes("27326"), - cst_33500$0=caml_string_of_jsbytes("33500"), - cst_1$200=caml_string_of_jsbytes("1"), - cst_36264=caml_string_of_jsbytes("36264"), - cst_2$48=caml_string_of_jsbytes("2"), - cst_37520=caml_string_of_jsbytes("37520"), - cst_3$27=caml_string_of_jsbytes("3"), - cst_38814=caml_string_of_jsbytes("38814"), - cst_4$23=caml_string_of_jsbytes("4"), - cst_40088=caml_string_of_jsbytes("40088"), - cst_5$17=caml_string_of_jsbytes("5"), - cst_42926=caml_string_of_jsbytes("42926"), - cst_5$18=caml_string_of_jsbytes("5"), - cst_3732=caml_string_of_jsbytes("3732"), - cst_42926$0=caml_string_of_jsbytes("42926"), - cst_0$309=caml_string_of_jsbytes("0"), - cst_25634=caml_string_of_jsbytes("25634"), - cst_31092=caml_string_of_jsbytes("31092"), - cst_1$201=caml_string_of_jsbytes("1"), - cst_33898=caml_string_of_jsbytes("33898"), - cst_2$49=caml_string_of_jsbytes("2"), - cst_35299=caml_string_of_jsbytes("35299"), - cst_3$28=caml_string_of_jsbytes("3"), - cst_36721=caml_string_of_jsbytes("36721"), - cst_4$24=caml_string_of_jsbytes("4"), - cst_38120=caml_string_of_jsbytes("38120"), - cst_5$19=caml_string_of_jsbytes("5"), - cst_40961=caml_string_of_jsbytes("40961"), - cst_5$20=caml_string_of_jsbytes("5"), - cst_3551=caml_string_of_jsbytes("3551"), - cst_40961$0=caml_string_of_jsbytes("40961"), - cst_0$304=caml_string_of_jsbytes("0"), - cst_31382=caml_string_of_jsbytes("31382"), - cst_37820=caml_string_of_jsbytes("37820"), - cst_1$196=caml_string_of_jsbytes("1"), - cst_40665=caml_string_of_jsbytes("40665"), - cst_2$44=caml_string_of_jsbytes("2"), - cst_41801=caml_string_of_jsbytes("41801"), - cst_3$23=caml_string_of_jsbytes("3"), - cst_42977=caml_string_of_jsbytes("42977"), - cst_4$19=caml_string_of_jsbytes("4"), - cst_44130=caml_string_of_jsbytes("44130"), - cst_5$9=caml_string_of_jsbytes("5"), - cst_45064=caml_string_of_jsbytes("45064"), - cst_5$10=caml_string_of_jsbytes("5"), - cst_3924=caml_string_of_jsbytes("3924"), - cst_45064$0=caml_string_of_jsbytes("45064"), - cst_0$305=caml_string_of_jsbytes("0"), - cst_27531=caml_string_of_jsbytes("27531"), - cst_33751=caml_string_of_jsbytes("33751"), - cst_1$197=caml_string_of_jsbytes("1"), - cst_36536=caml_string_of_jsbytes("36536"), - cst_2$45=caml_string_of_jsbytes("2"), - cst_37801=caml_string_of_jsbytes("37801"), - cst_3$24=caml_string_of_jsbytes("3"), - cst_39105=caml_string_of_jsbytes("39105"), - cst_4$20=caml_string_of_jsbytes("4"), - cst_40389=caml_string_of_jsbytes("40389"), - cst_5$11=caml_string_of_jsbytes("5"), - cst_43248=caml_string_of_jsbytes("43248"), - cst_5$12=caml_string_of_jsbytes("5"), - cst_3760=caml_string_of_jsbytes("3760"), - cst_43248$0=caml_string_of_jsbytes("43248"), - cst_0$306=caml_string_of_jsbytes("0"), - cst_25826=caml_string_of_jsbytes("25826"), - cst_31325=caml_string_of_jsbytes("31325"), - cst_1$198=caml_string_of_jsbytes("1"), - cst_34152=caml_string_of_jsbytes("34152"), - cst_2$46=caml_string_of_jsbytes("2"), - cst_35564=caml_string_of_jsbytes("35564"), - cst_3$25=caml_string_of_jsbytes("3"), - cst_36996=caml_string_of_jsbytes("36996"), - cst_4$21=caml_string_of_jsbytes("4"), - cst_38406=caml_string_of_jsbytes("38406"), - cst_5$13=caml_string_of_jsbytes("5"), - cst_41268=caml_string_of_jsbytes("41268"), - cst_5$14=caml_string_of_jsbytes("5"), - cst_3578=caml_string_of_jsbytes("3578"), - cst_41268$0=caml_string_of_jsbytes("41268"), - cst_0$301=caml_string_of_jsbytes("0"), - cst_31476=caml_string_of_jsbytes("31476"), - cst_37933=caml_string_of_jsbytes("37933"), - cst_1$193=caml_string_of_jsbytes("1"), - cst_40787=caml_string_of_jsbytes("40787"), - cst_2$41=caml_string_of_jsbytes("2"), - cst_41927=caml_string_of_jsbytes("41927"), - cst_3$20=caml_string_of_jsbytes("3"), - cst_43106=caml_string_of_jsbytes("43106"), - cst_4$16=caml_string_of_jsbytes("4"), - cst_44262=caml_string_of_jsbytes("44262"), - cst_5$3=caml_string_of_jsbytes("5"), - cst_45200=caml_string_of_jsbytes("45200"), - cst_5$4=caml_string_of_jsbytes("5"), - cst_3936=caml_string_of_jsbytes("3936"), - cst_45200$0=caml_string_of_jsbytes("45200"), - cst_0$302=caml_string_of_jsbytes("0"), - cst_27614=caml_string_of_jsbytes("27614"), - cst_33853=caml_string_of_jsbytes("33853"), - cst_1$194=caml_string_of_jsbytes("1"), - cst_36646=caml_string_of_jsbytes("36646"), - cst_2$42=caml_string_of_jsbytes("2"), - cst_37915=caml_string_of_jsbytes("37915"), - cst_3$21=caml_string_of_jsbytes("3"), - cst_39222=caml_string_of_jsbytes("39222"), - cst_4$17=caml_string_of_jsbytes("4"), - cst_40510=caml_string_of_jsbytes("40510"), - cst_5$5=caml_string_of_jsbytes("5"), - cst_43378=caml_string_of_jsbytes("43378"), - cst_5$6=caml_string_of_jsbytes("5"), - cst_3771=caml_string_of_jsbytes("3771"), - cst_43378$0=caml_string_of_jsbytes("43378"), - cst_0$303=caml_string_of_jsbytes("0"), - cst_25904=caml_string_of_jsbytes("25904"), - cst_31419=caml_string_of_jsbytes("31419"), - cst_1$195=caml_string_of_jsbytes("1"), - cst_34255=caml_string_of_jsbytes("34255"), - cst_2$43=caml_string_of_jsbytes("2"), - cst_35670=caml_string_of_jsbytes("35670"), - cst_3$22=caml_string_of_jsbytes("3"), - cst_37107=caml_string_of_jsbytes("37107"), - cst_4$18=caml_string_of_jsbytes("4"), - cst_38521=caml_string_of_jsbytes("38521"), - cst_5$7=caml_string_of_jsbytes("5"), - cst_41392=caml_string_of_jsbytes("41392"), - cst_5$8=caml_string_of_jsbytes("5"), - cst_3588=caml_string_of_jsbytes("3588"), - cst_41392$0=caml_string_of_jsbytes("41392"), - cst_0$299=caml_string_of_jsbytes("0"), - cst_0$300=caml_string_of_jsbytes("0"), - cst_1229$5=caml_string_of_jsbytes("1229"), - cst_2710$1=caml_string_of_jsbytes("2710"), - cst_5422$7=caml_string_of_jsbytes("5422"), - cst_0$298=caml_string_of_jsbytes("0"), - cst_5422$5=caml_string_of_jsbytes("5422"), - cst_1229$4=caml_string_of_jsbytes("1229"), - cst_5422$6=caml_string_of_jsbytes("5422"), - cst_16_25$0=caml_string_of_jsbytes("16.25"), - cst_0_0234$1=caml_string_of_jsbytes("0.0234"), - cst_390000=caml_string_of_jsbytes("390000"), - cst_1500$1=caml_string_of_jsbytes("1500"), - cst_1000$4=caml_string_of_jsbytes("1000"), - cst_6_55957$0=caml_string_of_jsbytes("6.55957"), - cst_1$192=caml_string_of_jsbytes("1."), - cst_500$3=caml_string_of_jsbytes("500"), - cst_0$297=caml_string_of_jsbytes("0"), - cst_0$295=caml_string_of_jsbytes("0"), - cst_50$5=caml_string_of_jsbytes("50"), - cst_50$6=caml_string_of_jsbytes("50"), - cst_0$296=caml_string_of_jsbytes("0"), - cst_0$293=caml_string_of_jsbytes("0"), - cst_0$294=caml_string_of_jsbytes("0"), - cst_0$292=caml_string_of_jsbytes("0"), - cst_0$290=caml_string_of_jsbytes("0"), - cst_0$291=caml_string_of_jsbytes("0"), - cst_8414=caml_string_of_jsbytes("8414"), - cst_13100=caml_string_of_jsbytes("13100"), - cst_20640=caml_string_of_jsbytes("20640"), - cst_32073=caml_string_of_jsbytes("32073"), - cst_17012$0=caml_string_of_jsbytes("17012"), - cst_26440$0=caml_string_of_jsbytes("26440"), - cst_17012=caml_string_of_jsbytes("17012"), - cst_26440=caml_string_of_jsbytes("26440"), - cst_0$289=caml_string_of_jsbytes("0"), - cst_5422$3=caml_string_of_jsbytes("5422"), - cst_1229$3=caml_string_of_jsbytes("1229"), - cst_5422$4=caml_string_of_jsbytes("5422"), - cst_1500$0=caml_string_of_jsbytes("1500"), - cst_500$2=caml_string_of_jsbytes("500"), - cst_1000$3=caml_string_of_jsbytes("1000"), - cst_0$288=caml_string_of_jsbytes("0"), - cst_3$19=caml_string_of_jsbytes("3."), - cst_2$40=caml_string_of_jsbytes("2."), - cst_169$2=caml_string_of_jsbytes("169."), - cst_0_55$2=caml_string_of_jsbytes("0.55"), - cst_169$1=caml_string_of_jsbytes("169."), - cst_0_55$1=caml_string_of_jsbytes("0.55"), - cst_20$0=caml_string_of_jsbytes("20"), - cst_12$15=caml_string_of_jsbytes("12."), - cst_0$287=caml_string_of_jsbytes("0"), - cst_0$286=caml_string_of_jsbytes("0"), - cst_0$278=caml_string_of_jsbytes("0"), - cst_0$279=caml_string_of_jsbytes("0"), - cst_2$38=caml_string_of_jsbytes("2"), - cst_90100=caml_string_of_jsbytes("90100"), - cst_135000=caml_string_of_jsbytes("135000"), - cst_0$280=caml_string_of_jsbytes("0"), - cst_0$281=caml_string_of_jsbytes("0"), - cst_0$282=caml_string_of_jsbytes("0"), - cst_0$283=caml_string_of_jsbytes("0"), - cst_0$284=caml_string_of_jsbytes("0"), - cst_2$39=caml_string_of_jsbytes("2"), - cst_90100$0=caml_string_of_jsbytes("90100"), - cst_135000$0=caml_string_of_jsbytes("135000"), - cst_0$285=caml_string_of_jsbytes("0"), - cst_0$277=caml_string_of_jsbytes("0"), - cst_9500=caml_string_of_jsbytes("9500"), - cst_258900=caml_string_of_jsbytes("258900"), - cst_0$275=caml_string_of_jsbytes("0."), - cst_0$276=caml_string_of_jsbytes("0."), - cst_1_25$0=caml_string_of_jsbytes("1.25"), - cst_21=caml_string_of_jsbytes("21"), - cst_1_25=caml_string_of_jsbytes("1.25"), - cst_0$274=caml_string_of_jsbytes("0"), - cst_0$273=caml_string_of_jsbytes("0"), - cst_0$272=caml_string_of_jsbytes("0"), - cst_70=caml_string_of_jsbytes("70"), - cst_8=caml_string_of_jsbytes("8"), - cst_70$0=caml_string_of_jsbytes("70"), - cst_0$271=caml_string_of_jsbytes("0."), - cst_0$270=caml_string_of_jsbytes("0."), - cst_999840=caml_string_of_jsbytes("999840"), - cst_1041840=caml_string_of_jsbytes("1041840"), - cst_1083840=caml_string_of_jsbytes("1083840"), - cst_1100144=caml_string_of_jsbytes("1100144"), - cst_1088175=caml_string_of_jsbytes("1088175"), - cst_30=caml_string_of_jsbytes("30"), - cst_9=caml_string_of_jsbytes("9"), - cst_9$0=caml_string_of_jsbytes("9"), - cst_16$2=caml_string_of_jsbytes("16"), - cst_16$3=caml_string_of_jsbytes("16"), - cst_16$4=caml_string_of_jsbytes("16"), - cst_9$1=caml_string_of_jsbytes("9"), - cst_16$5=caml_string_of_jsbytes("16"), - cst_1$190=caml_string_of_jsbytes("1"), - cst_2$34=caml_string_of_jsbytes("2"), - cst_2$35=caml_string_of_jsbytes("2"), - cst_2$36=caml_string_of_jsbytes("2"), - cst_1$191=caml_string_of_jsbytes("1"), - cst_2$37=caml_string_of_jsbytes("2"), - cst_3000000=caml_string_of_jsbytes("3000000"), - cst_0_1$0=caml_string_of_jsbytes("0.1"), - cst_0_1=caml_string_of_jsbytes("0.1"), - cst_0_2=caml_string_of_jsbytes("0.2"), - cst_0_2$0=caml_string_of_jsbytes("0.2"), - cst_0$269=caml_string_of_jsbytes("0"), - cst_0$267=caml_string_of_jsbytes("0"), - cst_0$268=caml_string_of_jsbytes("0"), - cst_0$265=caml_string_of_jsbytes("0"), - cst_50$3=caml_string_of_jsbytes("50"), - cst_50$4=caml_string_of_jsbytes("50"), - cst_0$266=caml_string_of_jsbytes("0"), - cst_0_95$3=caml_string_of_jsbytes("0.95"), - cst_0_95$4=caml_string_of_jsbytes("0.95"), - cst_0$263=caml_string_of_jsbytes("0"), - cst_0$264=caml_string_of_jsbytes("0"), - cst_100$7=caml_string_of_jsbytes("100."), - cst_100$8=caml_string_of_jsbytes("100."), - cst_0_005$2=caml_string_of_jsbytes("0.005"), - cst_12$14=caml_string_of_jsbytes("12."), - cst_0$262=caml_string_of_jsbytes("0."), - cst_0_75$6=caml_string_of_jsbytes("0.75"), - cst_0_75$5=caml_string_of_jsbytes("0.75"), - cst_0$261=caml_string_of_jsbytes("0"), - cst_0_95$2=caml_string_of_jsbytes("0.95"), - cst_0$258=caml_string_of_jsbytes("0"), - cst_208500$0=caml_string_of_jsbytes("208500"), - cst_251500$0=caml_string_of_jsbytes("251500"), - cst_1$187=caml_string_of_jsbytes("1"), - cst_43000$0=caml_string_of_jsbytes("43000"), - cst_294500$0=caml_string_of_jsbytes("294500"), - cst_0$259=caml_string_of_jsbytes("0"), - cst_186000$0=caml_string_of_jsbytes("186000"), - cst_223900$1=caml_string_of_jsbytes("223900"), - cst_1$188=caml_string_of_jsbytes("1"), - cst_37900$1=caml_string_of_jsbytes("37900"), - cst_261800$1=caml_string_of_jsbytes("261800"), - cst_0$260=caml_string_of_jsbytes("0"), - cst_173600$0=caml_string_of_jsbytes("173600"), - cst_208200$1=caml_string_of_jsbytes("208200"), - cst_1$189=caml_string_of_jsbytes("1"), - cst_35600=caml_string_of_jsbytes("35600"), - cst_242800$1=caml_string_of_jsbytes("242800"), - cst_0$255=caml_string_of_jsbytes("0"), - cst_167800$0=caml_string_of_jsbytes("167800"), - cst_202500$1=caml_string_of_jsbytes("202500"), - cst_1$184=caml_string_of_jsbytes("1"), - cst_37400=caml_string_of_jsbytes("37400"), - cst_237200$0=caml_string_of_jsbytes("237200"), - cst_0$256=caml_string_of_jsbytes("0"), - cst_146900=caml_string_of_jsbytes("146900"), - cst_180100=caml_string_of_jsbytes("180100"), - cst_1$185=caml_string_of_jsbytes("1"), - cst_30500$1=caml_string_of_jsbytes("30500"), - cst_210600=caml_string_of_jsbytes("210600"), - cst_0$257=caml_string_of_jsbytes("0"), - cst_139700$0=caml_string_of_jsbytes("139700"), - cst_167600=caml_string_of_jsbytes("167600"), - cst_1$186=caml_string_of_jsbytes("1"), - cst_27900=caml_string_of_jsbytes("27900"), - cst_195500=caml_string_of_jsbytes("195500"), - cst_0$252=caml_string_of_jsbytes("0"), - cst_184000=caml_string_of_jsbytes("184000"), - cst_220000=caml_string_of_jsbytes("220000"), - cst_1$181=caml_string_of_jsbytes("1"), - cst_38000=caml_string_of_jsbytes("38000"), - cst_260000=caml_string_of_jsbytes("260000"), - cst_0$253=caml_string_of_jsbytes("0"), - cst_164200=caml_string_of_jsbytes("164200"), - cst_197700=caml_string_of_jsbytes("197700"), - cst_1$182=caml_string_of_jsbytes("1"), - cst_33500=caml_string_of_jsbytes("33500"), - cst_231200=caml_string_of_jsbytes("231200"), - cst_0$254=caml_string_of_jsbytes("0"), - cst_153200=caml_string_of_jsbytes("153200"), - cst_183700=caml_string_of_jsbytes("183700"), - cst_1$183=caml_string_of_jsbytes("1"), - cst_30500$0=caml_string_of_jsbytes("30500"), - cst_214200=caml_string_of_jsbytes("214200"), - cst_0$249=caml_string_of_jsbytes("0"), - cst_148100=caml_string_of_jsbytes("148100"), - cst_178700=caml_string_of_jsbytes("178700"), - cst_1$178=caml_string_of_jsbytes("1"), - cst_30600=caml_string_of_jsbytes("30600"), - cst_209300=caml_string_of_jsbytes("209300"), - cst_0$250=caml_string_of_jsbytes("0"), - cst_132000=caml_string_of_jsbytes("132000"), - cst_158900=caml_string_of_jsbytes("158900"), - cst_1$179=caml_string_of_jsbytes("1"), - cst_26900=caml_string_of_jsbytes("26900"), - cst_185800$0=caml_string_of_jsbytes("185800"), - cst_0$251=caml_string_of_jsbytes("0"), - cst_123300=caml_string_of_jsbytes("123300"), - cst_147900=caml_string_of_jsbytes("147900"), - cst_1$180=caml_string_of_jsbytes("1"), - cst_24600=caml_string_of_jsbytes("24600"), - cst_172500=caml_string_of_jsbytes("172500"), - cst_0$246=caml_string_of_jsbytes("0"), - cst_208500=caml_string_of_jsbytes("208500"), - cst_251500=caml_string_of_jsbytes("251500"), - cst_1$175=caml_string_of_jsbytes("1"), - cst_43000=caml_string_of_jsbytes("43000"), - cst_294500=caml_string_of_jsbytes("294500"), - cst_0$247=caml_string_of_jsbytes("0"), - cst_186000=caml_string_of_jsbytes("186000"), - cst_223900$0=caml_string_of_jsbytes("223900"), - cst_1$176=caml_string_of_jsbytes("1"), - cst_37900$0=caml_string_of_jsbytes("37900"), - cst_261800$0=caml_string_of_jsbytes("261800"), - cst_0$248=caml_string_of_jsbytes("0"), - cst_173600=caml_string_of_jsbytes("173600"), - cst_208200$0=caml_string_of_jsbytes("208200"), - cst_1$177=caml_string_of_jsbytes("1"), - cst_34600$0=caml_string_of_jsbytes("34600"), - cst_242800$0=caml_string_of_jsbytes("242800"), - cst_0$243=caml_string_of_jsbytes("0"), - cst_167800=caml_string_of_jsbytes("167800"), - cst_202500$0=caml_string_of_jsbytes("202500"), - cst_1$172=caml_string_of_jsbytes("1"), - cst_34700=caml_string_of_jsbytes("34700"), - cst_237200=caml_string_of_jsbytes("237200"), - cst_0$244=caml_string_of_jsbytes("0"), - cst_149600=caml_string_of_jsbytes("149600"), - cst_223900=caml_string_of_jsbytes("223900"), - cst_1$173=caml_string_of_jsbytes("1"), - cst_37900=caml_string_of_jsbytes("37900"), - cst_261800=caml_string_of_jsbytes("261800"), - cst_0$245=caml_string_of_jsbytes("0"), - cst_139700=caml_string_of_jsbytes("139700"), - cst_208200=caml_string_of_jsbytes("208200"), - cst_1$174=caml_string_of_jsbytes("1"), - cst_34600=caml_string_of_jsbytes("34600"), - cst_242800=caml_string_of_jsbytes("242800"), - cst_0$242=caml_string_of_jsbytes("0"), - cst_86900=caml_string_of_jsbytes("86900"), - cst_97100=caml_string_of_jsbytes("97100"), - cst_1$171=caml_string_of_jsbytes("1"), - cst_10200=caml_string_of_jsbytes("10200"), - cst_107300=caml_string_of_jsbytes("107300"), - cst_0$239=caml_string_of_jsbytes("0"), - cst_198100=caml_string_of_jsbytes("198100"), - cst_239000=caml_string_of_jsbytes("239000"), - cst_1$168=caml_string_of_jsbytes("1"), - cst_40900=caml_string_of_jsbytes("40900"), - cst_279900=caml_string_of_jsbytes("279900"), - cst_0$240=caml_string_of_jsbytes("0"), - cst_176800=caml_string_of_jsbytes("176800"), - cst_212800=caml_string_of_jsbytes("212800"), - cst_1$169=caml_string_of_jsbytes("1"), - cst_36000=caml_string_of_jsbytes("36000"), - cst_248800=caml_string_of_jsbytes("248800"), - cst_0$241=caml_string_of_jsbytes("0"), - cst_165000=caml_string_of_jsbytes("165000"), - cst_197900=caml_string_of_jsbytes("197900"), - cst_1$170=caml_string_of_jsbytes("1"), - cst_32900=caml_string_of_jsbytes("32900"), - cst_230800=caml_string_of_jsbytes("230800"), - cst_0$236=caml_string_of_jsbytes("0"), - cst_159500=caml_string_of_jsbytes("159500"), - cst_192500=caml_string_of_jsbytes("192500"), - cst_1$165=caml_string_of_jsbytes("1"), - cst_33000=caml_string_of_jsbytes("33000"), - cst_225500=caml_string_of_jsbytes("225500"), - cst_0$237=caml_string_of_jsbytes("0"), - cst_142200=caml_string_of_jsbytes("142200"), - cst_171200=caml_string_of_jsbytes("171200"), - cst_1$166=caml_string_of_jsbytes("1"), - cst_29000=caml_string_of_jsbytes("29000"), - cst_200200=caml_string_of_jsbytes("200200"), - cst_0$238=caml_string_of_jsbytes("0"), - cst_132800=caml_string_of_jsbytes("132800"), - cst_159300=caml_string_of_jsbytes("159300"), - cst_1$167=caml_string_of_jsbytes("1"), - cst_26500=caml_string_of_jsbytes("26500"), - cst_185800=caml_string_of_jsbytes("185800"), - cst_0$233=caml_string_of_jsbytes("0"), - cst_200100=caml_string_of_jsbytes("200100"), - cst_141400=caml_string_of_jsbytes("141400"), - cst_1$162=caml_string_of_jsbytes("1"), - cst_41300=caml_string_of_jsbytes("41300"), - cst_282700=caml_string_of_jsbytes("282700"), - cst_0$234=caml_string_of_jsbytes("0"), - cst_178600=caml_string_of_jsbytes("178600"), - cst_215000=caml_string_of_jsbytes("215000"), - cst_1$163=caml_string_of_jsbytes("1"), - cst_36400=caml_string_of_jsbytes("36400"), - cst_251400=caml_string_of_jsbytes("251400"), - cst_0$235=caml_string_of_jsbytes("0"), - cst_166700=caml_string_of_jsbytes("166700"), - cst_199900=caml_string_of_jsbytes("199900"), - cst_1$164=caml_string_of_jsbytes("1"), - cst_33200=caml_string_of_jsbytes("33200"), - cst_233100=caml_string_of_jsbytes("233100"), - cst_0$230=caml_string_of_jsbytes("0"), - cst_161100=caml_string_of_jsbytes("161100"), - cst_194400=caml_string_of_jsbytes("194400"), - cst_1$159=caml_string_of_jsbytes("1"), - cst_33300=caml_string_of_jsbytes("33300"), - cst_227700=caml_string_of_jsbytes("227700"), - cst_0$231=caml_string_of_jsbytes("0"), - cst_143600=caml_string_of_jsbytes("143600"), - cst_172900=caml_string_of_jsbytes("172900"), - cst_1$160=caml_string_of_jsbytes("1"), - cst_29300=caml_string_of_jsbytes("29300"), - cst_202200=caml_string_of_jsbytes("202200"), - cst_0$232=caml_string_of_jsbytes("0"), - cst_134100=caml_string_of_jsbytes("134100"), - cst_160900=caml_string_of_jsbytes("160900"), - cst_1$161=caml_string_of_jsbytes("1"), - cst_26800=caml_string_of_jsbytes("26800"), - cst_187700=caml_string_of_jsbytes("187700"), - cst_0$227=caml_string_of_jsbytes("0"), - cst_202500=caml_string_of_jsbytes("202500"), - cst_244300=caml_string_of_jsbytes("244300"), - cst_1$156=caml_string_of_jsbytes("1"), - cst_41800=caml_string_of_jsbytes("41800"), - cst_286100=caml_string_of_jsbytes("286100"), - cst_0$228=caml_string_of_jsbytes("0"), - cst_180700=caml_string_of_jsbytes("180700"), - cst_217500=caml_string_of_jsbytes("217500"), - cst_1$157=caml_string_of_jsbytes("1"), - cst_36800=caml_string_of_jsbytes("36800"), - cst_254300=caml_string_of_jsbytes("254300"), - cst_0$229=caml_string_of_jsbytes("0"), - cst_168700=caml_string_of_jsbytes("168700"), - cst_202300=caml_string_of_jsbytes("202300"), - cst_1$158=caml_string_of_jsbytes("1"), - cst_33600=caml_string_of_jsbytes("33600"), - cst_235900=caml_string_of_jsbytes("235900"), - cst_0$224=caml_string_of_jsbytes("0"), - cst_30871=caml_string_of_jsbytes("30871"), - cst_37243=caml_string_of_jsbytes("37243"), - cst_1$153=caml_string_of_jsbytes("1"), - cst_6372=caml_string_of_jsbytes("6372"), - cst_43615=caml_string_of_jsbytes("43615"), - cst_0$225=caml_string_of_jsbytes("0"), - cst_27548=caml_string_of_jsbytes("27548"), - cst_33148=caml_string_of_jsbytes("33148"), - cst_1$154=caml_string_of_jsbytes("1"), - cst_5610=caml_string_of_jsbytes("5610"), - cst_38768=caml_string_of_jsbytes("38768"), - cst_0$226=caml_string_of_jsbytes("0"), - cst_25718=caml_string_of_jsbytes("25718"), - cst_30840=caml_string_of_jsbytes("30840"), - cst_1$155=caml_string_of_jsbytes("1"), - cst_5122=caml_string_of_jsbytes("5122"), - cst_35962=caml_string_of_jsbytes("35962"), - cst_0$221=caml_string_of_jsbytes("0"), - cst_163000=caml_string_of_jsbytes("163000"), - cst_196700=caml_string_of_jsbytes("196700"), - cst_1$150=caml_string_of_jsbytes("1"), - cst_33700=caml_string_of_jsbytes("33700"), - cst_230400=caml_string_of_jsbytes("230400"), - cst_0$222=caml_string_of_jsbytes("0"), - cst_145300=caml_string_of_jsbytes("145300"), - cst_175000=caml_string_of_jsbytes("175000"), - cst_1$151=caml_string_of_jsbytes("1"), - cst_29700=caml_string_of_jsbytes("29700"), - cst_204700=caml_string_of_jsbytes("204700"), - cst_0$223=caml_string_of_jsbytes("0"), - cst_135700=caml_string_of_jsbytes("135700"), - cst_162800=caml_string_of_jsbytes("162800"), - cst_1$152=caml_string_of_jsbytes("1"), - cst_27100=caml_string_of_jsbytes("27100"), - cst_189900=caml_string_of_jsbytes("189900"), - cst_0$218=caml_string_of_jsbytes("0"), - cst_24849=caml_string_of_jsbytes("24849"), - cst_29987=caml_string_of_jsbytes("29987"), - cst_1$147=caml_string_of_jsbytes("1"), - cst_5138=caml_string_of_jsbytes("5138"), - cst_35125=caml_string_of_jsbytes("35125"), - cst_0$219=caml_string_of_jsbytes("0"), - cst_22151=caml_string_of_jsbytes("22151"), - cst_26679=caml_string_of_jsbytes("26679"), - cst_1$148=caml_string_of_jsbytes("1"), - cst_4528=caml_string_of_jsbytes("4528"), - cst_31207=caml_string_of_jsbytes("31207"), - cst_0$220=caml_string_of_jsbytes("0"), - cst_20687=caml_string_of_jsbytes("20687"), - cst_24818=caml_string_of_jsbytes("24818"), - cst_1$149=caml_string_of_jsbytes("1"), - cst_4131=caml_string_of_jsbytes("4131"), - cst_28949=caml_string_of_jsbytes("28949"), - cst_0$215=caml_string_of_jsbytes("0"), - cst_31241=caml_string_of_jsbytes("31241"), - cst_37689=caml_string_of_jsbytes("37689"), - cst_1$144=caml_string_of_jsbytes("1"), - cst_6448=caml_string_of_jsbytes("6448"), - cst_44137=caml_string_of_jsbytes("44137"), - cst_0$216=caml_string_of_jsbytes("0"), - cst_27879=caml_string_of_jsbytes("27879"), - cst_33556=caml_string_of_jsbytes("33556"), - cst_1$145=caml_string_of_jsbytes("1"), - cst_5677=caml_string_of_jsbytes("5677"), - cst_39233=caml_string_of_jsbytes("39233"), - cst_0$217=caml_string_of_jsbytes("0"), - cst_26027=caml_string_of_jsbytes("26027"), - cst_31210=caml_string_of_jsbytes("31210"), - cst_1$146=caml_string_of_jsbytes("1"), - cst_5183=caml_string_of_jsbytes("5183"), - cst_36393=caml_string_of_jsbytes("36393"), - cst_0$212=caml_string_of_jsbytes("0"), - cst_25147=caml_string_of_jsbytes("25147"), - cst_30347=caml_string_of_jsbytes("30347"), - cst_1$141=caml_string_of_jsbytes("1"), - cst_5200=caml_string_of_jsbytes("5200"), - cst_35547=caml_string_of_jsbytes("35547"), - cst_0$213=caml_string_of_jsbytes("0"), - cst_22417=caml_string_of_jsbytes("22417"), - cst_26999=caml_string_of_jsbytes("26999"), - cst_1$142=caml_string_of_jsbytes("1"), - cst_4582=caml_string_of_jsbytes("4582"), - cst_31581=caml_string_of_jsbytes("31581"), - cst_0$214=caml_string_of_jsbytes("0"), - cst_20935=caml_string_of_jsbytes("20935"), - cst_25116$0=caml_string_of_jsbytes("25116"), - cst_1$143=caml_string_of_jsbytes("1"), - cst_4181=caml_string_of_jsbytes("4181"), - cst_29297=caml_string_of_jsbytes("29297"), - cst_0$209=caml_string_of_jsbytes("0"), - cst_31616=caml_string_of_jsbytes("31616"), - cst_38141=caml_string_of_jsbytes("38141"), - cst_1$138=caml_string_of_jsbytes("1"), - cst_6525=caml_string_of_jsbytes("6525"), - cst_44666=caml_string_of_jsbytes("44666"), - cst_0$210=caml_string_of_jsbytes("0"), - cst_28214=caml_string_of_jsbytes("28214"), - cst_33959=caml_string_of_jsbytes("33959"), - cst_1$139=caml_string_of_jsbytes("1"), - cst_5745=caml_string_of_jsbytes("5745"), - cst_39704=caml_string_of_jsbytes("39704"), - cst_0$211=caml_string_of_jsbytes("0"), - cst_26339=caml_string_of_jsbytes("26339"), - cst_31584=caml_string_of_jsbytes("31584"), - cst_1$140=caml_string_of_jsbytes("1"), - cst_5245=caml_string_of_jsbytes("5245"), - cst_36829=caml_string_of_jsbytes("36829"), - cst_0$206=caml_string_of_jsbytes("0"), - cst_25449=caml_string_of_jsbytes("25449"), - cst_30711=caml_string_of_jsbytes("30711"), - cst_1$135=caml_string_of_jsbytes("1"), - cst_5262=caml_string_of_jsbytes("5262"), - cst_35973=caml_string_of_jsbytes("35973"), - cst_0$207=caml_string_of_jsbytes("0"), - cst_22686=caml_string_of_jsbytes("22686"), - cst_27323=caml_string_of_jsbytes("27323"), - cst_1$136=caml_string_of_jsbytes("1"), - cst_4637=caml_string_of_jsbytes("4637"), - cst_31960=caml_string_of_jsbytes("31960"), - cst_0$208=caml_string_of_jsbytes("0"), - cst_21186=caml_string_of_jsbytes("21186"), - cst_25417=caml_string_of_jsbytes("25417"), - cst_1$137=caml_string_of_jsbytes("1"), - cst_4231=caml_string_of_jsbytes("4231"), - cst_26948=caml_string_of_jsbytes("26948"), - cst_0$203=caml_string_of_jsbytes("0"), - cst_32185=caml_string_of_jsbytes("32185"), - cst_38827=caml_string_of_jsbytes("38827"), - cst_1$132=caml_string_of_jsbytes("1"), - cst_6642=caml_string_of_jsbytes("6642"), - cst_45469=caml_string_of_jsbytes("45469"), - cst_0$204=caml_string_of_jsbytes("0"), - cst_28722=caml_string_of_jsbytes("28722"), - cst_34570$0=caml_string_of_jsbytes("34570"), - cst_1$133=caml_string_of_jsbytes("1"), - cst_5848=caml_string_of_jsbytes("5848"), - cst_40418=caml_string_of_jsbytes("40418"), - cst_0$205=caml_string_of_jsbytes("0"), - cst_26813=caml_string_of_jsbytes("26813"), - cst_32152=caml_string_of_jsbytes("32152"), - cst_1$134=caml_string_of_jsbytes("1"), - cst_5339=caml_string_of_jsbytes("5339"), - cst_37491=caml_string_of_jsbytes("37491"), - cst_0$200=caml_string_of_jsbytes("0"), - cst_25907=caml_string_of_jsbytes("25907"), - cst_31264=caml_string_of_jsbytes("31264"), - cst_1$129=caml_string_of_jsbytes("1"), - cst_5357=caml_string_of_jsbytes("5357"), - cst_36621=caml_string_of_jsbytes("36621"), - cst_0$201=caml_string_of_jsbytes("0"), - cst_23094=caml_string_of_jsbytes("23094"), - cst_27814=caml_string_of_jsbytes("27814"), - cst_1$130=caml_string_of_jsbytes("1"), - cst_4720=caml_string_of_jsbytes("4720"), - cst_32534=caml_string_of_jsbytes("32534"), - cst_0$202=caml_string_of_jsbytes("0"), - cst_21567=caml_string_of_jsbytes("21567"), - cst_25874=caml_string_of_jsbytes("25874"), - cst_1$131=caml_string_of_jsbytes("1"), - cst_4307=caml_string_of_jsbytes("4307"), - cst_30881=caml_string_of_jsbytes("30881"), - cst_0$197=caml_string_of_jsbytes("0"), - cst_33026$0=caml_string_of_jsbytes("33026"), - cst_39914=caml_string_of_jsbytes("39914"), - cst_1$126=caml_string_of_jsbytes("1"), - cst_6828=caml_string_of_jsbytes("6828"), - cst_46742=caml_string_of_jsbytes("46742"), - cst_0$198=caml_string_of_jsbytes("0"), - cst_29526=caml_string_of_jsbytes("29526"), - cst_35538=caml_string_of_jsbytes("35538"), - cst_1$127=caml_string_of_jsbytes("1"), - cst_6012=caml_string_of_jsbytes("6012"), - cst_41550=caml_string_of_jsbytes("41550"), - cst_0$199=caml_string_of_jsbytes("0"), - cst_27564=caml_string_of_jsbytes("27564"), - cst_33052=caml_string_of_jsbytes("33052"), - cst_1$128=caml_string_of_jsbytes("1"), - cst_5488=caml_string_of_jsbytes("5488"), - cst_38541=caml_string_of_jsbytes("38541"), - cst_0$194=caml_string_of_jsbytes("0"), - cst_26632=caml_string_of_jsbytes("26632"), - cst_32139=caml_string_of_jsbytes("32139"), - cst_1$123=caml_string_of_jsbytes("1"), - cst_5507=caml_string_of_jsbytes("5507"), - cst_37646=caml_string_of_jsbytes("37646"), - cst_0$195=caml_string_of_jsbytes("0"), - cst_23741=caml_string_of_jsbytes("23741"), - cst_28593=caml_string_of_jsbytes("28593"), - cst_1$124=caml_string_of_jsbytes("1"), - cst_4852=caml_string_of_jsbytes("4852"), - cst_33445=caml_string_of_jsbytes("33445"), - cst_0$196=caml_string_of_jsbytes("0"), - cst_22171=caml_string_of_jsbytes("22171"), - cst_36598=caml_string_of_jsbytes("36598"), - cst_1$125=caml_string_of_jsbytes("1"), - cst_4428=caml_string_of_jsbytes("4428"), - cst_31026=caml_string_of_jsbytes("31026"), - cst_0$191=caml_string_of_jsbytes("0"), - cst_33999=caml_string_of_jsbytes("33999"), - cst_41016=caml_string_of_jsbytes("41016"), - cst_1$120=caml_string_of_jsbytes("1"), - cst_7016=caml_string_of_jsbytes("7016"), - cst_48032=caml_string_of_jsbytes("48032"), - cst_0$192=caml_string_of_jsbytes("0"), - cst_30341=caml_string_of_jsbytes("30341"), - cst_36519=caml_string_of_jsbytes("36519"), - cst_1$121=caml_string_of_jsbytes("1"), - cst_6178=caml_string_of_jsbytes("6178"), - cst_42697=caml_string_of_jsbytes("42697"), - cst_0$193=caml_string_of_jsbytes("0"), - cst_28325=caml_string_of_jsbytes("28325"), - cst_33964=caml_string_of_jsbytes("33964"), - cst_1$122=caml_string_of_jsbytes("1"), - cst_5639=caml_string_of_jsbytes("5639"), - cst_39605=caml_string_of_jsbytes("39605"), - cst_0$188=caml_string_of_jsbytes("0"), - cst_27367=caml_string_of_jsbytes("27367"), - cst_33026=caml_string_of_jsbytes("33026"), - cst_1$117=caml_string_of_jsbytes("1"), - cst_5659=caml_string_of_jsbytes("5659"), - cst_38685=caml_string_of_jsbytes("38685"), - cst_0$189=caml_string_of_jsbytes("0"), - cst_24396=caml_string_of_jsbytes("24396"), - cst_29382=caml_string_of_jsbytes("29382"), - cst_1$118=caml_string_of_jsbytes("1"), - cst_4986$0=caml_string_of_jsbytes("4986"), - cst_34368=caml_string_of_jsbytes("34368"), - cst_0$190=caml_string_of_jsbytes("0"), - cst_22783=caml_string_of_jsbytes("22783"), - cst_27332=caml_string_of_jsbytes("27332"), - cst_1$119=caml_string_of_jsbytes("1"), - cst_4550=caml_string_of_jsbytes("4550"), - cst_31882=caml_string_of_jsbytes("31882"), - cst_0$185=caml_string_of_jsbytes("0"), - cst_35002=caml_string_of_jsbytes("35002"), - cst_42226=caml_string_of_jsbytes("42226"), - cst_1$114=caml_string_of_jsbytes("1"), - cst_7223=caml_string_of_jsbytes("7223"), - cst_49449=caml_string_of_jsbytes("49449"), - cst_0$186=caml_string_of_jsbytes("0"), - cst_31236=caml_string_of_jsbytes("31236"), - cst_37596=caml_string_of_jsbytes("37596"), - cst_1$115=caml_string_of_jsbytes("1"), - cst_6360=caml_string_of_jsbytes("6360"), - cst_43957=caml_string_of_jsbytes("43957"), - cst_0$187=caml_string_of_jsbytes("0"), - cst_29161=caml_string_of_jsbytes("29161"), - cst_34966=caml_string_of_jsbytes("34966"), - cst_1$116=caml_string_of_jsbytes("1"), - cst_5805=caml_string_of_jsbytes("5805"), - cst_40773=caml_string_of_jsbytes("40773"), - cst_0$182=caml_string_of_jsbytes("0"), - cst_28174=caml_string_of_jsbytes("28174"), - cst_34000=caml_string_of_jsbytes("34000"), - cst_1$111=caml_string_of_jsbytes("1"), - cst_5826=caml_string_of_jsbytes("5826"), - cst_39826=caml_string_of_jsbytes("39826"), - cst_0$183=caml_string_of_jsbytes("0"), - cst_25116=caml_string_of_jsbytes("25116"), - cst_30249=caml_string_of_jsbytes("30249"), - cst_1$112=caml_string_of_jsbytes("1"), - cst_5133=caml_string_of_jsbytes("5133"), - cst_35382=caml_string_of_jsbytes("35382"), - cst_0$184=caml_string_of_jsbytes("0"), - cst_23455=caml_string_of_jsbytes("23455"), - cst_28138=caml_string_of_jsbytes("28138"), - cst_1$113=caml_string_of_jsbytes("1"), - cst_4684=caml_string_of_jsbytes("4684"), - cst_32823=caml_string_of_jsbytes("32823"), - cst_0$179=caml_string_of_jsbytes("0"), - cst_35114=caml_string_of_jsbytes("35114"), - cst_42361=caml_string_of_jsbytes("42361"), - cst_1$108=caml_string_of_jsbytes("1"), - cst_7246=caml_string_of_jsbytes("7246"), - cst_49607=caml_string_of_jsbytes("49607"), - cst_0$180=caml_string_of_jsbytes("0"), - cst_31336=caml_string_of_jsbytes("31336"), - cst_37716=caml_string_of_jsbytes("37716"), - cst_1$109=caml_string_of_jsbytes("1"), - cst_6380=caml_string_of_jsbytes("6380"), - cst_44098=caml_string_of_jsbytes("44098"), - cst_0$181=caml_string_of_jsbytes("0"), - cst_29254=caml_string_of_jsbytes("29254"), - cst_35078=caml_string_of_jsbytes("35078"), - cst_1$110=caml_string_of_jsbytes("1"), - cst_5824=caml_string_of_jsbytes("5824"), - cst_40903=caml_string_of_jsbytes("40903"), - cst_0$176=caml_string_of_jsbytes("0"), - cst_28264=caml_string_of_jsbytes("28264"), - cst_34109=caml_string_of_jsbytes("34109"), - cst_1$105=caml_string_of_jsbytes("1"), - cst_5845=caml_string_of_jsbytes("5845"), - cst_39953=caml_string_of_jsbytes("39953"), - cst_0$177=caml_string_of_jsbytes("0"), - cst_25196=caml_string_of_jsbytes("25196"), - cst_30346=caml_string_of_jsbytes("30346"), - cst_1$106=caml_string_of_jsbytes("1"), - cst_5149=caml_string_of_jsbytes("5149"), - cst_35495=caml_string_of_jsbytes("35495"), - cst_0$178=caml_string_of_jsbytes("0"), - cst_23530=caml_string_of_jsbytes("23530"), - cst_28228=caml_string_of_jsbytes("28228"), - cst_1$107=caml_string_of_jsbytes("1"), - cst_4699=caml_string_of_jsbytes("4699"), - cst_32928=caml_string_of_jsbytes("32928"), - cst_0$173=caml_string_of_jsbytes("0"), - cst_35500=caml_string_of_jsbytes("35500"), - cst_42827=caml_string_of_jsbytes("42827"), - cst_1$102=caml_string_of_jsbytes("1"), - cst_7326=caml_string_of_jsbytes("7326"), - cst_50153=caml_string_of_jsbytes("50153"), - cst_0$174=caml_string_of_jsbytes("0"), - cst_31681=caml_string_of_jsbytes("31681"), - cst_38131=caml_string_of_jsbytes("38131"), - cst_1$103=caml_string_of_jsbytes("1"), - cst_6450=caml_string_of_jsbytes("6450"), - cst_44583=caml_string_of_jsbytes("44583"), - cst_0$175=caml_string_of_jsbytes("0"), - cst_29576=caml_string_of_jsbytes("29576"), - cst_35464=caml_string_of_jsbytes("35464"), - cst_1$104=caml_string_of_jsbytes("1"), - cst_5888=caml_string_of_jsbytes("5888"), - cst_41353=caml_string_of_jsbytes("41353"), - cst_0$170=caml_string_of_jsbytes("0"), - cst_28575=caml_string_of_jsbytes("28575"), - cst_34484=caml_string_of_jsbytes("34484"), - cst_1$99=caml_string_of_jsbytes("1"), - cst_5909=caml_string_of_jsbytes("5909"), - cst_40392=caml_string_of_jsbytes("40392"), - cst_0$171=caml_string_of_jsbytes("0"), - cst_25473=caml_string_of_jsbytes("25473"), - cst_30680=caml_string_of_jsbytes("30680"), - cst_1$100=caml_string_of_jsbytes("1"), - cst_5206=caml_string_of_jsbytes("5206"), - cst_35885=caml_string_of_jsbytes("35885"), - cst_0$172=caml_string_of_jsbytes("0"), - cst_23789=caml_string_of_jsbytes("23789"), - cst_28539=caml_string_of_jsbytes("28539"), - cst_1$101=caml_string_of_jsbytes("1"), - cst_4751=caml_string_of_jsbytes("4751"), - cst_33290=caml_string_of_jsbytes("33290"), - cst_0$167=caml_string_of_jsbytes("0"), - cst_35855=caml_string_of_jsbytes("35855"), - cst_43255=caml_string_of_jsbytes("43255"), - cst_1$96=caml_string_of_jsbytes("1"), - cst_7399=caml_string_of_jsbytes("7399"), - cst_50655=caml_string_of_jsbytes("50655"), - cst_0$168=caml_string_of_jsbytes("0"), - cst_31998=caml_string_of_jsbytes("31998"), - cst_38512=caml_string_of_jsbytes("38512"), - cst_1$97=caml_string_of_jsbytes("1"), - cst_6515=caml_string_of_jsbytes("6515"), - cst_45029=caml_string_of_jsbytes("45029"), - cst_0$169=caml_string_of_jsbytes("0"), - cst_29872=caml_string_of_jsbytes("29872"), - cst_35819=caml_string_of_jsbytes("35819"), - cst_1$98=caml_string_of_jsbytes("1"), - cst_5947=caml_string_of_jsbytes("5947"), - cst_41767=caml_string_of_jsbytes("41767"), - cst_0$164=caml_string_of_jsbytes("0"), - cst_28861=caml_string_of_jsbytes("28861"), - cst_34829$0=caml_string_of_jsbytes("34829"), - cst_1$93=caml_string_of_jsbytes("1"), - cst_5968=caml_string_of_jsbytes("5968"), - cst_40796=caml_string_of_jsbytes("40796"), - cst_0$165=caml_string_of_jsbytes("0"), - cst_25728=caml_string_of_jsbytes("25728"), - cst_30987=caml_string_of_jsbytes("30987"), - cst_1$94=caml_string_of_jsbytes("1"), - cst_5258=caml_string_of_jsbytes("5258"), - cst_36244=caml_string_of_jsbytes("36244"), - cst_0$166=caml_string_of_jsbytes("0"), - cst_24027=caml_string_of_jsbytes("24027"), - cst_28824=caml_string_of_jsbytes("28824"), - cst_1$95=caml_string_of_jsbytes("1"), - cst_4799=caml_string_of_jsbytes("4799"), - cst_33623=caml_string_of_jsbytes("33623"), - cst_0$161=caml_string_of_jsbytes("0"), - cst_36626=caml_string_of_jsbytes("36626"), - cst_44185=caml_string_of_jsbytes("44185"), - cst_1$90=caml_string_of_jsbytes("1"), - cst_7558=caml_string_of_jsbytes("7558"), - cst_51744=caml_string_of_jsbytes("51744"), - cst_0$162=caml_string_of_jsbytes("0"), - cst_32686=caml_string_of_jsbytes("32686"), - cst_39340=caml_string_of_jsbytes("39340"), - cst_1$91=caml_string_of_jsbytes("1"), - cst_6655=caml_string_of_jsbytes("6655"), - cst_45997=caml_string_of_jsbytes("45997"), - cst_0$163=caml_string_of_jsbytes("0"), - cst_30514=caml_string_of_jsbytes("30514"), - cst_36589=caml_string_of_jsbytes("36589"), - cst_1$92=caml_string_of_jsbytes("1"), - cst_6075=caml_string_of_jsbytes("6075"), - cst_42665=caml_string_of_jsbytes("42665"), - cst_0$158=caml_string_of_jsbytes("0"), - cst_29482=caml_string_of_jsbytes("29482"), - cst_35578=caml_string_of_jsbytes("35578"), - cst_1$87=caml_string_of_jsbytes("1"), - cst_6096=caml_string_of_jsbytes("6096"), - cst_41673=caml_string_of_jsbytes("41673"), - cst_0$159=caml_string_of_jsbytes("0"), - cst_26281=caml_string_of_jsbytes("26281"), - cst_31653=caml_string_of_jsbytes("31653"), - cst_1$88=caml_string_of_jsbytes("1"), - cst_5371=caml_string_of_jsbytes("5371"), - cst_37023=caml_string_of_jsbytes("37023"), - cst_0$160=caml_string_of_jsbytes("0"), - cst_24544=caml_string_of_jsbytes("24544"), - cst_29444=caml_string_of_jsbytes("29444"), - cst_1$89=caml_string_of_jsbytes("1"), - cst_4902=caml_string_of_jsbytes("4902"), - cst_34346=caml_string_of_jsbytes("34346"), - cst_0$155=caml_string_of_jsbytes("0"), - cst_36835=caml_string_of_jsbytes("36835"), - cst_44437=caml_string_of_jsbytes("44437"), - cst_1$84=caml_string_of_jsbytes("1"), - cst_7601=caml_string_of_jsbytes("7601"), - cst_52039=caml_string_of_jsbytes("52039"), - cst_0$156=caml_string_of_jsbytes("0"), - cst_32872=caml_string_of_jsbytes("32872"), - cst_39564=caml_string_of_jsbytes("39564"), - cst_1$85=caml_string_of_jsbytes("1"), - cst_6693=caml_string_of_jsbytes("6693"), - cst_46259=caml_string_of_jsbytes("46259"), - cst_0$157=caml_string_of_jsbytes("0"), - cst_30688=caml_string_of_jsbytes("30688"), - cst_36798=caml_string_of_jsbytes("36798"), - cst_1$86=caml_string_of_jsbytes("1"), - cst_6110=caml_string_of_jsbytes("6110"), - cst_42908=caml_string_of_jsbytes("42908"), - cst_0$152=caml_string_of_jsbytes("0"), - cst_29650=caml_string_of_jsbytes("29650"), - cst_35781=caml_string_of_jsbytes("35781"), - cst_1$81=caml_string_of_jsbytes("1"), - cst_6131=caml_string_of_jsbytes("6131"), - cst_41911=caml_string_of_jsbytes("41911"), - cst_0$153=caml_string_of_jsbytes("0"), - cst_26431=caml_string_of_jsbytes("26431"), - cst_31833=caml_string_of_jsbytes("31833"), - cst_1$82=caml_string_of_jsbytes("1"), - cst_5402=caml_string_of_jsbytes("5402"), - cst_37234=caml_string_of_jsbytes("37234"), - cst_0$154=caml_string_of_jsbytes("0"), - cst_24684=caml_string_of_jsbytes("24684"), - cst_29612=caml_string_of_jsbytes("29612"), - cst_1$83=caml_string_of_jsbytes("1"), - cst_4930=caml_string_of_jsbytes("4930"), - cst_34542=caml_string_of_jsbytes("34542"), - cst_0$149=caml_string_of_jsbytes("0"), - cst_36864=caml_string_of_jsbytes("36864"), - cst_44473=caml_string_of_jsbytes("44473"), - cst_1$78=caml_string_of_jsbytes("1"), - cst_7607=caml_string_of_jsbytes("7607"), - cst_52081=caml_string_of_jsbytes("52081"), - cst_0$150=caml_string_of_jsbytes("0"), - cst_32898=caml_string_of_jsbytes("32898"), - cst_39596=caml_string_of_jsbytes("39596"), - cst_1$79=caml_string_of_jsbytes("1"), - cst_6698=caml_string_of_jsbytes("6698"), - cst_46296=caml_string_of_jsbytes("46296"), - cst_0$151=caml_string_of_jsbytes("0"), - cst_30713=caml_string_of_jsbytes("30713"), - cst_36827=caml_string_of_jsbytes("36827"), - cst_1$80=caml_string_of_jsbytes("1"), - cst_6115=caml_string_of_jsbytes("6115"), - cst_42942=caml_string_of_jsbytes("42942"), - cst_0$146=caml_string_of_jsbytes("0"), - cst_29674=caml_string_of_jsbytes("29674"), - cst_35810=caml_string_of_jsbytes("35810"), - cst_1$75=caml_string_of_jsbytes("1"), - cst_6136=caml_string_of_jsbytes("6136"), - cst_41945=caml_string_of_jsbytes("41945"), - cst_0$147=caml_string_of_jsbytes("0"), - cst_26452=caml_string_of_jsbytes("26452"), - cst_31858=caml_string_of_jsbytes("31858"), - cst_1$76=caml_string_of_jsbytes("1"), - cst_5406=caml_string_of_jsbytes("5406"), - cst_37264=caml_string_of_jsbytes("37264"), - cst_0$148=caml_string_of_jsbytes("0"), - cst_24704=caml_string_of_jsbytes("24704"), - cst_29636=caml_string_of_jsbytes("29636"), - cst_1$77=caml_string_of_jsbytes("1"), - cst_4934=caml_string_of_jsbytes("4934"), - cst_34570=caml_string_of_jsbytes("34570"), - cst_0$143=caml_string_of_jsbytes("0"), - cst_37140=caml_string_of_jsbytes("37140"), - cst_44807=caml_string_of_jsbytes("44807"), - cst_1$72=caml_string_of_jsbytes("1"), - cst_7664=caml_string_of_jsbytes("7664"), - cst_52472=caml_string_of_jsbytes("52472"), - cst_0$144=caml_string_of_jsbytes("0"), - cst_33145=caml_string_of_jsbytes("33145"), - cst_39893=caml_string_of_jsbytes("39893"), - cst_1$73=caml_string_of_jsbytes("1"), - cst_6748=caml_string_of_jsbytes("6748"), - cst_46643=caml_string_of_jsbytes("46643"), - cst_0$145=caml_string_of_jsbytes("0"), - cst_30943=caml_string_of_jsbytes("30943"), - cst_37103=caml_string_of_jsbytes("37103"), - cst_1$74=caml_string_of_jsbytes("1"), - cst_6161=caml_string_of_jsbytes("6161"), - cst_43264=caml_string_of_jsbytes("43264"), - cst_0$140=caml_string_of_jsbytes("0"), - cst_29897=caml_string_of_jsbytes("29897"), - cst_36079=caml_string_of_jsbytes("36079"), - cst_1$69=caml_string_of_jsbytes("1"), - cst_6182=caml_string_of_jsbytes("6182"), - cst_42260=caml_string_of_jsbytes("42260"), - cst_0$141=caml_string_of_jsbytes("0"), - cst_26650=caml_string_of_jsbytes("26650"), - cst_32097=caml_string_of_jsbytes("32097"), - cst_1$70=caml_string_of_jsbytes("1"), - cst_5447=caml_string_of_jsbytes("5447"), - cst_37543=caml_string_of_jsbytes("37543"), - cst_0$142=caml_string_of_jsbytes("0"), - cst_24889=caml_string_of_jsbytes("24889"), - cst_29858=caml_string_of_jsbytes("29858"), - cst_1$71=caml_string_of_jsbytes("1"), - cst_4971=caml_string_of_jsbytes("4971"), - cst_34829=caml_string_of_jsbytes("34829"), - cst_0$137=caml_string_of_jsbytes("0"), - cst_37252=caml_string_of_jsbytes("37252"), - cst_44941=caml_string_of_jsbytes("44941"), - cst_1$66=caml_string_of_jsbytes("1"), - cst_7687=caml_string_of_jsbytes("7687"), - cst_52629=caml_string_of_jsbytes("52629"), - cst_0$138=caml_string_of_jsbytes("0"), - cst_33244=caml_string_of_jsbytes("33244"), - cst_40013=caml_string_of_jsbytes("40013"), - cst_1$67=caml_string_of_jsbytes("1"), - cst_6768=caml_string_of_jsbytes("6768"), - cst_46783=caml_string_of_jsbytes("46783"), - cst_0$139=caml_string_of_jsbytes("0"), - cst_31036=caml_string_of_jsbytes("31036"), - cst_37215=caml_string_of_jsbytes("37215"), - cst_1$68=caml_string_of_jsbytes("1"), - cst_6179=caml_string_of_jsbytes("6179"), - cst_43394=caml_string_of_jsbytes("43394"), - cst_0$134=caml_string_of_jsbytes("0"), - cst_29986=caml_string_of_jsbytes("29986"), - cst_36187=caml_string_of_jsbytes("36187"), - cst_1$63=caml_string_of_jsbytes("1"), - cst_6201=caml_string_of_jsbytes("6201"), - cst_42386=caml_string_of_jsbytes("42386"), - cst_0$135=caml_string_of_jsbytes("0"), - cst_26730=caml_string_of_jsbytes("26730"), - cst_32193=caml_string_of_jsbytes("32193"), - cst_1$64=caml_string_of_jsbytes("1"), - cst_5463=caml_string_of_jsbytes("5463"), - cst_37656=caml_string_of_jsbytes("37656"), - cst_0$136=caml_string_of_jsbytes("0"), - cst_24964=caml_string_of_jsbytes("24964"), - cst_29948=caml_string_of_jsbytes("29948"), - cst_1$65=caml_string_of_jsbytes("1"), - cst_4986=caml_string_of_jsbytes("4986"), - cst_34934=caml_string_of_jsbytes("34934"), - cst_0$132=caml_string_of_jsbytes("0"), - cst_0$133=caml_string_of_jsbytes("0"), - cst_1229$2=caml_string_of_jsbytes("1229"), - cst_2710$0=caml_string_of_jsbytes("2710"), - cst_5422$2=caml_string_of_jsbytes("5422"), - cst_1224$2=caml_string_of_jsbytes("1224"), - cst_2699$0=caml_string_of_jsbytes("2699"), - cst_5399$2=caml_string_of_jsbytes("5399"), - cst_1229$1=caml_string_of_jsbytes("1229"), - cst_5422$1=caml_string_of_jsbytes("5422"), - cst_1224$1=caml_string_of_jsbytes("1224"), - cst_5399$1=caml_string_of_jsbytes("5399"), - cst_0_0226=caml_string_of_jsbytes("0.0226"), - cst_0_0234=caml_string_of_jsbytes("0.0234"), - cst_0_0172=caml_string_of_jsbytes("0.0172"), - cst_0_0226$0=caml_string_of_jsbytes("0.0226"), - cst_0_0234$0=caml_string_of_jsbytes("0.0234"), - cst_6_55957=caml_string_of_jsbytes("6.55957"), - cst_1$62=caml_string_of_jsbytes("1."), - cst_0_416=caml_string_of_jsbytes("0.416"), - cst_0_208$0=caml_string_of_jsbytes("0.208"), - cst_560085=caml_string_of_jsbytes("560085"), - cst_16_25=caml_string_of_jsbytes("16.25"), - cst_2211133=caml_string_of_jsbytes("2211133"), - cst_1000$2=caml_string_of_jsbytes("1000"), - cst_500$1=caml_string_of_jsbytes("500"), - cst_0$131=caml_string_of_jsbytes("0"), - cst_0$129=caml_string_of_jsbytes("0"), - cst_0$130=caml_string_of_jsbytes("0"), - cst_0$127=caml_string_of_jsbytes("0"), - cst_50$1=caml_string_of_jsbytes("50"), - cst_50$2=caml_string_of_jsbytes("50"), - cst_0$128=caml_string_of_jsbytes("0"), - cst_0_9$1=caml_string_of_jsbytes("0.9"), - cst_0_9$2=caml_string_of_jsbytes("0.9"), - cst_0_95$0=caml_string_of_jsbytes("0.95"), - cst_0_95$1=caml_string_of_jsbytes("0.95"), - cst_0$125=caml_string_of_jsbytes("0"), - cst_0$126=caml_string_of_jsbytes("0"), - cst_100$5=caml_string_of_jsbytes("100."), - cst_100$6=caml_string_of_jsbytes("100."), - cst_0_005$1=caml_string_of_jsbytes("0.005"), - cst_100$3=caml_string_of_jsbytes("100."), - cst_100$4=caml_string_of_jsbytes("100."), - cst_0_005$0=caml_string_of_jsbytes("0.005"), - cst_0$124=caml_string_of_jsbytes("0"), - cst_0_9$0=caml_string_of_jsbytes("0.9"), - cst_0_95=caml_string_of_jsbytes("0.95"), - cst_2142091=caml_string_of_jsbytes("2142091"), - cst_1339340=caml_string_of_jsbytes("1339340"), - cst_1500=caml_string_of_jsbytes("1500"), - cst_2668=caml_string_of_jsbytes("2668"), - cst_0$122=caml_string_of_jsbytes("0"), - cst_0$123=caml_string_of_jsbytes("0"), - cst_0$119=caml_string_of_jsbytes("0"), - cst_44630=caml_string_of_jsbytes("44630"), - cst_52321=caml_string_of_jsbytes("52321"), - cst_1$59=caml_string_of_jsbytes("1"), - cst_55788=caml_string_of_jsbytes("55788"), - cst_2$31=caml_string_of_jsbytes("2"), - cst_59704=caml_string_of_jsbytes("59704"), - cst_3$16=caml_string_of_jsbytes("3"), - cst_63635=caml_string_of_jsbytes("63635"), - cst_4$13=caml_string_of_jsbytes("4"), - cst_7119=caml_string_of_jsbytes("7119"), - cst_68637=caml_string_of_jsbytes("68637"), - cst_0$120=caml_string_of_jsbytes("0"), - cst_40814=caml_string_of_jsbytes("40814"), - cst_47632=caml_string_of_jsbytes("47632"), - cst_1$60=caml_string_of_jsbytes("1"), - cst_50787=caml_string_of_jsbytes("50787"), - cst_2$32=caml_string_of_jsbytes("2"), - cst_54365=caml_string_of_jsbytes("54365"), - cst_3$17=caml_string_of_jsbytes("3"), - cst_57929=caml_string_of_jsbytes("57929"), - cst_4$14=caml_string_of_jsbytes("4"), - cst_6434=caml_string_of_jsbytes("6434"), - cst_61727=caml_string_of_jsbytes("61727"), - cst_0$121=caml_string_of_jsbytes("0"), - cst_38740=caml_string_of_jsbytes("38740"), - cst_45057=caml_string_of_jsbytes("45057"), - cst_1$61=caml_string_of_jsbytes("1"), - cst_47802=caml_string_of_jsbytes("47802"), - cst_2$33=caml_string_of_jsbytes("2"), - cst_50957=caml_string_of_jsbytes("50957"), - cst_3$18=caml_string_of_jsbytes("3"), - cst_54110=caml_string_of_jsbytes("54110"), - cst_4$15=caml_string_of_jsbytes("4"), - cst_5971=caml_string_of_jsbytes("5971"), - cst_57657=caml_string_of_jsbytes("57657"), - cst_0$116=caml_string_of_jsbytes("0"), - cst_44443=caml_string_of_jsbytes("44443"), - cst_52101=caml_string_of_jsbytes("52101"), - cst_1$56=caml_string_of_jsbytes("1"), - cst_55555=caml_string_of_jsbytes("55555"), - cst_2$28=caml_string_of_jsbytes("2"), - cst_59454=caml_string_of_jsbytes("59454"), - cst_3$13=caml_string_of_jsbytes("3"), - cst_63369=caml_string_of_jsbytes("63369"), - cst_4$10=caml_string_of_jsbytes("4"), - cst_7089=caml_string_of_jsbytes("7089"), - cst_68350=caml_string_of_jsbytes("68350"), - cst_0$117=caml_string_of_jsbytes("0"), - cst_40643=caml_string_of_jsbytes("40643"), - cst_47433=caml_string_of_jsbytes("47433"), - cst_1$57=caml_string_of_jsbytes("1"), - cst_50575=caml_string_of_jsbytes("50575"), - cst_2$29=caml_string_of_jsbytes("2"), - cst_54138=caml_string_of_jsbytes("54138"), - cst_3$14=caml_string_of_jsbytes("3"), - cst_57687=caml_string_of_jsbytes("57687"), - cst_4$11=caml_string_of_jsbytes("4"), - cst_6407=caml_string_of_jsbytes("6407"), - cst_61469=caml_string_of_jsbytes("61469"), - cst_0$118=caml_string_of_jsbytes("0"), - cst_38578=caml_string_of_jsbytes("38578"), - cst_44869=caml_string_of_jsbytes("44869"), - cst_1$58=caml_string_of_jsbytes("1"), - cst_47602=caml_string_of_jsbytes("47602"), - cst_2$30=caml_string_of_jsbytes("2"), - cst_50744=caml_string_of_jsbytes("50744"), - cst_3$15=caml_string_of_jsbytes("3"), - cst_53884=caml_string_of_jsbytes("53884"), - cst_4$12=caml_string_of_jsbytes("4"), - cst_5946=caml_string_of_jsbytes("5946"), - cst_57416=caml_string_of_jsbytes("57416"), - cst_1000$1=caml_string_of_jsbytes("1000"), - cst_500$0=caml_string_of_jsbytes("500"), - cst_121726=caml_string_of_jsbytes("121726"), - cst_0$114=caml_string_of_jsbytes("0"), - cst_0$115=caml_string_of_jsbytes("0"), - cst_0$113=caml_string_of_jsbytes("0"), - cst_0$111=caml_string_of_jsbytes("0"), - cst_0$112=caml_string_of_jsbytes("0"), - cst_100000$1=caml_string_of_jsbytes("100000."), - cst_100000$2=caml_string_of_jsbytes("100000."), - cst_100000=caml_string_of_jsbytes("100000."), - cst_100000$0=caml_string_of_jsbytes("100000."), - cst_0$109=caml_string_of_jsbytes("0"), - cst_50=caml_string_of_jsbytes("50"), - cst_50$0=caml_string_of_jsbytes("50"), - cst_0$110=caml_string_of_jsbytes("0"), - cst_0_45$1=caml_string_of_jsbytes("0.45"), - cst_0$107=caml_string_of_jsbytes("0."), - cst_0_45$2=caml_string_of_jsbytes("0.45"), - cst_0_75$2=caml_string_of_jsbytes("0.75"), - cst_0_0045$2=caml_string_of_jsbytes("0.0045"), - cst_0_0045$3=caml_string_of_jsbytes("0.0045"), - cst_0_75$3=caml_string_of_jsbytes("0.75"), - cst_0_75$4=caml_string_of_jsbytes("0.75"), - cst_0_0068$0=caml_string_of_jsbytes("0.0068"), - cst_0_3$0=caml_string_of_jsbytes("0.3"), - cst_0_0045$4=caml_string_of_jsbytes("0.0045"), - cst_0$108=caml_string_of_jsbytes("0."), - cst_0_45=caml_string_of_jsbytes("0.45"), - cst_0$105=caml_string_of_jsbytes("0."), - cst_0_45$0=caml_string_of_jsbytes("0.45"), - cst_0_75=caml_string_of_jsbytes("0.75"), - cst_0_0045=caml_string_of_jsbytes("0.0045"), - cst_0_0045$0=caml_string_of_jsbytes("0.0045"), - cst_0_75$0=caml_string_of_jsbytes("0.75"), - cst_0_75$1=caml_string_of_jsbytes("0.75"), - cst_0_0068=caml_string_of_jsbytes("0.0068"), - cst_0_3=caml_string_of_jsbytes("0.3"), - cst_0_0045$1=caml_string_of_jsbytes("0.0045"), - cst_0$106=caml_string_of_jsbytes("0."), - cst_0$103=caml_string_of_jsbytes("0"), - cst_0$104=caml_string_of_jsbytes("0"), - cst_100$1=caml_string_of_jsbytes("100."), - cst_100$2=caml_string_of_jsbytes("100."), - cst_100=caml_string_of_jsbytes("100."), - cst_100$0=caml_string_of_jsbytes("100."), - cst_3539=caml_string_of_jsbytes("3539"), - cst_0_085$1=caml_string_of_jsbytes("0.085"), - cst_0_085$2=caml_string_of_jsbytes("0.085"), - cst_3539$0=caml_string_of_jsbytes("3539"), - cst_3524=caml_string_of_jsbytes("3524"), - cst_0_085=caml_string_of_jsbytes("0.085"), - cst_0_085$0=caml_string_of_jsbytes("0.085"), - cst_3524$0=caml_string_of_jsbytes("3524"), - cst_0$102=caml_string_of_jsbytes("0"), - cst_3_4=caml_string_of_jsbytes("3.4"), - cst_2_5$2=caml_string_of_jsbytes("2.5"), - cst_2_5$3=caml_string_of_jsbytes("2.5"), - cst_4$9=caml_string_of_jsbytes("4."), - cst_3_1=caml_string_of_jsbytes("3.1"), - cst_3_1$0=caml_string_of_jsbytes("3.1"), - cst_1229$0=caml_string_of_jsbytes("1229"), - cst_2710=caml_string_of_jsbytes("2710"), - cst_5422$0=caml_string_of_jsbytes("5422"), - cst_1224$0=caml_string_of_jsbytes("1224"), - cst_2699=caml_string_of_jsbytes("2699"), - cst_5399$0=caml_string_of_jsbytes("5399"), - cst_1229=caml_string_of_jsbytes("1229"), - cst_5422=caml_string_of_jsbytes("5422"), - cst_1224=caml_string_of_jsbytes("1224"), - cst_5399=caml_string_of_jsbytes("5399"), - cst_0$101=caml_string_of_jsbytes("0"), - cst_22355$0=caml_string_of_jsbytes("22355"), - cst_19484$0=caml_string_of_jsbytes("19484"), - cst_18261$0=caml_string_of_jsbytes("18261"), - cst_0$100=caml_string_of_jsbytes("0"), - cst_26962=caml_string_of_jsbytes("26962"), - cst_23848=caml_string_of_jsbytes("23848"), - cst_22136=caml_string_of_jsbytes("22136"), - cst_1$55=caml_string_of_jsbytes("1"), - cst_1$52=caml_string_of_jsbytes("1"), - cst_4421=caml_string_of_jsbytes("4421"), - cst_30473=caml_string_of_jsbytes("30473"), - cst_1$53=caml_string_of_jsbytes("1"), - cst_3906=caml_string_of_jsbytes("3906"), - cst_26835=caml_string_of_jsbytes("26835"), - cst_1$54=caml_string_of_jsbytes("1"), - cst_3557=caml_string_of_jsbytes("3557"), - cst_24821=caml_string_of_jsbytes("24821"), - cst_0$99=caml_string_of_jsbytes("0"), - cst_22262$0=caml_string_of_jsbytes("22262"), - cst_19402$0=caml_string_of_jsbytes("19402"), - cst_18185$0=caml_string_of_jsbytes("18185"), - cst_0$98=caml_string_of_jsbytes("0"), - cst_26849=caml_string_of_jsbytes("26849"), - cst_23748=caml_string_of_jsbytes("23748"), - cst_22044=caml_string_of_jsbytes("22044"), - cst_1$51=caml_string_of_jsbytes("1"), - cst_1$48=caml_string_of_jsbytes("1"), - cst_4403=caml_string_of_jsbytes("4403"), - cst_30345=caml_string_of_jsbytes("30345"), - cst_1$49=caml_string_of_jsbytes("1"), - cst_3890=caml_string_of_jsbytes("3890"), - cst_26723=caml_string_of_jsbytes("26723"), - cst_1$50=caml_string_of_jsbytes("1"), - cst_3542=caml_string_of_jsbytes("3542"), - cst_24717=caml_string_of_jsbytes("24717"), - cst_22355=caml_string_of_jsbytes("22355"), - cst_19484=caml_string_of_jsbytes("19484"), - cst_18261=caml_string_of_jsbytes("18261"), - cst_22262=caml_string_of_jsbytes("22262"), - cst_19402=caml_string_of_jsbytes("19402"), - cst_18185=caml_string_of_jsbytes("18185"), - cst_26826=caml_string_of_jsbytes("26826"), - cst_23380=caml_string_of_jsbytes("23380"), - cst_21913=caml_string_of_jsbytes("21913"), - cst_26714=caml_string_of_jsbytes("26714"), - cst_23282=caml_string_of_jsbytes("23282"), - cst_21821=caml_string_of_jsbytes("21821"), - cst_0$97=caml_string_of_jsbytes("0"), - cst_29807=caml_string_of_jsbytes("29807"), - cst_25978$0=caml_string_of_jsbytes("25978"), - cst_24348=caml_string_of_jsbytes("24348"), - cst_0$96=caml_string_of_jsbytes("0"), - cst_35949=caml_string_of_jsbytes("35949"), - cst_31797$0=caml_string_of_jsbytes("31797"), - cst_29515=caml_string_of_jsbytes("29515"), - cst_1$47=caml_string_of_jsbytes("1"), - cst_1$44=caml_string_of_jsbytes("1"), - cst_5895=caml_string_of_jsbytes("5895"), - cst_40630=caml_string_of_jsbytes("40630"), - cst_1$45=caml_string_of_jsbytes("1"), - cst_5208$0=caml_string_of_jsbytes("5208"), - cst_35780$0=caml_string_of_jsbytes("35780"), - cst_1$46=caml_string_of_jsbytes("1"), - cst_4743=caml_string_of_jsbytes("4743"), - cst_33094=caml_string_of_jsbytes("33094"), - cst_0$95=caml_string_of_jsbytes("0"), - cst_29682=caml_string_of_jsbytes("29682"), - cst_25859=caml_string_of_jsbytes("25859"), - cst_24246=caml_string_of_jsbytes("24246"), - cst_0$94=caml_string_of_jsbytes("0"), - cst_35799=caml_string_of_jsbytes("35799"), - cst_31664$0=caml_string_of_jsbytes("31664"), - cst_29392=caml_string_of_jsbytes("29392"), - cst_1$43=caml_string_of_jsbytes("1"), - cst_1$40=caml_string_of_jsbytes("1"), - cst_5870=caml_string_of_jsbytes("5870"), - cst_40460=caml_string_of_jsbytes("40460"), - cst_1$41=caml_string_of_jsbytes("1"), - cst_5186$0=caml_string_of_jsbytes("5186"), - cst_35630$0=caml_string_of_jsbytes("35630"), - cst_1$42=caml_string_of_jsbytes("1"), - cst_4723=caml_string_of_jsbytes("4723"), - cst_32956=caml_string_of_jsbytes("32956"), - cst_0$93=caml_string_of_jsbytes("0"), - cst_1000=caml_string_of_jsbytes("1000"), - cst_1000$0=caml_string_of_jsbytes("1000"), - cst_0$92=caml_string_of_jsbytes("0"), - cst_25978=caml_string_of_jsbytes("25978"), - cst_31797=caml_string_of_jsbytes("31797"), - cst_1$39=caml_string_of_jsbytes("1"), - cst_5208=caml_string_of_jsbytes("5208"), - cst_35780=caml_string_of_jsbytes("35780"), - cst_0$91=caml_string_of_jsbytes("0"), - cst_25869=caml_string_of_jsbytes("25869"), - cst_31664=caml_string_of_jsbytes("31664"), - cst_1$38=caml_string_of_jsbytes("1"), - cst_5186=caml_string_of_jsbytes("5186"), - cst_35630=caml_string_of_jsbytes("35630"), - cst_0$90=caml_string_of_jsbytes("0"), - cst_468300=caml_string_of_jsbytes("468300"), - cst_670900=caml_string_of_jsbytes("670900"), - cst_1$37=caml_string_of_jsbytes("1"), - cst_800200=caml_string_of_jsbytes("800200"), - cst_2$27=caml_string_of_jsbytes("2"), - cst_819200=caml_string_of_jsbytes("819200"), - cst_3$12=caml_string_of_jsbytes("3"), - cst_849500=caml_string_of_jsbytes("849500"), - cst_4$8=caml_string_of_jsbytes("4"), - cst_881100=caml_string_of_jsbytes("881100"), - cst_5$2=caml_string_of_jsbytes("5"), - cst_912400=caml_string_of_jsbytes("912400"), - cst_6$7=caml_string_of_jsbytes("6"), - cst_943900=caml_string_of_jsbytes("943900"), - cst_6$8=caml_string_of_jsbytes("6"), - cst_31100=caml_string_of_jsbytes("31100"), - cst_943900$0=caml_string_of_jsbytes("943900"), - cst_0$89=caml_string_of_jsbytes("0"), - cst_458800=caml_string_of_jsbytes("458800"), - cst_657200=caml_string_of_jsbytes("657200"), - cst_1$36=caml_string_of_jsbytes("1"), - cst_783900=caml_string_of_jsbytes("783900"), - cst_2$26=caml_string_of_jsbytes("2"), - cst_801500=caml_string_of_jsbytes("801500"), - cst_3$11=caml_string_of_jsbytes("3"), - cst_832200=caml_string_of_jsbytes("832200"), - cst_4$7=caml_string_of_jsbytes("4"), - cst_863100=caml_string_of_jsbytes("863100"), - cst_5$1=caml_string_of_jsbytes("5"), - cst_893800=caml_string_of_jsbytes("893800"), - cst_6$5=caml_string_of_jsbytes("6"), - cst_924600=caml_string_of_jsbytes("924600"), - cst_6$6=caml_string_of_jsbytes("6"), - cst_30500=caml_string_of_jsbytes("30500"), - cst_924600$0=caml_string_of_jsbytes("924600"), - cst_0$88=caml_string_of_jsbytes("0"), - cst_0_0283$0=caml_string_of_jsbytes("0.0283"), - cst_0_0315$0=caml_string_of_jsbytes("0.0315"), - cst_1$35=caml_string_of_jsbytes("1"), - cst_0_027$0=caml_string_of_jsbytes("0.027"), - cst_2$25=caml_string_of_jsbytes("2"), - cst_0_0238$0=caml_string_of_jsbytes("0.0238"), - cst_3$10=caml_string_of_jsbytes("3"), - cst_0_0201$0=caml_string_of_jsbytes("0.0201"), - cst_4$6=caml_string_of_jsbytes("4"), - cst_0_0185$0=caml_string_of_jsbytes("0.0185"), - cst_5$0=caml_string_of_jsbytes("5"), - cst_0_0179$0=caml_string_of_jsbytes("0.0179"), - cst_6$3=caml_string_of_jsbytes("6"), - cst_0_0173$1=caml_string_of_jsbytes("0.0173"), - cst_6$4=caml_string_of_jsbytes("6"), - cst_0_0006$0=caml_string_of_jsbytes("0.0006"), - cst_0_0173$2=caml_string_of_jsbytes("0.0173"), - cst_0$87=caml_string_of_jsbytes("0"), - cst_0_0283=caml_string_of_jsbytes("0.0283"), - cst_0_0315=caml_string_of_jsbytes("0.0315"), - cst_1$34=caml_string_of_jsbytes("1"), - cst_0_027=caml_string_of_jsbytes("0.027"), - cst_2$24=caml_string_of_jsbytes("2"), - cst_0_0238=caml_string_of_jsbytes("0.0238"), - cst_3$9=caml_string_of_jsbytes("3"), - cst_0_0201=caml_string_of_jsbytes("0.0201"), - cst_4$5=caml_string_of_jsbytes("4"), - cst_0_0185=caml_string_of_jsbytes("0.0185"), - cst_5=caml_string_of_jsbytes("5"), - cst_0_0179=caml_string_of_jsbytes("0.0179"), - cst_6$1=caml_string_of_jsbytes("6"), - cst_0_0173=caml_string_of_jsbytes("0.0173"), - cst_6$2=caml_string_of_jsbytes("6"), - cst_0_0006=caml_string_of_jsbytes("0.0006"), - cst_0_0173$0=caml_string_of_jsbytes("0.0173"), - cst_500=caml_string_of_jsbytes("500"), - cst_0_98=caml_string_of_jsbytes("0.98"), - cst_2_5$4=caml_string_of_jsbytes("2.5"), - cst_0_9=caml_string_of_jsbytes("0.9"), - cst_0_98$0=caml_string_of_jsbytes("0.98"), - cst_1003$0=caml_string_of_jsbytes("1003"), - cst_757$0=caml_string_of_jsbytes("757"), - cst_1015$0=caml_string_of_jsbytes("1015"), - cst_766$0=caml_string_of_jsbytes("766"), - cst_1025$0=caml_string_of_jsbytes("1025"), - cst_774$0=caml_string_of_jsbytes("774"), - cst_1057$0=caml_string_of_jsbytes("1057"), - cst_798$0=caml_string_of_jsbytes("798"), - cst_1085$0=caml_string_of_jsbytes("1085"), - cst_819$0=caml_string_of_jsbytes("819"), - cst_41316$0=caml_string_of_jsbytes("41316"), - cst_41440$0=caml_string_of_jsbytes("41440"), - cst_41481$0=caml_string_of_jsbytes("41481"), - cst_42228$0=caml_string_of_jsbytes("42228"), - cst_0$86=caml_string_of_jsbytes("0"), - cst_0$85=caml_string_of_jsbytes("0"), - cst_0$83=caml_string_of_jsbytes("0"), - cst_0$84=caml_string_of_jsbytes("0"), - cst_2$23=caml_string_of_jsbytes("2."), - cst_0$81=caml_string_of_jsbytes("0"), - cst_0$82=caml_string_of_jsbytes("0"), - cst_2$22=caml_string_of_jsbytes("2."), - cst_6$0=caml_string_of_jsbytes("6."), - cst_1$33=caml_string_of_jsbytes("1."), - cst_2$21=caml_string_of_jsbytes("2."), - cst_0$80=caml_string_of_jsbytes("0"), - cst_6=caml_string_of_jsbytes("6."), - cst_1$32=caml_string_of_jsbytes("1."), - cst_2$20=caml_string_of_jsbytes("2."), - cst_0$79=caml_string_of_jsbytes("0"), - cst_12$13=caml_string_of_jsbytes("12."), - cst_1952=caml_string_of_jsbytes("1952"), - cst_1953=caml_string_of_jsbytes("1953"), - cst_1954=caml_string_of_jsbytes("1954"), - cst_0$78=caml_string_of_jsbytes("0"), - cst_1_4$0=caml_string_of_jsbytes("1.4"), - cst_1_8$0=caml_string_of_jsbytes("1.8"), - cst_1$31=caml_string_of_jsbytes("1"), - cst_2_5$1=caml_string_of_jsbytes("2.5"), - cst_2$19=caml_string_of_jsbytes("2"), - cst_3$7=caml_string_of_jsbytes("3."), - cst_3$8=caml_string_of_jsbytes("3"), - cst_3_7$1=caml_string_of_jsbytes("3.7"), - cst_4$3=caml_string_of_jsbytes("4"), - cst_4_3$3=caml_string_of_jsbytes("4.3"), - cst_4$4=caml_string_of_jsbytes("4"), - cst_0_5$3=caml_string_of_jsbytes("0.5"), - cst_4_3$4=caml_string_of_jsbytes("4.3"), - cst_0$77=caml_string_of_jsbytes("0"), - cst_1_2=caml_string_of_jsbytes("1.2"), - cst_1_5=caml_string_of_jsbytes("1.5"), - cst_1$30=caml_string_of_jsbytes("1"), - cst_2_5$0=caml_string_of_jsbytes("2.5"), - cst_2$18=caml_string_of_jsbytes("2"), - cst_3$5=caml_string_of_jsbytes("3."), - cst_3$6=caml_string_of_jsbytes("3"), - cst_3_7$0=caml_string_of_jsbytes("3.7"), - cst_4$1=caml_string_of_jsbytes("4"), - cst_4_3$1=caml_string_of_jsbytes("4.3"), - cst_4$2=caml_string_of_jsbytes("4"), - cst_0_5$2=caml_string_of_jsbytes("0.5"), - cst_4_3$2=caml_string_of_jsbytes("4.3"), - cst_0$76=caml_string_of_jsbytes("0"), - cst_1_4=caml_string_of_jsbytes("1.4"), - cst_1_8=caml_string_of_jsbytes("1.8"), - cst_1$29=caml_string_of_jsbytes("1"), - cst_2_5=caml_string_of_jsbytes("2.5"), - cst_2$17=caml_string_of_jsbytes("2"), - cst_3$3=caml_string_of_jsbytes("3."), - cst_3$4=caml_string_of_jsbytes("3"), - cst_3_7=caml_string_of_jsbytes("3.7"), - cst_4=caml_string_of_jsbytes("4"), - cst_4_3=caml_string_of_jsbytes("4.3"), - cst_4$0=caml_string_of_jsbytes("4"), - cst_0_5$1=caml_string_of_jsbytes("0.5"), - cst_4_3$0=caml_string_of_jsbytes("4.3"), - cst_0$75=caml_string_of_jsbytes("0."), - cst_12$12=caml_string_of_jsbytes("12."), - cst_0$74=caml_string_of_jsbytes("0."), - cst_0$73=caml_string_of_jsbytes("0."), - cst_12$11=caml_string_of_jsbytes("12."), - cst_0$72=caml_string_of_jsbytes("0."), - cst_0_328=caml_string_of_jsbytes("0.328"), - cst_409505=caml_string_of_jsbytes("409505"), - cst_0_232$0=caml_string_of_jsbytes("0.232"), - cst_262985=caml_string_of_jsbytes("262985"), - cst_409505$0=caml_string_of_jsbytes("409505"), - cst_0_208=caml_string_of_jsbytes("0.208"), - cst_204761=caml_string_of_jsbytes("204761"), - cst_262985$0=caml_string_of_jsbytes("262985"), - cst_0_024=caml_string_of_jsbytes("0.024"), - cst_142303=caml_string_of_jsbytes("142303"), - cst_204761$0=caml_string_of_jsbytes("204761"), - cst_0$70=caml_string_of_jsbytes("0."), - cst_0$71=caml_string_of_jsbytes("0"), - cst_142303$0=caml_string_of_jsbytes("142303"), - cst_0_48=caml_string_of_jsbytes("0.48"), - cst_633129=caml_string_of_jsbytes("633129"), - cst_0_32$1=caml_string_of_jsbytes("0.32"), - cst_535744=caml_string_of_jsbytes("535744"), - cst_633129$0=caml_string_of_jsbytes("633129"), - cst_0_264=caml_string_of_jsbytes("0.264"), - cst_389618=caml_string_of_jsbytes("389618"), - cst_535744$0=caml_string_of_jsbytes("535744"), - cst_0_216=caml_string_of_jsbytes("0.216"), - cst_267871=caml_string_of_jsbytes("267871"), - cst_389618$0=caml_string_of_jsbytes("389618"), - cst_0_104=caml_string_of_jsbytes("0.104"), - cst_194810=caml_string_of_jsbytes("194810"), - cst_267871$0=caml_string_of_jsbytes("267871"), - cst_0_04$0=caml_string_of_jsbytes("0.04"), - cst_0$69=caml_string_of_jsbytes("0"), - cst_194810$0=caml_string_of_jsbytes("194810"), - cst_7632=caml_string_of_jsbytes("7632"), - cst_4557=caml_string_of_jsbytes("4557"), - cst_0_005=caml_string_of_jsbytes("0.005"), - cst_r_sidence_in$3=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_prestation_courante_in$0= - caml_string_of_jsbytes("prestation_courante_in"), - cst_date_courante_in$20=caml_string_of_jsbytes("date_courante_in"), - cst_r_gime_outre_mer_l751_1_ou$0= - caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1_out"), - cst_ge_l512_3_2_out$0=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2_out"), - cst_conditions_hors_ge_out$0= - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge_out"), - cst_droit_ouvert_out$0=caml_string_of_jsbytes("droit_ouvert_out"), - cst_r_sidence_in$2=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_date_courante_in$19=caml_string_of_jsbytes("date_courante_in"), - cst_brut_horaire_out$0=caml_string_of_jsbytes("brut_horaire_out"), - cst_date_courante_in$18=caml_string_of_jsbytes("date_courante_in"), - cst_montant_out$2=caml_string_of_jsbytes("montant_out"), - cst_ressources_m_nage_prises_e$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), - cst_date_courante_in$17=caml_string_of_jsbytes("date_courante_in"), - cst_informations_calcul_in$3= - caml_string_of_jsbytes("informations_calcul_in"), - cst_demandeur_in$4=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$4=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_aide_finale_out=caml_string_of_jsbytes("aide_finale_out"), - cst_ligibilit_out$2= - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"), - cst_ressources_m_nage_prises_e= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), - cst_date_courante_in$16=caml_string_of_jsbytes("date_courante_in"), - cst_informations_calcul_in$2= - caml_string_of_jsbytes("informations_calcul_in"), - cst_demandeur_in$3=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$3=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_coefficents_enfants_garde_$2= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"), - cst_traitement_aide_finale_out$2= - caml_string_of_jsbytes("traitement_aide_finale_out"), - cst_aide_finale_formule_out$7= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_ligibilit_out$1= - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"), - cst_montant_dette_in=caml_string_of_jsbytes("montant_dette_in"), - cst_d_pense_logement_in= - caml_string_of_jsbytes("d\xc3\xa9pense_logement_in"), - cst_montant_charges_in=caml_string_of_jsbytes("montant_charges_in"), - cst_montant_apl_in=caml_string_of_jsbytes("montant_apl_in"), - cst_aide_vers_e_in=caml_string_of_jsbytes("aide_vers\xc3\xa9e_in"), - cst_mode_occupation_in$4=caml_string_of_jsbytes("mode_occupation_in"), - cst_montant_impay_out=caml_string_of_jsbytes("montant_impay\xc3\xa9_out"), - cst_date_naissance_assur_in= - caml_string_of_jsbytes("date_naissance_assur\xc3\xa9_in"), - cst_ge_ouverture_droit_out= - caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit_out"), - cst_type_aide_in$2=caml_string_of_jsbytes("type_aide_in"), - cst_date_courante_in$15=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$6=caml_string_of_jsbytes("zone_in"), - cst_nombre_personnes_charge_in$8= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_situation_familiale_in$1= - caml_string_of_jsbytes("situation_familiale_in"), - cst_ressources_m_nage_sans_arr$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), - cst_informations_calcul_in$1= - caml_string_of_jsbytes("informations_calcul_in"), - cst_mode_occupation_in$3=caml_string_of_jsbytes("mode_occupation_in"), - cst_traitement_aide_finale_out$1= - caml_string_of_jsbytes("traitement_aide_finale_out"), - cst_aide_finale_formule_out$6= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_cat_gorie_quivalence_loyer$0= - caml_string_of_jsbytes - ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"), - cst_date_courante_in$14=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$5=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$6= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$7= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$6= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_mode_occupation_in$2=caml_string_of_jsbytes("mode_occupation_in"), - cst_redevance_in$0=caml_string_of_jsbytes("redevance_in"), - cst_traitement_aide_finale_mon$3= - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"), - cst_aide_finale_formule_out$5= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_loyer_minimal_out=caml_string_of_jsbytes("loyer_minimal_out"), - cst_montant_forfaitaire_charge$0= - caml_string_of_jsbytes("montant_forfaitaire_charges_out"), - cst_quivalence_loyer_out= - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_out"), - cst_coefficient_prise_en_charg$1= - caml_string_of_jsbytes("coefficient_prise_en_charge_out"), - cst_copropri_t_in$0= - caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), - cst_charges_mensuelles_pr_t_in= - caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat_in"), - cst_date_entr_e_logement_in$0= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), - cst_local_habit_premi_re_fois_$1= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), - cst_type_travaux_logement_in$0= - caml_string_of_jsbytes("type_travaux_logement_in"), - cst_date_signature_pr_t_in$0= - caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), - cst_situation_r822_11_13_17_in$0= - caml_string_of_jsbytes("situation_r822_11_13_17_in"), - cst_mensualit_principale_in$0= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), - cst_date_courante_in$13=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$4=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$5= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$6= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$5= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), - cst_traitement_aide_finale_mon$2= - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"), - cst_aide_finale_formule_out$4= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_changement_logement_d842_4$0= - caml_string_of_jsbytes("changement_logement_d842_4_in"), - cst_logement_meubl_d842_2_in= - caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), - cst_r_duction_loyer_solidarit_$0= - caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), - cst_colocation_in$0=caml_string_of_jsbytes("colocation_in"), - cst_type_aide_in$1=caml_string_of_jsbytes("type_aide_in"), - cst_g_es_ou_handicap_adultes_h$1= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), - cst_logement_est_chambre_in$0= - caml_string_of_jsbytes("logement_est_chambre_in"), - cst_zone_in$3=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$4= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$5= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_date_courante_in$12=caml_string_of_jsbytes("date_courante_in"), - cst_b_n_ficiaire_aide_adulte_o$1= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), - cst_ressources_m_nage_arrondie$4= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_loyer_principal_in$0=caml_string_of_jsbytes("loyer_principal_in"), - cst_traitement_aide_finale_out$0= - caml_string_of_jsbytes("traitement_aide_finale_out"), - cst_aide_finale_formule_out$3= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_date_courante_in$11=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$2=caml_string_of_jsbytes("zone_in"), - cst_nombre_personnes_charge_in$4= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_situation_familiale_in$0= - caml_string_of_jsbytes("situation_familiale_in"), - cst_ressources_m_nage_sans_arr= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), - cst_informations_calcul_in$0= - caml_string_of_jsbytes("informations_calcul_in"), - cst_type_aide_in$0=caml_string_of_jsbytes("type_aide_in"), - cst_mode_occupation_in$1=caml_string_of_jsbytes("mode_occupation_in"), - cst_traitement_aide_finale_out= - caml_string_of_jsbytes("traitement_aide_finale_out"), - cst_aide_finale_formule_out$2= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_date_courante_in$10=caml_string_of_jsbytes("date_courante_in"), - cst_anciennet_logement_in= - caml_string_of_jsbytes("anciennet\xc3\xa9_logement_in"), - cst_type_pr_t_in=caml_string_of_jsbytes("type_pr\xc3\xaat_in"), - cst_zone_in$1=caml_string_of_jsbytes("zone_in"), - cst_situation_r822_11_13_17_in= - caml_string_of_jsbytes("situation_r822_11_13_17_in"), - cst_copropri_t_in=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), - cst_date_entr_e_logement_in= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), - cst_local_habit_premi_re_fois_$0= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), - cst_date_signature_pr_t_in= - caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), - cst_type_travaux_logement_in= - caml_string_of_jsbytes("type_travaux_logement_in"), - cst_situation_familiale_calcul$3= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$3= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$3= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_mensualit_principale_in= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), - cst_traitement_aide_finale_mon$1= - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"), - cst_aide_finale_formule_out$1= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_coefficient_prise_en_charg$0= - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil_out"), - cst_mensualit_minimale_out= - caml_string_of_jsbytes("mensualit\xc3\xa9_minimale_out"), - cst_mensualit_ligible_out= - caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible_out"), - cst_situation_familiale_calcul$2= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$2= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_n_nombre_parts_d832_11_out= - caml_string_of_jsbytes("n_nombre_parts_d832_11_out"), - cst_n_nombre_parts_d832_25_in$0= - caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), - cst_condition_2_du_832_25_in$1= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_redevance_in=caml_string_of_jsbytes("redevance_in"), - cst_date_courante_in$9=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$0=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$1= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$1= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$2= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_mode_occupation_in$0=caml_string_of_jsbytes("mode_occupation_in"), - cst_traitement_aide_finale_mon$0= - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"), - cst_aide_finale_formule_out$0= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_coefficient_prise_en_charg= - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil_out"), - cst_quivalence_loyer_minimale_= - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale_out"), - cst_plafond_quivalence_loyer_l= - caml_string_of_jsbytes - ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible_out"), - cst_quivalence_loyer_ligible_o= - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible_out"), - cst_n_nombre_parts_d832_25_out$0= - caml_string_of_jsbytes("n_nombre_parts_d832_25_out"), - cst_coefficient_r_d832_25_out= - caml_string_of_jsbytes("coefficient_r_d832_25_out"), - cst_coefficient_multiplicateur= - caml_string_of_jsbytes("coefficient_multiplicateur_d832_25_out"), - cst_situation_familiale_calcul$0= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$0= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_condition_2_du_832_25_in$0= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_n_nombre_parts_d832_25_out= - caml_string_of_jsbytes("n_nombre_parts_d832_25_out"), - cst_n_nombre_parts_d832_25_in= - caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), - cst_condition_2_du_832_25_in= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_ressources_m_nage_arrondie$1= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_montant_out$1=caml_string_of_jsbytes("montant_out"), - cst_r_duction_loyer_solidarit_= - caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), - cst_colocation_in=caml_string_of_jsbytes("colocation_in"), - cst_type_aide_in=caml_string_of_jsbytes("type_aide_in"), - cst_g_es_ou_handicap_adultes_h$0= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), - cst_logement_est_chambre_in= - caml_string_of_jsbytes("logement_est_chambre_in"), - cst_zone_in=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_date_courante_in$8=caml_string_of_jsbytes("date_courante_in"), - cst_b_n_ficiaire_aide_adulte_o$0= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), - cst_ressources_m_nage_arrondie$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_loyer_principal_in=caml_string_of_jsbytes("loyer_principal_in"), - cst_traitement_aide_finale_mon= - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"), - cst_aide_finale_formule_out= - caml_string_of_jsbytes("aide_finale_formule_out"), - cst_participation_personnelle_= - caml_string_of_jsbytes("participation_personnelle_out"), - cst_taux_composition_familiale= - caml_string_of_jsbytes("taux_composition_familiale_out"), - cst_participation_minimale_out= - caml_string_of_jsbytes("participation_minimale_out"), - cst_plafond_loyer_d823_16_2_ou= - caml_string_of_jsbytes("plafond_loyer_d823_16_2_out"), - cst_montant_forfaitaire_charge= - caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16_out"), - cst_date_courante_in$7=caml_string_of_jsbytes("date_courante_in"), - cst_montant_out$0=caml_string_of_jsbytes("montant_out"), - cst_ressources_m_nage_arrondie= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), - cst_paiement_logement_distinct= - caml_string_of_jsbytes("paiement_logement_distinct_professionnel_in"), - cst_date_demande_ou_reexamen_d= - caml_string_of_jsbytes("date_demande_ou_reexamen_droit_in"), - cst_demandeur_poursuit_des_tud= - caml_string_of_jsbytes("demandeur_poursuit_des_\xc3\xa9tudes_in"), - cst_condition_ge_bourse_enseig= - caml_string_of_jsbytes - ("condition_\xc3\xa2ge_bourse_enseignement_sup\xc3\xa9rieur_in"), - cst_mode_occupation_in=caml_string_of_jsbytes("mode_occupation_in"), - cst_situation_familiale_in= - caml_string_of_jsbytes("situation_familiale_in"), - cst_personnes_charge_in= - caml_string_of_jsbytes("personnes_\xc3\xa0_charge_in"), - cst_conjoint_exerce_activit_r_= - caml_string_of_jsbytes - ("conjoint_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), - cst_demandeur_exerce_activit_r= - caml_string_of_jsbytes - ("demandeur_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), - cst_personnes_vivant_habituell= - caml_string_of_jsbytes("personnes_vivant_habituellement_foyer_in"), - cst_ressources_conjoint_in= - caml_string_of_jsbytes("ressources_conjoint_in"), - cst_ressources_demandeur_in= - caml_string_of_jsbytes("ressources_demandeur_in"), - cst_ressources_prises_en_compt= - caml_string_of_jsbytes("ressources_prises_en_compte_out"), - cst_d_penses_justifi_es_r_elle= - caml_string_of_jsbytes - ("d\xc3\xa9penses_justifi\xc3\xa9es_r\xc3\xa9ellement_engag\xc3\xa9es_in"), - cst_date_courante_in$6=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$2=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$2=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_date_emm_nagement_in= - caml_string_of_jsbytes("date_emm\xc3\xa9nagement_in"), - cst_montant_prime_d_m_nagement= - caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement_out"), - cst_informations_calcul_in= - caml_string_of_jsbytes("informations_calcul_in"), - cst_b_n_ficie_aide_personnalis= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement_in"), - cst_demandeur_in$1=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$1=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_date_courante_in$5=caml_string_of_jsbytes("date_courante_in"), - cst_coefficents_enfants_garde_$1= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"), - cst_nombre_personnes_charge_pr$1= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"), - cst_ligibilit_avec_condition_l= - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement_out"), - cst_date_courante_in$4=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$0=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$0=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_coefficents_enfants_garde_$0= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"), - cst_nombre_personnes_charge_pr$0= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"), - cst_ligibilit_out$0= - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"), - cst_date_courante_out$0=caml_string_of_jsbytes("date_courante_out"), - cst_condition_logement_surface= - caml_string_of_jsbytes("condition_logement_surface_in"), - cst_condition_logement_r_siden= - caml_string_of_jsbytes - ("condition_logement_r\xc3\xa9sidence_principale_in"), - cst_date_courante_in$3=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_condition_2_r823_4_out= - caml_string_of_jsbytes("condition_2_r823_4_out"), - cst_coefficents_enfants_garde_= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"), - cst_nombre_personnes_charge_pr= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"), - cst_ligibilit_out=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"), - cst_date_courante_out=caml_string_of_jsbytes("date_courante_out"), - cst_date_naissance_troisi_me_e= - caml_string_of_jsbytes - ("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"), - cst_enfant_na_tre_apr_s_quatri= - caml_string_of_jsbytes - ("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"), - cst_nombre_enfants_na_tre_apr_= - caml_string_of_jsbytes - ("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"), - cst_condition_rattach_foyer_fi= - caml_string_of_jsbytes - ("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"), - cst_situation_familiale=caml_string_of_jsbytes("situation_familiale"), - cst_nombre_autres_occupants_lo= - caml_string_of_jsbytes("nombre_autres_occupants_logement"), - cst_personnes_charge=caml_string_of_jsbytes("personnes_\xc3\xa0_charge"), - cst_logement=caml_string_of_jsbytes("logement"), - cst_prestations_re_ues= - caml_string_of_jsbytes("prestations_re\xc3\xa7ues"), - cst_zone=caml_string_of_jsbytes("zone"), - cst_situ_commune_d_s_quilibre_= - caml_string_of_jsbytes - ("situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"), - cst_est_ancien_l831_2=caml_string_of_jsbytes("est_ancien_l831_2"), - cst_surface_m_carr_s=caml_string_of_jsbytes("surface_m_carr\xc3\xa9s"), - cst_logement_decent_l89_462= - caml_string_of_jsbytes("logement_decent_l89_462"), - cst_usufruit=caml_string_of_jsbytes("usufruit"), - cst_lou_ou_sous_lou_des_tiers= - caml_string_of_jsbytes - ("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"), - cst_propri_taire=caml_string_of_jsbytes("propri\xc3\xa9taire"), - cst_mode_occupation=caml_string_of_jsbytes("mode_occupation"), - cst_est_ehpad_ou_maison_autono= - caml_string_of_jsbytes("est_ehpad_ou_maison_autonomie_l313_12_asf"), - cst_r_sidence_principale= - caml_string_of_jsbytes("r\xc3\xa9sidence_principale"), - cst_Locataire=caml_string_of_jsbytes("Locataire"), - cst_R_sidentLogementFoyer= - caml_string_of_jsbytes("R\xc3\xa9sidentLogementFoyer"), - cst_AccessionPropri_t_LocalUsa= - caml_string_of_jsbytes - ("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"), - cst_SousLocataire=caml_string_of_jsbytes("SousLocataire"), - cst_LocationAccession=caml_string_of_jsbytes("LocationAccession"), - cst_InfosLocatif=caml_string_of_jsbytes("InfosLocatif"), - cst_InfosLogementFoyer=caml_string_of_jsbytes("InfosLogementFoyer"), - cst_InfosAccessionPropri_t= - caml_string_of_jsbytes("InfosAccessionPropri\xc3\xa9t\xc3\xa9"), - cst_construit_application_loi_= - caml_string_of_jsbytes("construit_application_loi_1957_12_III"), - cst_remplit_conditions_r832_21= - caml_string_of_jsbytes("remplit_conditions_r832_21"), - cst_location=caml_string_of_jsbytes("location"), - cst_date_conventionnement=caml_string_of_jsbytes("date_conventionnement"), - cst_type=caml_string_of_jsbytes("type"), - cst_changement_logement_d842_4= - caml_string_of_jsbytes("changement_logement_d842_4"), - cst_logement_meubl_d842_2= - caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2"), - cst_r_duction_loyer_solidarit= - caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - cst_g_es_ou_handicap_adultes_h= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - cst_colocation=caml_string_of_jsbytes("colocation"), - cst_logement_est_chambre=caml_string_of_jsbytes("logement_est_chambre"), - cst_b_n_ficiaire_aide_adulte_o= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - cst_loyer_principal=caml_string_of_jsbytes("loyer_principal"), - cst_Enfant_Charge=caml_string_of_jsbytes("Enfant\xc3\x80Charge"), - cst_AutrePersonne_Charge= - caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"), - cst_anciennet_logement= - caml_string_of_jsbytes("anciennet\xc3\xa9_logement"), - cst_type_pr_t$0=caml_string_of_jsbytes("type_pr\xc3\xaat"), - cst_situation_r822_11_13_17= - caml_string_of_jsbytes("situation_r822_11_13_17"), - cst_copropri_t=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9"), - cst_local_habit_premi_re_fois_= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), - cst_type_travaux_logement_r842= - caml_string_of_jsbytes("type_travaux_logement_r842_5"), - cst_type_travaux_logement_d832= - caml_string_of_jsbytes("type_travaux_logement_d832_15"), - cst_date_entr_e_logement= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement"), - cst_date_signature_pr_t= - caml_string_of_jsbytes("date_signature_pr\xc3\xaat"), - cst_charges_mensuelles_pr_t= - caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat"), - cst_mensualit_principale= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale"), - cst_pr_t=caml_string_of_jsbytes("pr\xc3\xaat"), - cst_bailleur=caml_string_of_jsbytes("bailleur"), - cst_Changement=caml_string_of_jsbytes("Changement"), - cst_PasDeChangement=caml_string_of_jsbytes("PasDeChangement"), - cst_personne_h_berg_e_centre_s= - caml_string_of_jsbytes - ("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"), - cst_patrimoine=caml_string_of_jsbytes("patrimoine"), - cst_nationalit=caml_string_of_jsbytes("nationalit\xc3\xa9"), - cst_contrat_de_travail=caml_string_of_jsbytes("contrat_de_travail"), - cst_date_naissance$0=caml_string_of_jsbytes("date_naissance"), - cst_age_demandeur=caml_string_of_jsbytes("age_demandeur"), - cst_satisfait_conditions_l512_= - caml_string_of_jsbytes - ("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"), - cst_Non$1=caml_string_of_jsbytes("Non"), - cst_Oui$0=caml_string_of_jsbytes("Oui"), - cst_situation_garde_altern_e= - caml_string_of_jsbytes("situation_garde_altern\xc3\xa9e"), - cst_ge$1=caml_string_of_jsbytes("\xc3\xa2ge"), - cst_prise_en_charge$1=caml_string_of_jsbytes("prise_en_charge"), - cst_obligation_scolaire$1=caml_string_of_jsbytes("obligation_scolaire"), - cst_r_muneration_mensuelle$1= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_date_de_naissance$1=caml_string_of_jsbytes("date_de_naissance"), - cst_a_d_j_ouvert_droit_aux_all$1= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_b_n_ficie_titre_personnel_$1= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_identifiant$1=caml_string_of_jsbytes("identifiant"), - cst_b_n_ficie_titre_personnel_$0= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_a_d_j_ouvert_droit_aux_all$0= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_prise_en_charge$0=caml_string_of_jsbytes("prise_en_charge"), - cst_ge$0=caml_string_of_jsbytes("\xc3\xa2ge"), - cst_date_de_naissance$0=caml_string_of_jsbytes("date_de_naissance"), - cst_r_muneration_mensuelle$0= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_obligation_scolaire$0=caml_string_of_jsbytes("obligation_scolaire"), - cst_identifiant$0=caml_string_of_jsbytes("identifiant"), - cst_cat_gorie_quivalence_loyer= - caml_string_of_jsbytes - ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"), - cst_redevance=caml_string_of_jsbytes("redevance"), - cst_MoinsDeTroisEnfants=caml_string_of_jsbytes("MoinsDeTroisEnfants"), - cst_PlusDeTroisEnfants=caml_string_of_jsbytes("PlusDeTroisEnfants"), - cst_titulaire_allocation_perso= - caml_string_of_jsbytes - ("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"), - cst_b_n_ficiaire_l161_19_l351_= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"), - cst_incapacit_80_pourcent_ou_r= - caml_string_of_jsbytes - ("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"), - cst_parent=caml_string_of_jsbytes("parent\xc3\xa9"), - cst_ascendant_descendant_colla= - caml_string_of_jsbytes - ("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"), - cst_ressources$0=caml_string_of_jsbytes("ressources"), - cst_date_naissance=caml_string_of_jsbytes("date_naissance"), - cst_taux$0=caml_string_of_jsbytes("taux"), - cst_bas$0=caml_string_of_jsbytes("bas"), - cst_haut$0=caml_string_of_jsbytes("haut"), - cst_taux=caml_string_of_jsbytes("taux"), - cst_bas=caml_string_of_jsbytes("bas"), - cst_haut=caml_string_of_jsbytes("haut"), - cst_Neuf=caml_string_of_jsbytes("Neuf"), - cst_Ancien=caml_string_of_jsbytes("Ancien"), - cst_titulaire_pr_t=caml_string_of_jsbytes("titulaire_pr\xc3\xaat"), - cst_date_signature=caml_string_of_jsbytes("date_signature"), - cst_type_pr_t=caml_string_of_jsbytes("type_pr\xc3\xaat"), - cst_acquisition_aides_tat_pr_t= - caml_string_of_jsbytes - ("acquisition_aides_\xc3\xa9tat_pr\xc3\xaat_titre_II_ou_livre_III"), - cst_construit_am_lior_conditio= - caml_string_of_jsbytes - ("construit_am\xc3\xa9lior\xc3\xa9_conditions_l831_1_4"), - cst_respecte_convention_titre_= - caml_string_of_jsbytes("respecte_convention_titre_II"), - cst_respecte_convention_titre_$0= - caml_string_of_jsbytes("respecte_convention_titre_V"), - cst_type_bailleur=caml_string_of_jsbytes("type_bailleur"), - cst_ancienne_allocation_logeme= - caml_string_of_jsbytes("ancienne_allocation_logement"), - cst_ancien_loyer_principal= - caml_string_of_jsbytes("ancien_loyer_principal"), - cst_ressources=caml_string_of_jsbytes("ressources"), - cst_dur_e_r_sidence_durant_p_r= - caml_string_of_jsbytes - ("dur\xc3\xa9e_r\xc3\xa9sidence_durant_p\xc3\xa9riode_r_822_3_1_sup\xc3\xa9rieure_\xc3\xa0_6_mois"), - cst_ne_produisant_pas_revenu_p= - caml_string_of_jsbytes - ("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), - cst_produisant_revenu_p_riode_= - caml_string_of_jsbytes - ("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), - cst_conforme_article_l442_1= - caml_string_of_jsbytes("conforme_article_l442_1"), - cst_age_personne_sous_location= - caml_string_of_jsbytes("age_personne_sous_location"), - cst_PrestationAccueilJeuneEnfa$1= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationsFamiliales$2= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial$1= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationLogement$1=caml_string_of_jsbytes("AllocationLogement"), - cst_Allocation_ducationEnfantH$0= - caml_string_of_jsbytes - ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), - cst_AllocationSoutienFamilial$2= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationRentr_eScolaire$0= - caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), - cst_AllocationJournali_rePrese$0= - caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), - cst_Avant$1=caml_string_of_jsbytes("Avant"), - cst_Pendant$1=caml_string_of_jsbytes("Pendant"), - cst_Apr_s$0=caml_string_of_jsbytes("Apr\xc3\xa8s"), - cst_GardeAltern_ePartageAlloca$0= - caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), - cst_GardeAltern_eAllocataireUn$0= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), - cst_EffectiveEtPermanente$2= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ServicesSociauxAllocationV$3= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), - cst_ServicesSociauxAllocationV$4= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_Guadeloupe$1=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$1=caml_string_of_jsbytes("Guyane"), - cst_Martinique$1=caml_string_of_jsbytes("Martinique"), - cst_LaR_union$0=caml_string_of_jsbytes("LaR\xc3\xa9union"), - cst_SaintBarth_lemy$0=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), - cst_SaintMartin$1=caml_string_of_jsbytes("SaintMartin"), - cst_M_tropole$0=caml_string_of_jsbytes("M\xc3\xa9tropole"), - cst_SaintPierreEtMiquelon$1= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Mayotte$1=caml_string_of_jsbytes("Mayotte"), - cst_PersonneSeule=caml_string_of_jsbytes("PersonneSeule"), - cst_Couple=caml_string_of_jsbytes("Couple"), - cst_tudiantLog_EnChambre= - caml_string_of_jsbytes("\xc3\x89tudiantLog\xc3\xa9EnChambre"), - cst_tudiantLog_EnChambreR_habi= - caml_string_of_jsbytes - ("\xc3\x89tudiantLog\xc3\xa9EnChambreR\xc3\xa9habilit\xc3\xa9e"), - cst_Personnes_g_esSelon3DeD842= - caml_string_of_jsbytes("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"), - cst_AutresPersonnes=caml_string_of_jsbytes("AutresPersonnes"), - cst_LogementPersonnes_g_esOuHa= - caml_string_of_jsbytes - ("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"), - cst_R_sidenceSociale=caml_string_of_jsbytes("R\xc3\xa9sidenceSociale"), - cst_FoyerJeunesTrvailleursOuMi= - caml_string_of_jsbytes - ("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"), - cst_Autre$1=caml_string_of_jsbytes("Autre"), - cst_EffectiveEtPermanente$1= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_R_sidenceAltern_eAllocatai= - caml_string_of_jsbytes - ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"), - cst_R_sidenceAltern_eAllocatio= - caml_string_of_jsbytes - ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"), - cst_C_libataire=caml_string_of_jsbytes("C\xc3\xa9libataire"), - cst_Mari_s=caml_string_of_jsbytes("Mari\xc3\xa9s"), - cst_Pacs_s=caml_string_of_jsbytes("Pacs\xc3\xa9s"), - cst_Concubins=caml_string_of_jsbytes("Concubins"), - cst_C_libataireS_par_DeFait= - caml_string_of_jsbytes("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"), - cst_ConcubinageDontS_par_DeFai= - caml_string_of_jsbytes("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"), - cst_AidePersonnalis_eLogement= - caml_string_of_jsbytes("AidePersonnalis\xc3\xa9eLogement"), - cst_AllocationLogementFamilial$0= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$0= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_Pas_ligible=caml_string_of_jsbytes("Pas\xc3\x89ligible"), - cst_AllocationLogementFamilial= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_Impay_Loyer=caml_string_of_jsbytes("Impay\xc3\xa9Loyer"), - cst_Impay_Pr_t=caml_string_of_jsbytes("Impay\xc3\xa9Pr\xc3\xaat"), - cst_TotalAnnuel_ch_ances= - caml_string_of_jsbytes("TotalAnnuel\xc3\x89ch\xc3\xa9ances"), - cst_Mensualit=caml_string_of_jsbytes("Mensualit\xc3\xa9"), - cst_Loyer=caml_string_of_jsbytes("Loyer"), - cst_Bailleur=caml_string_of_jsbytes("Bailleur"), - cst_B_n_ficiaire=caml_string_of_jsbytes("B\xc3\xa9n\xc3\xa9ficiaire"), - cst_tablissementHabilit= - caml_string_of_jsbytes("\xc3\x89tablissementHabilit\xc3\xa9"), - cst_OuiAvecLoyerOuCharges=caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), - cst_Non$0=caml_string_of_jsbytes("Non"), - cst_Location=caml_string_of_jsbytes("Location"), - cst_AccessionPropri_t= - caml_string_of_jsbytes("AccessionPropri\xc3\xa9t\xc3\xa9"), - cst_LogementFoyer=caml_string_of_jsbytes("LogementFoyer"), - cst_Zone1=caml_string_of_jsbytes("Zone1"), - cst_Zone2=caml_string_of_jsbytes("Zone2"), - cst_Zone3=caml_string_of_jsbytes("Zone3"), - cst_Fran_aise=caml_string_of_jsbytes("Fran\xc3\xa7aise"), - cst_trang_re=caml_string_of_jsbytes("\xc3\x89trang\xc3\xa8re"), - cst_DateDeNaissance=caml_string_of_jsbytes("DateDeNaissance"), - cst_AvantPremierJourMoisCivilT= - caml_string_of_jsbytes - ("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), - cst_Apr_sPremierJourMoisCivilT= - caml_string_of_jsbytes - ("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), - cst_Ascendant=caml_string_of_jsbytes("Ascendant"), - cst_Descendant=caml_string_of_jsbytes("Descendant"), - cst_Collat_ralDeuxi_meTroisi_m= - caml_string_of_jsbytes - ("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"), - cst_PasDeGardeAltern_e= - caml_string_of_jsbytes("PasDeGardeAltern\xc3\xa9e"), - cst_GardeAltern_eCoefficientPr= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"), - cst_DemandeurOuConjointOuParen= - caml_string_of_jsbytes - ("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"), - cst_Autre$0=caml_string_of_jsbytes("Autre"), - cst_CDI=caml_string_of_jsbytes("CDI"), - cst_Autres=caml_string_of_jsbytes("Autres"), - cst_AllocationsFamiliales$1= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial$0= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationJeuneEnfant=caml_string_of_jsbytes("AllocationJeuneEnfant"), - cst_AllocationSoutienFamilial$1= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationSoutienEnfantHan= - caml_string_of_jsbytes("AllocationSoutienEnfantHandicap\xc3\xa9"), - cst_AllocationAdulteHandicap= - caml_string_of_jsbytes("AllocationAdulteHandicap\xc3\xa9"), - cst_Revenu$0=caml_string_of_jsbytes("Revenu"), - cst_Infini$0=caml_string_of_jsbytes("Infini"), - cst_Revenu=caml_string_of_jsbytes("Revenu"), - cst_Infini=caml_string_of_jsbytes("Infini"), - cst_Oui=caml_string_of_jsbytes("Oui"), - cst_Non=caml_string_of_jsbytes("Non"), - cst_ObjectifD_cenceLogement= - caml_string_of_jsbytes("ObjectifD\xc3\xa9cenceLogement"), - cst_Pr_vuDansListeR321_15= - caml_string_of_jsbytes("Pr\xc3\xa9vuDansListeR321_15"), - cst_AgrandirOuRendreHabitableD= - caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), - cst_PasDeTravaux$0=caml_string_of_jsbytes("PasDeTravaux"), - cst_TravauxPourAcquisitionD832= - caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), - cst_TravauxSurLogementD_j_Acqu= - caml_string_of_jsbytes - ("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"), - cst_PasDeTravaux=caml_string_of_jsbytes("PasDeTravaux"), - cst_Demandeur=caml_string_of_jsbytes("Demandeur"), - cst_VendeurQuandDemandeurACont= - caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), - cst_D331_32=caml_string_of_jsbytes("D331_32"), - cst_D331_63_64=caml_string_of_jsbytes("D331_63_64"), - cst_D331_59_8=caml_string_of_jsbytes("D331_59_8"), - cst_D331_76_1=caml_string_of_jsbytes("D331_76_1"), - cst_Autre=caml_string_of_jsbytes("Autre"), - cst_BailleurSocial=caml_string_of_jsbytes("BailleurSocial"), - cst_BailleurPriv=caml_string_of_jsbytes("BailleurPriv\xc3\xa9"), - cst_The_function_conditions_ho$0= - caml_string_of_jsbytes - ("The function 'conditions_hors_age_out' translation isn't yet supported..."), - cst_The_function_droit_ouvert_$0= - caml_string_of_jsbytes - ("The function 'droit_ouvert_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$7= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$6= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$5= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$4= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$3= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$2= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_out' translation isn't yet supported..."), - cst_The_function_traitement_ai$1= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."), - cst_The_function_n_nombre_part= - caml_string_of_jsbytes - ("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."), - cst_The_function_condition_2_d= - caml_string_of_jsbytes - ("The function 'condition_2_du_832_25_in' translation isn't yet supported..."), - cst_The_function_traitement_ai$0= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."), - cst_The_function_traitement_ai= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."), - cst_The_function_montant_out_t= - caml_string_of_jsbytes - ("The function 'montant_out' translation isn't yet supported..."), - cst_The_function_condition_log= - caml_string_of_jsbytes - ("The function 'condition_logement_surface_in' translation isn't yet supported..."), - cst_The_function_condition_log$0= - caml_string_of_jsbytes - ("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."), - cst_The_function_condition_2_r= - caml_string_of_jsbytes - ("The function 'condition_2_r823_4_out' translation isn't yet supported..."), - cst_AccessionProprieteLocalUsa= - caml_string_of_jsbytes("AccessionProprieteLocalUsageExclusifHabitation"), - cst_Locataire$0=caml_string_of_jsbytes("Locataire"), - cst_LocationAccession$0=caml_string_of_jsbytes("LocationAccession"), - cst_ResidentLogementFoyer=caml_string_of_jsbytes("ResidentLogementFoyer"), - cst_SousLocataire$0=caml_string_of_jsbytes("SousLocataire"), - cst_InfosAccessionPropriete= - caml_string_of_jsbytes("InfosAccessionPropriete"), - cst_InfosLocatif$0=caml_string_of_jsbytes("InfosLocatif"), - cst_InfosLogementFoyer$0=caml_string_of_jsbytes("InfosLogementFoyer"), - cst_AutrePersonneACharge=caml_string_of_jsbytes("AutrePersonneACharge"), - cst_EnfantACharge=caml_string_of_jsbytes("EnfantACharge"), - cst_Changement$0=caml_string_of_jsbytes("Changement"), - cst_PasDeChangement$0=caml_string_of_jsbytes("PasDeChangement"), - cst_Non$4=caml_string_of_jsbytes("Non"), - cst_Oui$2=caml_string_of_jsbytes("Oui"), - cst_MoinsDeTroisEnfants$0=caml_string_of_jsbytes("MoinsDeTroisEnfants"), - cst_PlusDeTroisEnfants$0=caml_string_of_jsbytes("PlusDeTroisEnfants"), - cst_Ancien$0=caml_string_of_jsbytes("Ancien"), - cst_Neuf$0=caml_string_of_jsbytes("Neuf"), - cst_AllocationEducationEnfantH$0= - caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), - cst_AllocationJournalierePrese$0= - caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), - cst_AllocationLogement$2=caml_string_of_jsbytes("AllocationLogement"), - cst_AllocationRentreeScolaire$0= - caml_string_of_jsbytes("AllocationRentreeScolaire"), - cst_AllocationSoutienFamilial$4= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$4= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial$1=caml_string_of_jsbytes("ComplementFamilial"), - cst_PrestationAccueilJeuneEnfa$2= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_Apres$0=caml_string_of_jsbytes("Apres"), - cst_Avant$2=caml_string_of_jsbytes("Avant"), - cst_Pendant$2=caml_string_of_jsbytes("Pendant"), - cst_EffectiveEtPermanente$4= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_GardeAlterneeAllocataireUn$0= - caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), - cst_GardeAlterneePartageAlloca$0= - caml_string_of_jsbytes("GardeAlterneePartageAllocations"), - cst_ServicesSociauxAllocationV$5= - caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), - cst_ServicesSociauxAllocationV$6= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), - cst_Guadeloupe$2=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$2=caml_string_of_jsbytes("Guyane"), - cst_LaReunion$0=caml_string_of_jsbytes("LaReunion"), - cst_Martinique$2=caml_string_of_jsbytes("Martinique"), - cst_Mayotte$2=caml_string_of_jsbytes("Mayotte"), - cst_Metropole$0=caml_string_of_jsbytes("Metropole"), - cst_SaintBarthelemy$0=caml_string_of_jsbytes("SaintBarthelemy"), - cst_SaintMartin$2=caml_string_of_jsbytes("SaintMartin"), - cst_SaintPierreEtMiquelon$2= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Couple$0=caml_string_of_jsbytes("Couple"), - cst_PersonneSeule$0=caml_string_of_jsbytes("PersonneSeule"), - cst_AutresPersonnes$0=caml_string_of_jsbytes("AutresPersonnes"), - cst_EtudiantLogeEnChambre=caml_string_of_jsbytes("EtudiantLogeEnChambre"), - cst_EtudiantLogeEnChambreRehab= - caml_string_of_jsbytes("EtudiantLogeEnChambreRehabilitee"), - cst_PersonnesAgeesSelon3DeD842= - caml_string_of_jsbytes("PersonnesAgeesSelon3DeD842_16"), - cst_Autre$4=caml_string_of_jsbytes("Autre"), - cst_FoyerJeunesTrvailleursOuMi$0= - caml_string_of_jsbytes - ("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"), - cst_LogementPersonnesAgeesOuHa= - caml_string_of_jsbytes("LogementPersonnesAgeesOuHandicapees"), - cst_ResidenceSociale=caml_string_of_jsbytes("ResidenceSociale"), - cst_EffectiveEtPermanente$3= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ResidenceAlterneeAllocatai= - caml_string_of_jsbytes("ResidenceAlterneeAllocataireUnique"), - cst_ResidenceAlterneeAllocatio= - caml_string_of_jsbytes("ResidenceAlterneeAllocationsPartagee"), - cst_Celibataire=caml_string_of_jsbytes("Celibataire"), - cst_CelibataireSepareDeFait= - caml_string_of_jsbytes("CelibataireSepareDeFait"), - cst_ConcubinageDontSepareDeFai= - caml_string_of_jsbytes("ConcubinageDontSepareDeFait"), - cst_Concubins$0=caml_string_of_jsbytes("Concubins"), - cst_Maries=caml_string_of_jsbytes("Maries"), - cst_Pacses=caml_string_of_jsbytes("Pacses"), - cst_AidePersonnaliseeLogement= - caml_string_of_jsbytes("AidePersonnaliseeLogement"), - cst_AllocationLogementFamilial$2= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$2= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_AllocationLogementFamilial$1= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$1= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_PasEligible=caml_string_of_jsbytes("PasEligible"), - cst_ImpayeLoyer=caml_string_of_jsbytes("ImpayeLoyer"), - cst_ImpayePret=caml_string_of_jsbytes("ImpayePret"), - cst_Loyer$0=caml_string_of_jsbytes("Loyer"), - cst_Mensualite=caml_string_of_jsbytes("Mensualite"), - cst_TotalAnnuelEcheances=caml_string_of_jsbytes("TotalAnnuelEcheances"), - cst_Bailleur$0=caml_string_of_jsbytes("Bailleur"), - cst_Beneficiaire=caml_string_of_jsbytes("Beneficiaire"), - cst_EtablissementHabilite=caml_string_of_jsbytes("EtablissementHabilite"), - cst_Non$3=caml_string_of_jsbytes("Non"), - cst_OuiAvecLoyerOuCharges$0= - caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), - cst_AccessionPropriete=caml_string_of_jsbytes("AccessionPropriete"), - cst_Location$0=caml_string_of_jsbytes("Location"), - cst_LogementFoyer$0=caml_string_of_jsbytes("LogementFoyer"), - cst_Zone1$0=caml_string_of_jsbytes("Zone1"), - cst_Zone2$0=caml_string_of_jsbytes("Zone2"), - cst_Zone3$0=caml_string_of_jsbytes("Zone3"), - cst_Etrangere=caml_string_of_jsbytes("Etrangere"), - cst_Francaise=caml_string_of_jsbytes("Francaise"), - cst_ApresPremierJourMoisCivilT= - caml_string_of_jsbytes - ("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"), - cst_AvantPremierJourMoisCivilT$0= - caml_string_of_jsbytes - ("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"), - cst_DateDeNaissance$0=caml_string_of_jsbytes("DateDeNaissance"), - cst_Ascendant$0=caml_string_of_jsbytes("Ascendant"), - cst_CollateralDeuxiemeTroisiem= - caml_string_of_jsbytes("CollateralDeuxiemeTroisiemeDegre"), - cst_Descendant$0=caml_string_of_jsbytes("Descendant"), - cst_GardeAlterneeCoefficientPr= - caml_string_of_jsbytes("GardeAlterneeCoefficientPriseEnCharge"), - cst_PasDeGardeAlternee=caml_string_of_jsbytes("PasDeGardeAlternee"), - cst_Autre$3=caml_string_of_jsbytes("Autre"), - cst_DemandeurOuConjointOuParen$0= - caml_string_of_jsbytes("DemandeurOuConjointOuParentOuViaPartsSocietes"), - cst_Autres$0=caml_string_of_jsbytes("Autres"), - cst_CDI$0=caml_string_of_jsbytes("CDI"), - cst_AllocationAdulteHandicape= - caml_string_of_jsbytes("AllocationAdulteHandicape"), - cst_AllocationJeuneEnfant$0= - caml_string_of_jsbytes("AllocationJeuneEnfant"), - cst_AllocationSoutienEnfantHan$0= - caml_string_of_jsbytes("AllocationSoutienEnfantHandicape"), - cst_AllocationSoutienFamilial$3= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$3= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial$0=caml_string_of_jsbytes("ComplementFamilial"), - cst_Infini$2=caml_string_of_jsbytes("Infini"), - cst_Revenu$2=caml_string_of_jsbytes("Revenu"), - cst_Infini$1=caml_string_of_jsbytes("Infini"), - cst_Revenu$1=caml_string_of_jsbytes("Revenu"), - cst_Non$2=caml_string_of_jsbytes("Non"), - cst_Oui$1=caml_string_of_jsbytes("Oui"), - cst_AgrandirOuRendreHabitableD$0= - caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), - cst_ObjectifDecenceLogement= - caml_string_of_jsbytes("ObjectifDecenceLogement"), - cst_PasDeTravaux$2=caml_string_of_jsbytes("PasDeTravaux"), - cst_PrevuDansListeR321_15=caml_string_of_jsbytes("PrevuDansListeR321_15"), - cst_PasDeTravaux$1=caml_string_of_jsbytes("PasDeTravaux"), - cst_TravauxPourAcquisitionD832$0= - caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), - cst_TravauxSurLogementDejaAcqu= - caml_string_of_jsbytes("TravauxSurLogementDejaAcquisD832_15_2"), - cst_Demandeur$0=caml_string_of_jsbytes("Demandeur"), - cst_VendeurQuandDemandeurACont$0= - caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), - cst_Autre$2=caml_string_of_jsbytes("Autre"), - cst_D331_32$0=caml_string_of_jsbytes("D331_32"), - cst_D331_59_8$0=caml_string_of_jsbytes("D331_59_8"), - cst_D331_63_64$0=caml_string_of_jsbytes("D331_63_64"), - cst_D331_76_1$0=caml_string_of_jsbytes("D331_76_1"), - cst_BailleurPrive=caml_string_of_jsbytes("BailleurPrive"), - cst_BailleurSocial$0=caml_string_of_jsbytes("BailleurSocial"), - cst_AidesLogementLib=caml_string_of_jsbytes("AidesLogementLib"), - Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, - Stdlib_Array=global_data.Stdlib__Array, - Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, - Stdlib=global_data.Stdlib, - Stdlib_Printf=global_data.Stdlib__Printf, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, - Law_source=[0]; - caml_register_global(8849,Law_source,"Law_source"); - var - PriseEnCharge=[0], - _jG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 90, - 14, - 90, - 29, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 101, - 18, - 101, - 64, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _ju_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 87, - 14, - 87, - 53, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 86, - 14, - 86, - 50, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 89, - 14, - 89, - 46, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _ji_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 88, - 14, - 88, - 54, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 97, - 18, - 97, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _je_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 93, - 18, - 93, - 67, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 117, - 14, - 117, - 30, - [0, - caml_string_of_jsbytes("Article L131-1"), - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]]], - _i1_=[0,0], - _i2_=[1,0], - _i3_=[2,0], - _i5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 76, - 11, - 76, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 76, - 11, - 76, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i6_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("enfants_\xc3\xa0_charge"),0]], - _i$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _ja_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.personne_charge_effective_permanente_est_parent"), - 0]], - _i7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 86, - 10, - 86, - 57, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jf_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jg_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"), - 0]], - _jb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 87, - 10, - 87, - 62, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jk_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.ressources_m\xc3\xa9nage"), - 0]], - _jh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 88, - 10, - 88, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jo_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("allocations_familiales.r\xc3\xa9sidence"),0]], - _jl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 89, - 10, - 89, - 19, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _js_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("allocations_familiales.date_courante"),0]], - _jp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 92, - 10, - 92, - 23, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jw_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.enfants_\xc3\xa0_charge"), - 0]], - _jt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 95, - 10, - 95, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 77, - 3, - 77, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jC_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"), - 0]], - _jx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 10, - 116, - 54, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jD_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes("allocations_familiales"), - [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], - _jE_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes("allocations_familiales"), - [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], - _jH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 80, - 10, - 80, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 80, - 10, - 80, - 25, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jI_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("i_montant_vers\xc3\xa9"),0]], - _iW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 45, - 14, - 45, - 27, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _iS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 181, - 14, - 181, - 62, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iO_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), - [0,caml_string_of_jsbytes("input"),0]]], - _iP_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _iQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), - [0,caml_string_of_jsbytes("output"),0]]], - _iR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _iK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 187, - 14, - 187, - 61, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 39, - 14, - 39, - 38, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _iC_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _iD_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _iE_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _iF_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _iy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 37, - 14, - 37, - 32, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _iu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 187, - 5, - 187, - 43, - [0, - caml_string_of_jsbytes("Article R521-4"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _im_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("input"),0]]], - _in_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _io_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("output"),0]]], - _ip_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _iq_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _ir_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _is_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _it_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _iv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 129, - 11, - 129, - 49, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _il_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 129, - 11, - 129, - 49, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ii_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 125, - 14, - 125, - 46, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ib_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 275, - 5, - 277, - 41, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ic_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 137, - 11, - 137, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ia_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 265, - 5, - 267, - 42, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _id_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 137, - 11, - 137, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ie_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 137, - 11, - 137, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 283, - 14, - 283, - 55, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _h1_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _h2_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _h3_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _h4_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _h5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 376, - 5, - 379, - 42, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _h6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hV_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hX_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hY_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 385, - 5, - 388, - 23, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _h0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 22, - 14, - 22, - 40, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _hS_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hT_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _h8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 353, - 5, - 354, - 69, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hH_=[8,0], - _hI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 151, - 24, - 151, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 18, - 14, - 18, - 34, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 197, - 14, - 197, - 39, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hy_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _hz_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _hA_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _hB_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _hp_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hq_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hr_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hs_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _ht_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 60, - 5, - 60, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hj_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hk_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hl_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hm_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 101, - 5, - 101, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ho_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hd_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _he_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hf_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hg_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 138, - 5, - 138, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g9_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _g__= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _g$_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _ha_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 28, - 5, - 28, - 44, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _hc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 128, - 14, - 128, - 41, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gX_=[8,0], - _gY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 338, - 5, - 338, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gU_=[8,0], - _gV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 345, - 5, - 345, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gR_=[8,0], - _gS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 352, - 5, - 352, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gO_=[8,0], - _gP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 359, - 5, - 359, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gL_=[8,0], - _gM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 366, - 5, - 366, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gI_=[8,0], - _gJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 373, - 5, - 373, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gF_=[8,0], - _gG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 380, - 5, - 380, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gC_=[8,0], - _gD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 387, - 5, - 387, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gz_=[8,0], - _gA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 394, - 5, - 394, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gw_=[8,0], - _gx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 401, - 5, - 401, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gu_=[8,0], - _gv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 177, - 14, - 177, - 50, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _g1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 38, - 14, - 38, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 79, - 14, - 79, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 117, - 14, - 117, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _go_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 43, - 14, - 43, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 84, - 14, - 84, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ge_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 122, - 14, - 122, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gf_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 218, - 5, - 218, - 43, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ga_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 232, - 5, - 233, - 46, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 246, - 5, - 246, - 43, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 173, - 5, - 174, - 68, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 165, - 5, - 166, - 68, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 179, - 14, - 179, - 34, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fO_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _fP_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _fQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _fR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _fS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 313, - 5, - 315, - 58, - [0, - caml_string_of_jsbytes("Article L521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fF_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _fG_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _fH_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _fI_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _fJ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _fK_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _fL_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _fM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _fN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 299, - 5, - 300, - 58, - [0, - caml_string_of_jsbytes("Article L521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fv_=[8,0], - _fw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 159, - 6, - 159, - 71, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 406, - 5, - 407, - 72, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ft_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 101, - 5, - 101, - 70, - [0, - caml_string_of_jsbytes("Article L521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fk_=[8,0], - _fl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 250, - 5, - 251, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fh_=[8,0], - _fi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 258, - 5, - 259, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fe_=[8,0], - _ff_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 266, - 5, - 267, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fb_=[8,0], - _fc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 274, - 5, - 275, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e__=[8,0], - _e$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 282, - 5, - 283, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fa_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e7_=[8,0], - _e8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 290, - 5, - 291, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _e9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e4_=[8,0], - _e5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 298, - 5, - 299, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _e6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e1_=[8,0], - _e2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 306, - 5, - 307, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _e3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eY_=[8,0], - _eZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 314, - 5, - 315, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _e0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eV_=[8,0], - _eW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 322, - 5, - 323, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eS_=[8,0], - _eT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 330, - 5, - 330, - 49, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eQ_=[8,0], - _eR_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 167, - 14, - 167, - 49, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fo_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 362, - 5, - 363, - 71, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _eP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 359, - 29, - 359, - 64, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _eJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 142, - 14, - 142, - 34, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _eF_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("input"),0]]], - _eG_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _eH_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("output"),0]]], - _eI_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _eB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 162, - 14, - 162, - 34, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _eu_=[8,0], - _ev_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 409, - 5, - 409, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ew_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _er_=[8,0], - _es_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 416, - 5, - 416, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _et_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eo_=[8,0], - _ep_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 423, - 5, - 423, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _el_=[8,0], - _em_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 430, - 5, - 430, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _en_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ei_=[8,0], - _ej_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 437, - 5, - 437, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ek_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ef_=[8,0], - _eg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 444, - 5, - 444, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ec_=[8,0], - _ed_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 451, - 5, - 451, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ee_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d$_=[8,0], - _ea_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 458, - 5, - 458, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d8_=[8,0], - _d9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 465, - 5, - 465, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _d__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d5_=[8,0], - _d6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 472, - 5, - 472, - 69, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _d7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ex_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 186, - 14, - 186, - 59, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _d0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 195, - 14, - 195, - 67, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _dU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 420, - 6, - 421, - 72, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dP_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - [0,caml_string_of_jsbytes("input"),0]]], - _dQ_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _dR_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - [0,caml_string_of_jsbytes("output"),0]]], - _dS_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _dT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 119, - 5, - 125, - 59, - [0, - caml_string_of_jsbytes("Article L521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 426, - 5, - 427, - 71, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 31, - 9, - 31, - 32, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 23, - 5, - 23, - 69, - [0, - caml_string_of_jsbytes - ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 56, - 5, - 56, - 69, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 89, - 5, - 89, - 69, - [0, - caml_string_of_jsbytes - ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _du_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 116, - 5, - 116, - 69, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], - _dv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 301, - 14, - 301, - 30, - [0, - caml_string_of_jsbytes("Article D521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 30, - 5, - 30, - 69, - [0, - caml_string_of_jsbytes - ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _do_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 63, - 5, - 63, - 69, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 96, - 5, - 96, - 69, - [0, - caml_string_of_jsbytes - ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 132, - 5, - 132, - 69, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], - _di_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 311, - 14, - 311, - 31, - [0, - caml_string_of_jsbytes("Article D521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 34, - 14, - 34, - 36, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 33, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _db_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 33, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 75, - 14, - 75, - 64, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _c6_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _c7_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _c8_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _c9_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _c1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 83, - 19, - 83, - 69, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _c2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 147, - 11, - 147, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 56, - 14, - 56, - 41, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _c3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 147, - 11, - 147, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 147, - 11, - 147, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 33, - 14, - 33, - 40, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _cO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 158, - 14, - 158, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 154, - 14, - 154, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cJ_=[1,0], - _cF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 156, - 14, - 156, - 50, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 160, - 14, - 160, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ct_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 64, - 14, - 64, - 44, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 291, - 14, - 291, - 35, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ck_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 258, - 5, - 259, - 56, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cj_=[1,0], - _cl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ce_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 269, - 5, - 270, - 48, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cd_=[0,0], - _cf_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 218, - 5, - 218, - 70, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cb_=[0,0], - _cg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ca_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 208, - 5, - 208, - 69, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b$_=[0,0], - _ch_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 188, - 5, - 188, - 60, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b9_=[0,0], - _ci_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 99, - 11, - 99, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 214, - 5, - 214, - 70, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b3_=[1,0], - _b5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 253, - 5, - 254, - 56, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b0_=[2,0], - _b2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 263, - 5, - 264, - 48, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bV_=[0,0], - _bX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 204, - 5, - 204, - 69, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bT_=[0,0], - _bY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 184, - 5, - 184, - 60, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bR_=[0,0], - _bZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b7_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _cn_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("versement"),0]], - _cq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 146, - 11, - 146, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _co_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 146, - 11, - 146, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cr_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_enfants_l521_1"),0]], - _cu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 148, - 11, - 148, - 41, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 148, - 11, - 148, - 41, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cv_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]], - _cw_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("version_avril_2008"), - [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], - _cx_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("version_avril_2008"), - [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], - _cA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 143, - 3, - 143, - 7, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cB_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("bmaf.date_courante"),0]], - _cy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 5, - 10, - 5, - 23, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _cC_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("bmaf"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _cD_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("bmaf"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _cG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 140, - 3, - 140, - 25, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cH_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], - _cE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 63, - 10, - 63, - 23, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 140, - 3, - 140, - 25, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales.prestation_courante"), - 0]], - _cI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 64, - 10, - 64, - 29, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 140, - 3, - 140, - 25, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], - _cN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 65, - 10, - 65, - 19, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], - _cS_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], - _cV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 142, - 3, - 142, - 21, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"), - 0]], - _cT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 80, - 10, - 80, - 17, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cX_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], - _cY_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], - _c4_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _c$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 96, - 11, - 96, - 61, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 96, - 11, - 96, - 61, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _da_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"), - 0]], - _de_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _dq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _df_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 151, - 11, - 151, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dr_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_II_d521_3"),0]], - _dD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ds_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dE_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_I_d521_3"),0]], - _dL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_compl\xc3\xa9ment"),0]], - _dY_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _d1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 118, - 11, - 118, - 64, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 118, - 11, - 118, - 64, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d2_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"), - 0]], - _ey_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ez_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"), - 0]], - _eC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 111, - 11, - 111, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 111, - 11, - 111, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eD_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_total_enfants"),0]], - _eK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 110, - 11, - 110, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 110, - 11, - 110, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eL_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_moyen_enfants"),0]], - _fp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fq_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_base_premier_enfant"),0]], - _fB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fC_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_base"),0]], - _fW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _f5_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _gb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gc_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire_par_enfant"), - 0]], - _gk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gl_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"), - 0]], - _g2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g3_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_base_deuxi\xc3\xa8me_enfant"), - 0]], - _g6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 109, - 11, - 109, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 109, - 11, - 109, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g7_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("rapport_enfants_total_moyen"),0]], - _hw_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _hD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 123, - 11, - 123, - 36, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 123, - 11, - 123, - 36, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hE_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire"),0]], - _hN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hO_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_base"),0]], - _h9_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _if_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 137, - 11, - 137, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 137, - 11, - 137, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ig_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"), - 0]], - _ij_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 112, - 11, - 112, - 43, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ih_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 112, - 11, - 112, - 43, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ik_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_avec_garde_altern\xc3\xa9e_base"),0]], - _iw_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _iz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 113, - 11, - 113, - 29, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ix_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 113, - 11, - 113, - 29, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iA_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_base"),0]], - _iH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 130, - 11, - 130, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 130, - 11, - 130, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iI_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_majoration"),0]], - _iL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 58, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 58, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"), - 0]], - _iT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 59, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 59, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iU_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"), - 0]], - _iX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 101, - 10, - 101, - 23, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 101, - 10, - 101, - 23, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iY_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9"),0]], - _iZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 230, - 5, - 234, - 6, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/autres_codes.catala_fr"), - 24, - 5, - 24, - 63, - [0, - caml_string_of_jsbytes("Article L821-3"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), - [0, - caml_string_of_jsbytes - ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _bM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 60, - 5, - 62, - 32, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 49, - 5, - 50, - 50, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 10, - 58, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 68, - 5, - 71, - 57, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 10, - 59, - 29, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 10, - 59, - 29, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 10, - 59, - 29, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _by_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 10, - 59, - 29, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 216, - 18, - 216, - 41, - [0, - caml_string_of_jsbytes("Article R755-0-2"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 60, - 11, - 60, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 31, - 14, - 31, - 30, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bi_=[0,0], - _bk_=[1,0], - _bl_=[2,0], - _bm_=[3,0], - _bn_=[4,0], - _bo_=[5,0], - _bj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 354, - 5, - 359, - 30, - [0, - caml_string_of_jsbytes("Article L751-1"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 62, - 10, - 62, - 33, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 62, - 10, - 62, - 33, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 69, - 14, - 69, - 28, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _a9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 70, - 14, - 70, - 32, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _a5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 21, - 14, - 21, - 26, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _a6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 10, - 61, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _a4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 10, - 61, - 22, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _a7_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], - _a__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 66, - 3, - 66, - 7, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _a$_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.date_courante"),0]], - _a8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 9, - 10, - 9, - 23, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _bc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 66, - 3, - 66, - 7, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bd_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], - _ba_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 10, - 10, - 10, - 19, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _be_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _bf_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _bq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 62, - 10, - 62, - 33, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 62, - 10, - 62, - 33, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _br_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], - _bw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 60, - 11, - 60, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 60, - 11, - 60, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bx_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], - _bD_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _bP_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _a0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 28, - 5, - 29, - 34, - [0, - caml_string_of_jsbytes - ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _a1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _aY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 48, - 5, - 49, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _aZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _aW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 64, - 5, - 65, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _aX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _aU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 82, - 5, - 83, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _aV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _a2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _aT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _a3_= - [0, - caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant"),0]], - _aH_=[6,0], - _aJ_=[0,0], - _aK_=[1,0], - _aL_=[2,0], - _aM_=[3,0], - _aN_=[4,0], - _aO_=[5,0], - _aP_=[7,0], - _aI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 29, - 5, - 38, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aE_=[8,0], - _aF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 47, - 5, - 49, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _au_=[6,0], - _aw_=[0,0], - _ax_=[1,0], - _ay_=[2,0], - _az_=[3,0], - _aA_=[4,0], - _aB_=[5,0], - _aC_=[7,0], - _av_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 68, - 5, - 77, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ar_=[8,0], - _as_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 86, - 5, - 88, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _at_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ah_=[6,0], - _aj_=[0,0], - _ak_=[1,0], - _al_=[2,0], - _am_=[3,0], - _an_=[4,0], - _ao_=[5,0], - _ap_=[7,0], - _ai_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 107, - 5, - 116, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ae_=[8,0], - _af_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 125, - 5, - 127, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _ag_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _W_=[6,0], - _Y_=[0,0], - _Z_=[1,0], - ___=[2,0], - _$_=[3,0], - _aa_=[4,0], - _ab_=[5,0], - _ac_=[7,0], - _X_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 146, - 5, - 155, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _ad_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _T_=[8,0], - _U_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 165, - 5, - 167, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _V_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _J_=[6,0], - _L_=[0,0], - _M_=[1,0], - _N_=[2,0], - _O_=[3,0], - _P_=[4,0], - _Q_=[5,0], - _R_=[7,0], - _K_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 186, - 5, - 195, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _S_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _G_=[8,0], - _H_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 204, - 5, - 206, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _I_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aR_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _F_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aS_= - [0, - caml_string_of_jsbytes("Smic"), - [0,caml_string_of_jsbytes("brut_horaire"),0]], - _C_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 12, - 14, - 12, - 25, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _A_=[2,0], - _B_=[1,0], - _D_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 81, - 10, - 81, - 21, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _z_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 81, - 10, - 81, - 21, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _E_= - [0, - caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"), - [0,caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"),0]], - _w_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 78, - 14, - 78, - 41, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _x_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 77, - 10, - 77, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _v_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 77, - 10, - 77, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _y_= - [0, - caml_string_of_jsbytes("AllocationFamilialesAvril2008"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _u_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_in"),0], - _t_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_out"),0], - _s_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], - _r_= - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_out"),0], - _q_=[0,caml_string_of_jsbytes("Smic_in"),0], - _p_=[0,caml_string_of_jsbytes("Smic_out"),0], - _o_=[0,caml_string_of_jsbytes("AllocationsFamiliales_in"),0], - _n_=[0,caml_string_of_jsbytes("AllocationsFamiliales_out"),0], - _m_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_in"),0], - _l_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_out"),0], - _k_=[0,caml_string_of_jsbytes("AllocationFamilialesAvril2008_out"),0], - _j_=[0,caml_string_of_jsbytes("PrestationsFamiliales_in"),0], - _i_=[0,caml_string_of_jsbytes("PrestationsFamiliales_out"),0], - _h_=[0,caml_string_of_jsbytes("Enfant"),0], - _g_=[0,caml_string_of_jsbytes("EnfantEntr\xc3\xa9e"),0], - _f_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], - _e_= - [0, - caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), - 0], - _d_=[0,caml_string_of_jsbytes("VersementAllocations"),0], - _c_=[0,caml_string_of_jsbytes("PriseEnCompte"),0], - _b_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], - _a_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], - _j__=[7,0], - _j$_=[5,0], - _ka_=[4,0], - _kb_=[6,0], - _kc_=[8,0], - _kd_=[2,0], - _ke_=[3,0], - _kf_=[1,0], - _kg_=[0,0], - _j9_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'Collectivite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], - _j1_=[0,0], - _j2_=[2,0], - _j3_=[1,0], - _j4_=[5,0], - _j5_=[6,0], - _j6_=[3,0], - _j7_=[7,0], - _j8_=[4,0], - _j0_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], - _jY_=[0,0], - _jZ_=[1,0], - _jX_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'VersementAllocations.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'VersementAllocations.t'")], - _jU_=[2,0], - _jV_=[1,0], - _jW_=[0,0], - _jT_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCompte.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCompte.t'")], - _jQ_=[1,0], - _jR_=[0,0], - _jS_=[2,0], - _jP_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationObligationScolaire.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], - _jK_=[4,0], - _jL_=[3,0], - _jM_=[0,0], - _jN_=[1,0], - _jO_=[2,0], - _jJ_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], - _aaI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 235, - 14, - 235, - 25, - [0, - caml_string_of_jsbytes - ("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"), - 0]], - _aaE_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _aaF_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _aaG_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _aaH_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _aaA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1200, - 14, - 1200, - 63, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1233, - 14, - 1233, - 25, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1196, - 5, - 1196, - 70, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aam_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1193, - 14, - 1193, - 58, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aai_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1191, - 14, - 1191, - 64, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aae_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1189, - 14, - 1189, - 54, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1187, - 14, - 1187, - 51, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1185, - 14, - 1185, - 59, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1183, - 14, - 1183, - 38, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$Y_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1181, - 14, - 1181, - 44, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$U_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1179, - 14, - 1179, - 34, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$Q_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1177, - 14, - 1177, - 31, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$M_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1202, - 14, - 1202, - 48, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$N_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1166, - 11, - 1166, - 45, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$L_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1166, - 11, - 1166, - 45, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$O_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"), - 0]], - _$R_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1170, - 3, - 1170, - 13, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$S_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.m\xc3\xa9nage"),0]], - _$P_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1066, - 10, - 1066, - 16, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$V_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1170, - 3, - 1170, - 13, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$W_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.demandeur"),0]], - _$T_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1067, - 10, - 1067, - 19, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$Z_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1170, - 3, - 1170, - 13, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$0_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.informations_calcul"),0]], - _$X_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1068, - 10, - 1068, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1170, - 3, - 1170, - 13, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$4_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.date_courante"),0]], - _$1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1069, - 10, - 1069, - 23, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1170, - 3, - 1170, - 13, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$8_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette.ressources_m\xc3\xa9nage_prises_en_compte"), - 0]], - _$5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1074, - 10, - 1074, - 44, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$9_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _$__= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _aab_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1171, - 3, - 1171, - 33, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aac_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"), - 0]], - _$$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1066, - 10, - 1066, - 16, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1171, - 3, - 1171, - 33, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aag_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.demandeur"), - 0]], - _aad_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1067, - 10, - 1067, - 19, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1171, - 3, - 1171, - 33, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aak_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.informations_calcul"), - 0]], - _aah_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1068, - 10, - 1068, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aan_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1171, - 3, - 1171, - 33, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aao_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.date_courante"), - 0]], - _aal_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1069, - 10, - 1069, - 23, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aar_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1171, - 3, - 1171, - 33, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aas_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"), - 0]], - _aap_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1074, - 10, - 1074, - 44, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aat_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _aau_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _aax_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1173, - 10, - 1173, - 21, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aav_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1173, - 10, - 1173, - 21, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aay_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _aaB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1167, - 11, - 1167, - 60, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1167, - 11, - 1167, - 60, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaC_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _aaJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1174, - 10, - 1174, - 21, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1174, - 10, - 1174, - 21, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _aaK_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("aide_finale"),0]], - _$I_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1092, - 14, - 1092, - 33, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _$A_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$B_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$C_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$D_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$E_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$F_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$G_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$H_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$w_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1109, - 14, - 1109, - 36, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _$g_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$h_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$i_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$j_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$k_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$l_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$m_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$n_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$o_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$p_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$q_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$r_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$s_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$t_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$u_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$v_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - ____= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - __$_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$a_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$b_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$c_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _$d_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$e_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _$f_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$x_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1090, - 10, - 1090, - 32, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1090, - 10, - 1090, - 32, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1071, - 14, - 1071, - 25, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - __2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1146, - 14, - 1146, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __W_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1141, - 14, - 1141, - 62, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __S_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1137, - 14, - 1137, - 53, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __O_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1131, - 5, - 1131, - 65, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __K_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1126, - 14, - 1126, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __G_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1122, - 14, - 1122, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __A_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1114, - 14, - 1114, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __B_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __z_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1110, - 14, - 1110, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __C_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __v_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1080, - 14, - 1080, - 58, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - __u_=[0,0], - __q_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1118, - 14, - 1118, - 64, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __k_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1082, - 14, - 1082, - 50, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - __h_=[2,0], - __i_=[1,0], - __j_=[2,0], - __d_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1143, - 14, - 1143, - 54, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1139, - 14, - 1139, - 45, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1135, - 14, - 1135, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1128, - 14, - 1128, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1124, - 14, - 1124, - 58, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1116, - 14, - 1116, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1112, - 14, - 1112, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1120, - 14, - 1120, - 56, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1103, - 14, - 1103, - 67, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1099, - 14, - 1099, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1095, - 14, - 1095, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1107, - 14, - 1107, - 65, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1066, - 5, - 1066, - 74, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Zm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1101, - 14, - 1101, - 55, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1097, - 14, - 1097, - 52, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ze_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1105, - 14, - 1105, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 3, - 1079, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zg_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"), - 0]], - _Zd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 423, - 10, - 423, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Zj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 3, - 1079, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zk_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"), - 0]], - _Zh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 424, - 10, - 424, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Zn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 3, - 1079, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zo_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"), - 0]], - _Zl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 425, - 10, - 425, - 19, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Zr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 3, - 1079, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zs_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"), - 0]], - _Zp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 426, - 10, - 426, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Zv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 3, - 1079, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Zw_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.informations_calcul"), - 0]], - _Zt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 427, - 10, - 427, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Zx_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0]]], - _Zy_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0]]], - _ZB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1076, - 3, - 1076, - 42, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZC_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"), - 0]], - _Zz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 386, - 10, - 386, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ZF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1076, - 3, - 1076, - 42, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZG_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"), - 0]], - _ZD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 387, - 10, - 387, - 19, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ZJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1076, - 3, - 1076, - 42, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZK_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"), - 0]], - _ZH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 388, - 17, - 388, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ZL_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - 0]]], - _ZM_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - 0]]], - _ZP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZQ_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement.mode_occupation"), - 0]], - _ZN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1006, - 10, - 1006, - 25, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ZW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ZX_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.informations_calcul"), - 0]], - _ZR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1007, - 10, - 1007, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Z0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z1_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"), - 0]], - _ZY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1008, - 10, - 1008, - 27, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Z4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z5_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.situation_familiale"), - 0]], - _Z2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1011, - 10, - 1011, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Z8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Z9_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Z6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1012, - 10, - 1012, - 35, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __a_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __b_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("calcul_allocation_logement.zone"),0]], - _Z__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 10, - 1013, - 14, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __e_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __f_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement.date_courante"), - 0]], - __c_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1014, - 10, - 1014, - 23, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __l_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1085, - 3, - 1085, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __m_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("calcul_allocation_logement.type_aide"),0]], - __g_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1015, - 10, - 1015, - 19, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __n_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement"), - [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], - __o_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement"), - [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], - __r_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __s_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"), - 0]], - __p_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 751, - 10, - 751, - 25, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __w_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __x_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"), - 0]], - __t_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 752, - 10, - 752, - 19, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __D_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __E_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.informations_calcul"), - 0]], - __y_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 753, - 10, - 753, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __H_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __I_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"), - 0]], - __F_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 754, - 10, - 754, - 27, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __L_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __M_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"), - 0]], - __J_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 757, - 10, - 757, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __P_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __Q_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"), - 0]], - __N_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 758, - 10, - 758, - 35, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __T_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __U_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.zone"), - 0]], - __R_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 759, - 10, - 759, - 14, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __X_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1082, - 3, - 1082, - 37, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __Y_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"), - 0]], - __V_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 760, - 10, - 760, - 23, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - __Z_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), - [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], - __0_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), - [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], - __3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1091, - 10, - 1091, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1091, - 10, - 1091, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __4_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - __7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1088, - 10, - 1088, - 21, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1088, - 10, - 1088, - 21, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - __8_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _$y_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _$J_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1089, - 10, - 1089, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$z_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1089, - 10, - 1089, - 29, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _$K_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Y9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1403, - 14, - 1403, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Y5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1408, - 14, - 1408, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _YT_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _YU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _YV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _YW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _YX_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _YY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _YZ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _Y0_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Y1_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _Y2_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Y3_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _Y4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Y6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1026, - 10, - 1026, - 32, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1026, - 10, - 1026, - 32, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1675, - 14, - 1675, - 48, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _YL_=[1,0], - _YM_=[1,0], - _YH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1670, - 14, - 1670, - 44, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _YD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1665, - 14, - 1665, - 48, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1650, - 14, - 1650, - 32, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1664, - 14, - 1664, - 31, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1657, - 5, - 1657, - 69, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1644, - 14, - 1644, - 42, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1618, - 14, - 1618, - 26, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1624, - 14, - 1624, - 52, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Yb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1612, - 14, - 1612, - 47, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _X9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1621, - 14, - 1621, - 35, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _X5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1638, - 14, - 1638, - 67, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _X1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1607, - 14, - 1607, - 49, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _XX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1633, - 14, - 1633, - 37, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _XR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1729, - 14, - 1729, - 64, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _XP_=[3,0], - _XQ_=[3,0], - _XL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1622, - 14, - 1622, - 42, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _XH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1619, - 14, - 1619, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _XD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1626, - 14, - 1626, - 59, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1614, - 14, - 1614, - 54, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1608, - 14, - 1608, - 56, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1630, - 14, - 1630, - 44, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1724, - 14, - 1724, - 38, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1708, - 14, - 1708, - 45, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Xd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1718, - 14, - 1718, - 57, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _W$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1703, - 14, - 1703, - 54, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _W7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1697, - 14, - 1697, - 73, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _W3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1686, - 14, - 1686, - 55, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _W1_=[3,0], - _W2_=[3,0], - _WX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1692, - 14, - 1692, - 53, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _WT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1713, - 14, - 1713, - 57, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _WP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1681, - 14, - 1681, - 55, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _WL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1623, - 14, - 1623, - 47, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _WH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1620, - 14, - 1620, - 38, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _WD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1628, - 14, - 1628, - 64, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Wz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1616, - 14, - 1616, - 59, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Wv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1610, - 14, - 1610, - 61, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Wr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 81, - 14, - 81, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Wl_=[0,0], - _Wm_=[1,0], - _Wn_=[1,0], - _Wo_=[1,0], - _Wp_=[0,0], - _Wq_=[1,0], - _Wh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4871, - 14, - 4871, - 31, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Wd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1395, - 14, - 1395, - 34, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _V__=[0,0], - _V$_=[2,0], - _Wa_=[1,0], - _Wb_=[0,0], - _Wc_=[1,0], - _We_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1017, - 11, - 1017, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _V9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1017, - 11, - 1017, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wf_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], - _Wi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1010, - 10, - 1010, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1010, - 10, - 1010, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wj_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], - _Ws_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 11, - 1018, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 11, - 1018, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wt_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], - _Ww_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Wx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies_base"), - 0]], - _Wu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Wy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 858, - 10, - 858, - 35, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl"), - 0]], - _WC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 859, - 10, - 859, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WJ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9.zone"),0]], - _WG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 860, - 10, - 860, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_courante"), - 0]], - _WK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 861, - 10, - 861, - 23, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale"), - 0]], - _WO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 862, - 10, - 862, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17"), - 0]], - _WS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 863, - 10, - 863, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _WY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _WZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat"), - 0]], - _WW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 864, - 10, - 864, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _W4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _W5_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement"), - 0]], - _W0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 865, - 10, - 865, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _W8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _W9_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), - 0]], - _W6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 866, - 10, - 866, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xb_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement"), - 0]], - _W__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 867, - 10, - 867, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xe_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xf_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.charges_mensuelles_pr\xc3\xaat"), - 0]], - _Xc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 868, - 10, - 868, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1022, - 3, - 1022, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xj_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Xg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 869, - 10, - 869, - 21, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xk_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Xl_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Xo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xp_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("logement_foyer.redevance"),0]], - _Xm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 948, - 10, - 948, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xt_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("logement_foyer.mode_occupation"),0]], - _Xq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 949, - 10, - 949, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Xw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Xx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Xu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 950, - 10, - 950, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Xy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 951, - 10, - 951, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.situation_familiale_calcul_apl"), - 0]], - _XC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 952, - 10, - 952, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XJ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("logement_foyer.zone"),0]], - _XG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 953, - 10, - 953, - 14, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("logement_foyer.date_courante"),0]], - _XK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 954, - 10, - 954, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1021, - 3, - 1021, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XT_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"), - 0]], - _XO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 955, - 10, - 955, - 45, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _XU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("logement_foyer"), - [0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0]]], - _XV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("logement_foyer"), - [0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0]]], - _XY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _XZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.loyer_principal"),0]], - _XW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 790, - 10, - 790, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _X2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _X3_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("locatif.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _X0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 791, - 10, - 791, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _X6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _X7_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - 0]], - _X4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 792, - 10, - 792, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _X__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _X$_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.date_courante"),0]], - _X8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 794, - 10, - 794, - 23, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Yc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yd_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("locatif.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Ya_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 795, - 10, - 795, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Yg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yh_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.situation_familiale_calcul_apl"),0]], - _Ye_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 796, - 10, - 796, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Yk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yl_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.zone"),0]], - _Yi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 797, - 10, - 797, - 14, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Yo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yp_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.logement_est_chambre"),0]], - _Ym_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 798, - 10, - 798, - 30, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ys_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yt_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - 0]], - _Yq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 799, - 10, - 799, - 66, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Yw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Yx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.type_aide"),0]], - _Yu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 801, - 10, - 801, - 19, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _YA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.colocation"),0]], - _Yy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 802, - 10, - 802, - 20, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _YE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes - ("locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _YC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 803, - 10, - 803, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _YI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YJ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.logement_meubl\xc3\xa9_d842_2"),0]], - _YG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 806, - 10, - 806, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _YO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1020, - 3, - 1020, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _YP_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("locatif.changement_logement_d842_4"),0]], - _YK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 807, - 10, - 807, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _YQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("locatif"), - [0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0]]], - _YR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("locatif"), - [0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0]]], - _Y7_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Y__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1025, - 10, - 1025, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Y8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1025, - 10, - 1025, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Y$_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Zc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1603, - 5, - 1605, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Zb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1599, - 5, - 1601, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Za_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1595, - 5, - 1597, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _V6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 462, - 14, - 462, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _V5_=[0,0], - _V0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1148, - 5, - 1151, - 28, - [0, - caml_string_of_jsbytes("Article L841-4"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VZ_=[0,0], - _V1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 441, - 10, - 441, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1049, - 14, - 1049, - 25, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VT_=[0,0], - _VU_=[0,0], - _VV_=[1,0], - _VW_=[2,0], - _VX_=[0,0], - _VK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1018, - 5, - 1022, - 29, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 995, - 5, - 1006, - 12, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VB_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("input"),0]]], - _VC_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _VD_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("output"),0]]], - _VE_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _VF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 978, - 5, - 979, - 72, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vt_=[2,0], - _Vy_=[1,0], - _Vz_=[0,0], - _Vu_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _Vv_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _Vw_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _Vx_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _VA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 937, - 5, - 964, - 29, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vl_=[2,0], - _Vq_=[1,0], - _Vr_=[0,0], - _Vm_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _Vn_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _Vo_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _Vp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _Vs_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 902, - 5, - 926, - 11, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vg_=[0,0], - _Vh_=[1,0], - _Vi_=[3,0], - _Vj_=[4,0], - _Vk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 883, - 5, - 887, - 52, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _VP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 856, - 14, - 856, - 25, - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _Va_=[0,0], - _U$_=[2,0], - _U7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 467, - 14, - 467, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 469, - 14, - 469, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4418, - 5, - 4426, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _UW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4399, - 5, - 4406, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _UX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4380, - 5, - 4389, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _UY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _US_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1136, - 5, - 1136, - 73, - [0, - caml_string_of_jsbytes("Article L841-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _UO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 432, - 11, - 432, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 432, - 11, - 432, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4829, - 9, - 4829, - 55, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _UG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UI_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"), - 0]], - _UA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4828, - 9, - 4828, - 68, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _UB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UD_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"), - 0]], - _Uw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 459, - 14, - 459, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Us_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 458, - 14, - 458, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 457, - 14, - 457, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ui_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 455, - 14, - 455, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uh_=[6,0], - _Ud_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 451, - 14, - 451, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uc_=[1,0], - _T__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 450, - 14, - 450, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _T6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4241, - 14, - 4241, - 28, - [0, - caml_string_of_jsbytes("Article D841-1"), - [0, - caml_string_of_jsbytes("Chapitre 1 : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _T7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 433, - 11, - 433, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _T5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 433, - 11, - 433, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _T8_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("dur\xc3\xa9e_l841_1_3"),0]], - _T$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 435, - 3, - 435, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ua_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], - _T9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 46, - 10, - 46, - 23, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ue_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 435, - 3, - 435, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uf_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales.prestation_courante"), - 0]], - _Ub_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 47, - 10, - 47, - 29, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Uj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 435, - 3, - 435, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uk_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], - _Ug_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 48, - 10, - 48, - 19, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ul_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - 0]]], - _Um_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - 0]]], - _Up_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uq_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), - 0]], - _Un_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 311, - 10, - 311, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ut_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uu_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), - 0]], - _Ur_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 312, - 10, - 312, - 19, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ux_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 436, - 3, - 436, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Uy_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), - 0]], - _Uv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 313, - 17, - 313, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UJ_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _UK_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _UP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 432, - 11, - 432, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 432, - 11, - 432, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UQ_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_sociale"), - 0]], - _U0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _UR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 11, - 429, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U1_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("condition_logement"),0]], - _U4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 444, - 10, - 444, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 444, - 10, - 444, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U5_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _U8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 443, - 10, - 443, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 443, - 10, - 443, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U9_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _Vc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 440, - 10, - 440, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _U__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 440, - 10, - 440, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Vd_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"), - 0]], - _VQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ve_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 11, - 431, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VR_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"), - 0]], - _V2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 441, - 10, - 441, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _VS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 441, - 10, - 441, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _V3_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]], - _V7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 442, - 10, - 442, - 33, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _V4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 442, - 10, - 442, - 33, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _V8_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement"), - 0]], - _T1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 584, - 5, - 586, - 36, - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _T2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 397, - 10, - 397, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _T0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 397, - 10, - 397, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 408, - 14, - 408, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 410, - 14, - 410, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 661, - 5, - 671, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 684, - 5, - 695, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 634, - 5, - 641, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3758, - 5, - 3763, - 30, - [0, - caml_string_of_jsbytes("Article R832-21"), - [0, - caml_string_of_jsbytes - ("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _TF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TA_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - [0,caml_string_of_jsbytes("input"),0]]], - _TB_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _TC_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - [0,caml_string_of_jsbytes("output"),0]]], - _TD_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _Tz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 718, - 5, - 721, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tv_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - [0,caml_string_of_jsbytes("input"),0]]], - _Tw_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _Tx_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ty_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _Tu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 613, - 5, - 616, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 406, - 14, - 406, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 405, - 14, - 405, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 404, - 14, - 404, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 756, - 5, - 769, - 30, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _S$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 737, - 5, - 742, - 30, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ta_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 733, - 31, - 733, - 54, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Tb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 393, - 11, - 393, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 393, - 11, - 393, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 393, - 11, - 393, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3085, - 5, - 3088, - 46, - [0, - caml_string_of_jsbytes("Article R832-7"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3050, - 5, - 3052, - 47, - [0, - caml_string_of_jsbytes("Article R832-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ST_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 392, - 11, - 392, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S1_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _S5_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _Tc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _S6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 391, - 11, - 391, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Td_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("condition_logement_pr\xc3\xaat"),0]], - _Tg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 395, - 3, - 395, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Th_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), - 0]], - _Te_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 311, - 10, - 311, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 395, - 3, - 395, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tl_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), - 0]], - _Ti_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 312, - 10, - 312, - 19, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _To_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 395, - 3, - 395, - 22, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), - 0]], - _Tm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 313, - 17, - 313, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Tq_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Tr_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _TP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ts_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 390, - 11, - 390, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TQ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("condition_logement_bailleur"),0]], - _TT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 399, - 10, - 399, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 399, - 10, - 399, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TU_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _TX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 398, - 10, - 398, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 398, - 10, - 398, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TY_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _T3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 397, - 10, - 397, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _TZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 397, - 10, - 397, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _T4_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _SQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2174, - 14, - 2174, - 40, - [0, - caml_string_of_jsbytes("Article D823-22"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 556, - 5, - 559, - 43, - [0, - caml_string_of_jsbytes("Article L823-8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _SM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 485, - 11, - 485, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 485, - 11, - 485, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4394, - 14, - 4394, - 29, - [0, - caml_string_of_jsbytes("Article 45"), - [0, - caml_string_of_jsbytes - ("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _SB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2136, - 6, - 2144, - 77, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 484, - 11, - 484, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 484, - 11, - 484, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Su_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 498, - 14, - 498, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 497, - 14, - 497, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 496, - 14, - 496, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 500, - 14, - 500, - 65, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2127, - 5, - 2132, - 71, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 483, - 11, - 483, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 483, - 11, - 483, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _R8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2148, - 14, - 2148, - 47, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _R9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 486, - 11, - 486, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _R7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 486, - 11, - 486, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _R__= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"), - 0]], - _Sd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 483, - 11, - 483, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _R$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 483, - 11, - 483, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Se_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("condition_rang_enfant"),0]], - _Sh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 490, - 3, - 490, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Si_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("base_mensuelle_allocations_familiales.date_courante"), - 0]], - _Sf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 5, - 10, - 5, - 23, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _Sj_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Sk_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Sn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 489, - 3, - 489, - 18, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _So_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"), - 0]], - _Sl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 311, - 10, - 311, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 489, - 3, - 489, - 18, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ss_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]], - _Sp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 312, - 10, - 312, - 19, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 489, - 3, - 489, - 18, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sw_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"), - 0]], - _St_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 313, - 17, - 313, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sx_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Sy_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _SD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 484, - 11, - 484, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Sz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 484, - 11, - 484, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SE_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"), - 0]], - _SH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 487, - 11, - 487, - 26, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 487, - 11, - 487, - 26, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SI_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("plafond_d823_22"),0]], - _SN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 485, - 11, - 485, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 485, - 11, - 485, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SO_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], - _SR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 493, - 10, - 493, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 493, - 10, - 493, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _SS_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), - 0]], - _R1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1424, - 14, - 1424, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _RX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1429, - 14, - 1429, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _RL_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _RM_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _RO_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RP_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _RQ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RR_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _RS_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _RU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _RW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _RY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 771, - 10, - 771, - 32, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 771, - 10, - 771, - 32, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1531, - 14, - 1531, - 48, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _RB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1516, - 14, - 1516, - 32, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1530, - 14, - 1530, - 31, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1523, - 5, - 1523, - 69, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1510, - 14, - 1510, - 42, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1484, - 14, - 1484, - 26, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1490, - 14, - 1490, - 52, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1478, - 14, - 1478, - 47, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Q$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1487, - 14, - 1487, - 35, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Q7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1504, - 14, - 1504, - 67, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Q3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1473, - 14, - 1473, - 49, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1499, - 14, - 1499, - 37, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1587, - 14, - 1587, - 38, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1488, - 14, - 1488, - 42, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1485, - 14, - 1485, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1492, - 14, - 1492, - 59, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _QD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1480, - 14, - 1480, - 54, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1474, - 14, - 1474, - 56, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1496, - 14, - 1496, - 44, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1489, - 14, - 1489, - 47, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ql_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1580, - 14, - 1580, - 53, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qj_=[0,0], - _Qk_=[0,0], - _Qf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1574, - 14, - 1574, - 43, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qd_=[0,0], - _Qe_=[0,0], - _P$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1486, - 14, - 1486, - 38, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1569, - 14, - 1569, - 57, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1564, - 14, - 1564, - 45, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1559, - 14, - 1559, - 54, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1553, - 14, - 1553, - 73, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1548, - 14, - 1548, - 53, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1542, - 14, - 1542, - 55, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PL_=[2,0], - _PM_=[2,0], - _PH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1494, - 14, - 1494, - 64, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _PD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1482, - 14, - 1482, - 59, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Pz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1476, - 14, - 1476, - 61, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Pv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1537, - 14, - 1537, - 55, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Pr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 71, - 14, - 71, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Pl_=[0,0], - _Pm_=[1,0], - _Pn_=[1,0], - _Po_=[1,0], - _Pp_=[0,0], - _Pq_=[1,0], - _Ph_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2041, - 14, - 2041, - 31, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Pd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1416, - 14, - 1416, - 34, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _O__=[0,0], - _O$_=[2,0], - _Pa_=[1,0], - _Pb_=[0,0], - _Pc_=[1,0], - _Pe_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 762, - 11, - 762, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _O9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 762, - 11, - 762, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Pf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], - _Pi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 756, - 10, - 756, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Pg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 756, - 10, - 756, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Pj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], - _Ps_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 763, - 11, - 763, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Pk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 763, - 11, - 763, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Pt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], - _Pw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Px_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale"), - 0]], - _Pu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 689, - 10, - 689, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PB_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Py_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 690, - 10, - 690, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge"), - 0]], - _PC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 691, - 10, - 691, - 35, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl"), - 0]], - _PG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 692, - 10, - 692, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PP_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement"), - 0]], - _PK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 693, - 10, - 693, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat"), - 0]], - _PQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 10, - 694, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _PX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), - 0]], - _PU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 695, - 10, - 695, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P1_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement"), - 0]], - _PY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 696, - 10, - 696, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P5_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9"), - 0]], - _P2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 697, - 10, - 697, - 21, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _P9_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17"), - 0]], - _P6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 698, - 10, - 698, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9.zone"),0]], - _P__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 699, - 10, - 699, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qh_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.type_pr\xc3\xaat"), - 0]], - _Qc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 700, - 10, - 700, - 19, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qn_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.anciennet\xc3\xa9_logement"), - 0]], - _Qi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 701, - 10, - 701, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 767, - 3, - 767, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qr_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("accession_propri\xc3\xa9t\xc3\xa9.date_courante"), - 0]], - _Qo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 702, - 10, - 702, - 23, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qs_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Qt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Qw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Qx_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("logement_foyer.mode_occupation"),0]], - _Qu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 632, - 10, - 632, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QB_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Qy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 633, - 10, - 633, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _QC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 634, - 10, - 634, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("logement_foyer.situation_familiale_calcul_apl"), - 0]], - _QG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 635, - 10, - 635, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("logement_foyer.zone"),0]], - _QK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 636, - 10, - 636, - 14, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QR_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("logement_foyer.date_courante"),0]], - _QO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 766, - 3, - 766, - 17, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("logement_foyer.redevance"),0]], - _QS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _QW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _QX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Q0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Q1_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.loyer_principal"),0]], - _QY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 10, - 558, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Q4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Q5_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("locatif.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Q2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 559, - 10, - 559, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Q8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Q9_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - 0]], - _Q6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 560, - 10, - 560, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Ra_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.date_courante"),0]], - _Q__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 10, - 562, - 23, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Re_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("locatif.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Rc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 10, - 563, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Ri_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.situation_familiale_calcul_apl"),0]], - _Rg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 10, - 564, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rn_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.zone"),0]], - _Rk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 565, - 10, - 565, - 14, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rr_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.logement_est_chambre"),0]], - _Ro_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 566, - 10, - 566, - 30, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Ru_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - 0]], - _Rs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 567, - 10, - 567, - 66, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Ry_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.type_aide"),0]], - _Rw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 569, - 10, - 569, - 19, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("locatif.colocation"),0]], - _RA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 570, - 10, - 570, - 20, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 765, - 3, - 765, - 10, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RH_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _RE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 571, - 10, - 571, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RI_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _RJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _RZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _R2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 770, - 10, - 770, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _R0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 770, - 10, - 770, - 29, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _R3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _R6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1469, - 5, - 1471, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _R5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1465, - 5, - 1467, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _R4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1461, - 5, - 1463, - 15, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _O6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4569, - 14, - 4569, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _OY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _OZ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _O0_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _O1_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _O2_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _O3_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _O4_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _O5_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _O7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 905, - 10, - 905, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 905, - 10, - 905, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4546, - 14, - 4546, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Og_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Oh_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Oi_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Oj_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Ok_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ol_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Om_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _On_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Oo_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Op_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Oq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Or_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Os_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ot_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ou_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ov_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ow_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ox_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Oy_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Oz_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OA_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _OB_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OC_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _OD_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OE_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _OF_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _OG_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _OH_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _OI_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _OJ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _OL_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OM_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _ON_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _OO_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _OP_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _OQ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _OR_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OS_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _OT_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 904, - 10, - 904, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Of_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 904, - 10, - 904, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Oc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4527, - 14, - 4527, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NQ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _NR_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _NS_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _NT_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _NU_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _NV_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _NW_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _NX_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _NY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _NZ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _N0_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _N1_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _N2_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _N3_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _N4_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _N5_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _N6_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _N7_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _N8_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _N9_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _N__= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _N$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Oa_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ob_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Od_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 903, - 10, - 903, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 903, - 10, - 903, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4439, - 14, - 4439, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4708, - 14, - 4708, - 47, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NA_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _NB_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _NC_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _ND_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _NE_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _NF_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _NG_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _NH_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _NJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 884, - 11, - 884, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 884, - 11, - 884, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4468, - 14, - 4468, - 41, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ns_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4494, - 14, - 4494, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _No_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4479, - 14, - 4479, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4731, - 7, - 4734, - 45, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 880, - 11, - 880, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ni_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4719, - 14, - 4719, - 50, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4465, - 14, - 4465, - 62, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ne_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.n_nombre_parts_d832_25"), - 0]], - _M$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4458, - 14, - 4458, - 61, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Na_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nb_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.condition_2_du_832_25"), - 0]], - _M8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 929, - 14, - 929, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _M4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 939, - 14, - 939, - 53, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _M0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 937, - 14, - 937, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 935, - 14, - 935, - 70, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 933, - 14, - 933, - 65, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 14, - 931, - 67, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 908, - 14, - 908, - 55, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MI_=[0,[0,[0,0],1,1,1,1]], - _MJ_=[1,0], - _MC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4501, - 14, - 4501, - 70, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _My_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4498, - 14, - 4498, - 69, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Mu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4499, - 14, - 4499, - 75, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Mp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4650, - 5, - 4650, - 44, - [0, - caml_string_of_jsbytes("Article D842-9"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _L$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ma_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mb_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mc_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Md_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _Me_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mf_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mg_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mh_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _Mi_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mj_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mk_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Ml_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _Mm_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mn_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mo_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _Mq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 875, - 11, - 875, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4632, - 14, - 4632, - 39, - [0, - caml_string_of_jsbytes("Article D842-9"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _L6_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _L7_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _L8_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _L9_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _L1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4795, - 5, - 4795, - 28, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _L2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 10, - 857, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4785, - 14, - 4785, - 41, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4178, - 24, - 4178, - 56, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _LN_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _LO_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LP_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _LQ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LR_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _LS_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LT_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _LU_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 878, - 10, - 878, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4122, - 14, - 4122, - 46, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _LI_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _LJ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _LL_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 878, - 10, - 878, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 878, - 10, - 878, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4697, - 15, - 4697, - 37, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 883, - 11, - 883, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 883, - 11, - 883, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4756, - 6, - 4762, - 6, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 11, - 881, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4774, - 5, - 4775, - 59, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ly_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 11, - 881, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ls_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3124, - 5, - 3124, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3170, - 5, - 3170, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3216, - 5, - 3216, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3262, - 5, - 3262, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ln_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3308, - 5, - 3308, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ll_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Li_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3354, - 5, - 3354, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3400, - 5, - 3400, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Le_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3446, - 5, - 3446, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3491, - 5, - 3491, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ld_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _La_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3538, - 5, - 3538, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Lb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3583, - 5, - 3583, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3628, - 5, - 3628, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3673, - 5, - 3673, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3718, - 5, - 3718, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3763, - 5, - 3763, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _K0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3808, - 5, - 3808, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _K1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3853, - 5, - 3853, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3898, - 5, - 3898, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3943, - 5, - 3943, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3988, - 5, - 3988, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4033, - 5, - 4033, - 64, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4078, - 5, - 4078, - 33, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 877, - 10, - 877, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4513, - 14, - 4513, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _KL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 902, - 10, - 902, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 902, - 10, - 902, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4198, - 5, - 4198, - 16, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _KG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 872, - 11, - 872, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4144, - 14, - 4144, - 41, - [0, - caml_string_of_jsbytes("Article 34"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ky_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 941, - 14, - 941, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ks_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4505, - 14, - 4505, - 64, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ko_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4503, - 14, - 4503, - 59, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Kk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4236, - 14, - 4236, - 33, - [0, - caml_string_of_jsbytes("Article 39"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Kg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4225, - 14, - 4225, - 33, - [0, - caml_string_of_jsbytes("Article 38"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Kc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4243, - 14, - 4243, - 41, - [0, - caml_string_of_jsbytes("Article 39"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _J__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4218, - 14, - 4218, - 41, - [0, - caml_string_of_jsbytes("Article 38"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _J6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4166, - 14, - 4166, - 41, - [0, - caml_string_of_jsbytes("Article 36"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _J2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 278, - 14, - 278, - 36, - [0, - caml_string_of_jsbytes("Article premier"), - [0, - caml_string_of_jsbytes - ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), - 0]]], - _JY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4156, - 14, - 4156, - 40, - [0, - caml_string_of_jsbytes("Article 35"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 879, - 11, - 879, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 879, - 11, - 879, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J0_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_6"),0]], - _J3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 882, - 11, - 882, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 882, - 11, - 882, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J4_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], - _J7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 885, - 11, - 885, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 885, - 11, - 885, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J8_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d842_6"),0]], - _J$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 886, - 11, - 886, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 886, - 11, - 886, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ka_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_11"),0]], - _Kd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 887, - 11, - 887, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Kb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 887, - 11, - 887, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ke_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_12"),0]], - _Kh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 888, - 11, - 888, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Kf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 888, - 11, - 888, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ki_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_d842_11"),0]], - _Kl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 889, - 11, - 889, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Kj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 889, - 11, - 889, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Km_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_d842_12"),0]], - _Kp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 891, - 3, - 891, - 22, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Kq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Kn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 681, - 10, - 681, - 35, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Kt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 891, - 3, - 891, - 22, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ku_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _Kr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 682, - 10, - 682, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Kv_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Kw_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _Kz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 894, - 3, - 894, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KA_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _Kx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 544, - 10, - 544, - 23, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KB_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _KC_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _KH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 872, - 11, - 872, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 872, - 11, - 872, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KI_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], - _KM_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Lv_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _LB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 11, - 881, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 11, - 881, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LC_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("seuil_minimal_ressources_m\xc3\xa9nage"),0]], - _LG_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _LY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _L3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 10, - 857, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 10, - 857, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L4_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), - 0]], - _Mr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 875, - 11, - 875, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 875, - 11, - 875, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ms_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d842_6"),0]], - _Mv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 896, - 3, - 896, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mw_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Mt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 613, - 10, - 613, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Mz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 896, - 3, - 896, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MA_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _Mx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 614, - 10, - 614, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 896, - 3, - 896, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ME_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _MB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 10, - 615, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MF_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _MG_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _ML_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MM_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer.mode_occupation"), - 0]], - _MH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 632, - 10, - 632, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MQ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _MN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 633, - 10, - 633, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MU_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _MR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 634, - 10, - 634, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), - 0]], - _MV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 635, - 10, - 635, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _M1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _M2_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], - _MZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 636, - 10, - 636, - 14, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _M5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _M6_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], - _M3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _M9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 892, - 3, - 892, - 28, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _M__= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], - _M7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Nf_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Ng_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Nl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 880, - 11, - 880, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 880, - 11, - 880, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nm_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("seuil_minimal_d\xc3\xa9pense_nette_minimale"), - 0]], - _Np_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 871, - 11, - 871, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 871, - 11, - 871, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], - _Nt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 873, - 11, - 873, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 873, - 11, - 873, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nu_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], - _Nx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 874, - 11, - 874, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Nv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 874, - 11, - 874, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ny_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], - _NK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _NN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 899, - 10, - 899, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 899, - 10, - 899, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NO_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Oe_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _OW_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _O8_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _JU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4983, - 14, - 4983, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _JM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _JN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _JO_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _JP_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _JQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _JR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _JS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _JT_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _JV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 982, - 10, - 982, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 982, - 10, - 982, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4959, - 14, - 4959, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _I6_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _I7_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _I8_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _I9_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _I__= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _I$_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ja_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jb_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Jc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jd_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Je_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jf_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Jg_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jh_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ji_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jj_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Jk_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jl_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Jm_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jn_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Jo_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jp_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Jq_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jr_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Js_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jt_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ju_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jv_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Jw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _Jx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _Jy_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _Jz_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _JA_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _JB_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _JC_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _JD_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _JE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _JF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _JG_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _JH_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _JJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 981, - 10, - 981, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 981, - 10, - 981, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4947, - 14, - 4947, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _IV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _IW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _IX_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _IY_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _IZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _I0_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _I1_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _I3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 980, - 10, - 980, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 980, - 10, - 980, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4924, - 14, - 4924, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Is_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _It_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Iu_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _Iv_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Iw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ix_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _Iy_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Iz_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _IA_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _IB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _IC_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _ID_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _IE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _IF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _IG_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _IH_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _II_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _IJ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _IK_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _IL_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _IM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _IN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _IO_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _IP_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _IR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 979, - 10, - 979, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ir_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 979, - 10, - 979, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Io_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4844, - 14, - 4844, - 33, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ik_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 5034, - 14, - 5034, - 47, - [0, - caml_string_of_jsbytes("Article D842-17"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ic_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Id_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Ie_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _If_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Ig_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ih_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Ii_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ij_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Il_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 959, - 11, - 959, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ib_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 959, - 11, - 959, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4903, - 14, - 4903, - 27, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _H6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 5025, - 14, - 5025, - 36, - [0, - caml_string_of_jsbytes("Article D842-17"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _H7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 958, - 11, - 958, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 958, - 11, - 958, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4865, - 14, - 4865, - 41, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4901, - 14, - 4901, - 70, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4891, - 14, - 4891, - 69, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4892, - 14, - 4892, - 75, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4911, - 14, - 4911, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 978, - 10, - 978, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 978, - 10, - 978, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4307, - 6, - 4307, - 74, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _HG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4342, - 6, - 4343, - 38, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _HE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4360, - 6, - 4361, - 24, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _HB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4324, - 6, - 4325, - 41, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _HC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4265, - 14, - 4265, - 41, - [0, - caml_string_of_jsbytes("Article 40"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Hp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4862, - 14, - 4862, - 61, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hr_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.condition_2_du_832_25"), - 0]], - _Hm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 987, - 14, - 987, - 49, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 997, - 14, - 997, - 53, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _He_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 995, - 14, - 995, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ha_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 993, - 14, - 993, - 70, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 991, - 14, - 991, - 65, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 989, - 14, - 989, - 67, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 985, - 14, - 985, - 55, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 999, - 14, - 999, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4897, - 14, - 4897, - 64, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _GK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4895, - 14, - 4895, - 59, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _GG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4899, - 14, - 4899, - 55, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _GC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4379, - 14, - 4379, - 51, - [0, - caml_string_of_jsbytes("Article 44"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Gy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4278, - 14, - 4278, - 41, - [0, - caml_string_of_jsbytes("Article 41"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Gu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4289, - 14, - 4289, - 42, - [0, - caml_string_of_jsbytes("Article 42"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Gv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 960, - 11, - 960, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 960, - 11, - 960, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d842_15"),0]], - _Gz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 961, - 11, - 961, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 961, - 11, - 961, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GA_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_15"),0]], - _GD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 962, - 11, - 962, - 48, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 962, - 11, - 962, - 48, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("montant_minimal_d\xc3\xa9pense_nette_d842_17"), - 0]], - _GH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 3, - 968, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GI_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), - 0]], - _GF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 625, - 10, - 625, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _GL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 3, - 968, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _GJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 626, - 10, - 626, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _GP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 3, - 968, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _GN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 627, - 10, - 627, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _GR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _GS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _GV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 971, - 3, - 971, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _GT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 544, - 10, - 544, - 23, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GX_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _GY_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _G1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G2_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer.mode_occupation"), - 0]], - _GZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 632, - 10, - 632, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _G5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G6_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _G3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 633, - 10, - 633, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _G9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _G__= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _G7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 634, - 10, - 634, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Hb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), - 0]], - _G$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 635, - 10, - 635, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Hf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hg_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], - _Hd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 636, - 10, - 636, - 14, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Hj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hk_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], - _Hh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Hn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 969, - 3, - 969, - 28, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ho_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], - _Hl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Hs_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Ht_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Hw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 965, - 10, - 965, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 965, - 10, - 965, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], - _HH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 10, - 964, - 27, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HI_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"),0]], - _HM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _HP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 973, - 3, - 973, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _HN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 613, - 10, - 613, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _HT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 973, - 3, - 973, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _HR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 614, - 10, - 614, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _HX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 973, - 3, - 973, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HY_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _HV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 10, - 615, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _HZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _H0_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _H3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 963, - 10, - 963, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 963, - 10, - 963, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], - _H8_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _H$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 966, - 10, - 966, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 966, - 10, - 966, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ia_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("loyer_minimal"),0]], - _Im_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _Ip_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 976, - 10, - 976, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _In_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 976, - 10, - 976, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Iq_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _IS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _I4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _JK_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _JW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Gp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4338, - 24, - 4338, - 43, - [0, - caml_string_of_jsbytes("Article D842-4"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Gq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 811, - 10, - 811, - 29, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Go_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 846, - 14, - 846, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4346, - 24, - 4346, - 46, - [0, - caml_string_of_jsbytes("Article D842-4"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Gk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 10, - 813, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 847, - 14, - 847, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ge_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _Gf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Gg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _Gh_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Gl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 10, - 813, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 10, - 813, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 842, - 14, - 842, - 59, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 840, - 14, - 840, - 43, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 838, - 14, - 838, - 42, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 834, - 5, - 835, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 831, - 14, - 831, - 53, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 829, - 14, - 829, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 827, - 14, - 827, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 825, - 14, - 825, - 58, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 823, - 14, - 823, - 46, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 820, - 14, - 820, - 78, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 818, - 14, - 818, - 60, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4278, - 5, - 4278, - 27, - [0, - caml_string_of_jsbytes("Article D842-2"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Fs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 816, - 14, - 816, - 48, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ft_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fu_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.loyer_principal"),0]], - _Fp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 10, - 558, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Fx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fy_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Fv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 559, - 10, - 559, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FC_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - 0]], - _Fz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 560, - 10, - 560, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FG_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.date_courante"),0]], - _FD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 10, - 562, - 23, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FK_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"), - 0]], - _FH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 10, - 563, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FO_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.situation_familiale_calcul_apl"), - 0]], - _FL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 10, - 564, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.zone"),0]], - _FP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 565, - 10, - 565, - 14, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.logement_est_chambre"),0]], - _FT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 566, - 10, - 566, - 30, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _FZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F0_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - 0]], - _FX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 567, - 10, - 567, - 66, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _F3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.type_aide"),0]], - _F1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 569, - 10, - 569, - 19, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _F7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F8_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.colocation"),0]], - _F5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 570, - 10, - 570, - 20, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _F$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 3, - 809, - 21, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ga_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _F9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 571, - 10, - 571, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Gb_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("calcul_apl_locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _Gc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("calcul_apl_locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _Gm_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Gr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 811, - 10, - 811, - 29, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 811, - 10, - 811, - 29, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gs_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Fj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 58, - 5, - 60, - 60, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Fk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fi_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 47, - 5, - 48, - 78, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Fl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 10, - 41, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 66, - 5, - 69, - 85, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Fd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 10, - 42, - 29, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 10, - 42, - 29, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fe_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 10, - 42, - 29, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Fa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 10, - 42, - 29, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _E8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 62, - 18, - 62, - 41, - [0, - caml_string_of_jsbytes("Article R755-0-2"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _E9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 43, - 11, - 43, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _E7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 31, - 14, - 31, - 30, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _EW_=[0,0], - _EY_=[1,0], - _EZ_=[2,0], - _E0_=[3,0], - _E1_=[4,0], - _E2_=[5,0], - _EX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 103, - 5, - 108, - 30, - [0, - caml_string_of_jsbytes("Article L751-1"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _E3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 45, - 10, - 45, - 33, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 45, - 10, - 45, - 33, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 52, - 14, - 52, - 28, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 53, - 14, - 53, - 32, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 21, - 14, - 21, - 26, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _EI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 10, - 44, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 10, - 44, - 22, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EJ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], - _EM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 49, - 3, - 49, - 7, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EN_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.date_courante"),0]], - _EK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 9, - 10, - 9, - 23, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _EQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 49, - 3, - 49, - 7, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _ER_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], - _EO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 10, - 10, - 10, - 19, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ES_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _ET_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _E4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 45, - 10, - 45, - 33, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _EU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 45, - 10, - 45, - 33, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _E5_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], - _E__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 43, - 11, - 43, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _E6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 43, - 11, - 43, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _E$_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], - _Ff_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _Fo_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _EB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 404, - 14, - 404, - 32, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Ew_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 854, - 6, - 856, - 35, - [0, - caml_string_of_jsbytes("Article R822-20"), - [0, - caml_string_of_jsbytes - ("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Ex_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 537, - 10, - 537, - 37, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ev_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 124, - 14, - 124, - 41, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Er_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 457, - 14, - 457, - 32, - [0, - caml_string_of_jsbytes("Article R822-8"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _El_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 413, - 14, - 413, - 65, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Eh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 519, - 14, - 519, - 33, - [0, - caml_string_of_jsbytes("Article R822-10"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Ed_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 129, - 14, - 129, - 62, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _D$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 532, - 51, - 532, - 57, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 11, - 14, - 11, - 41, - [0, - caml_string_of_jsbytes("Article 3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Dispositions applicables aux ressources"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _D3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 21, - 14, - 21, - 41, - [0, - caml_string_of_jsbytes("Article 4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Dispositions applicables aux ressources"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _DZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 522, - 46, - 522, - 52, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 524, - 10, - 524, - 15, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 524, - 10, - 524, - 15, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D1_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), - 0]], - _D4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 528, - 11, - 528, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 528, - 11, - 528, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D5_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_8"),0]], - _D8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 530, - 11, - 530, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 530, - 11, - 530, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D9_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_7"),0]], - _Ea_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 532, - 11, - 532, - 42, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _D__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 532, - 11, - 532, - 42, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eb_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("ressources_forfaitaires_r822_20"),0]], - _Ee_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 526, - 11, - 526, - 59, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ec_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 526, - 11, - 526, - 59, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ef_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("ressources_personnes_vivant_habituellement_foyer"), - 0]], - _Ei_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 531, - 11, - 531, - 30, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 531, - 11, - 531, - 30, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ej_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_10"),0]], - _Em_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 534, - 3, - 534, - 40, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _En_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("base_mensuelle_allocations_familiales.date_courante"), - 0]], - _Ek_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 5, - 10, - 5, - 23, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _Eo_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Ep_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Es_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 527, - 11, - 527, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 527, - 11, - 527, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Et_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_8"),0]], - _Ey_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 537, - 10, - 537, - 37, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 537, - 10, - 537, - 37, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ez_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("ressources_prises_en_compte"),0]], - _EC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 529, - 11, - 529, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 529, - 11, - 529, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ED_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_7"),0]], - _EE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 142, - 13, - 143, - 74, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _EF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 142, - 13, - 143, - 74, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _DR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 361, - 14, - 361, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 14, - 363, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1138, - 14, - 1138, - 49, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _DF_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - [0,caml_string_of_jsbytes("input"),0]]], - _DG_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _DH_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - [0,caml_string_of_jsbytes("output"),0]]], - _DI_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _Dz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1213, - 4, - 1219, - 49, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _DA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Du_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("input"),0]]], - _Dv_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Dw_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("output"),0]]], - _Dx_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Dy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1194, - 5, - 1194, - 44, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _DB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ds_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1150, - 5, - 1152, - 44, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Dt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 329, - 11, - 329, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dm_=[0,0], - _Dl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1173, - 5, - 1189, - 10, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Dn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 351, - 10, - 351, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 351, - 10, - 351, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Do_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 351, - 10, - 351, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 351, - 10, - 351, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Df_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 357, - 5, - 359, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 347, - 10, - 347, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _De_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 347, - 10, - 347, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Da_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 163, - 14, - 163, - 31, - [0, - caml_string_of_jsbytes("Article L351-8"), - [0, - caml_string_of_jsbytes("Section 5 : Taux et montant de la pension"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"), - [0, - caml_string_of_jsbytes - ("Titre V : Assurance vieillesse - Assurance veuvage"), - [0, - caml_string_of_jsbytes - ("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _C6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 72, - 5, - 74, - 56, - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _C7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 328, - 11, - 328, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 65, - 5, - 68, - 31, - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _C8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 328, - 11, - 328, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 328, - 11, - 328, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 285, - 18, - 285, - 75, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 341, - 11, - 341, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CU_=[4,0], - _CV_=[5,0], - _CW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 266, - 18, - 268, - 45, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 341, - 11, - 341, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 943, - 5, - 943, - 59, - [0, - caml_string_of_jsbytes("Article R822-22"), - [0, - caml_string_of_jsbytes - ("Sous-section 4 : Prise en compte du patrimoine"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _C0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 341, - 11, - 341, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 249, - 33, - 249, - 58, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 125, - 14, - 125, - 32, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _CI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1057, - 5, - 1064, - 65, - [0, - caml_string_of_jsbytes("Article R822-25"), - [0, - caml_string_of_jsbytes - ("Section 3 : Conditions relatives au logement"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _CJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 323, - 12, - 323, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 323, - 12, - 323, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 323, - 12, - 323, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 171, - 5, - 177, - 66, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 156, - 5, - 158, - 30, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 125, - 5, - 131, - 33, - [0, - caml_string_of_jsbytes("Article L822-2"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cs_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 381, - 18, - 381, - 55, - [0, - caml_string_of_jsbytes("Article L822-10"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ct_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 326, - 11, - 326, - 62, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 326, - 11, - 326, - 62, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 329, - 5, - 330, - 35, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Cn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ck_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 334, - 5, - 335, - 35, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Cl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ci_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 339, - 5, - 340, - 35, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Cj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 33, - 5, - 34, - 34, - [0, - caml_string_of_jsbytes - ("Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'), - 0]]], - _Ch_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ce_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 70, - 5, - 71, - 34, - [0, - caml_string_of_jsbytes - ("Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'), - 0]]], - _Cf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 108, - 5, - 110, - 78, - [0, - caml_string_of_jsbytes("Article L822-2"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ca_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 245, - 14, - 245, - 40, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _B0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 123, - 14, - 123, - 61, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _BU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 46, - 5, - 46, - 41, - [0, - caml_string_of_jsbytes("Article L821-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), - [0, - caml_string_of_jsbytes - ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _BV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 318, - 12, - 318, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 318, - 12, - 318, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 318, - 12, - 318, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 203, - 5, - 207, - 39, - [0, - caml_string_of_jsbytes("Article L822-4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 11, - 320, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 197, - 5, - 198, - 34, - [0, - caml_string_of_jsbytes("Article L822-4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 11, - 320, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 11, - 320, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1045, - 14, - 1045, - 69, - [0, - caml_string_of_jsbytes("Article R822-25"), - [0, - caml_string_of_jsbytes - ("Section 3 : Conditions relatives au logement"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _BC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 344, - 18, - 344, - 67, - [0, - caml_string_of_jsbytes("Article L822-8"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 11, - 324, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 11, - 324, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 358, - 18, - 358, - 61, - [0, - caml_string_of_jsbytes("Article L822-9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Bx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 325, - 11, - 325, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 325, - 11, - 325, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Br_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1034, - 14, - 1034, - 39, - [0, - caml_string_of_jsbytes("Article R822-25"), - [0, - caml_string_of_jsbytes - ("Section 3 : Conditions relatives au logement"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Bn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 146, - 14, - 146, - 43, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Bj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 926, - 14, - 926, - 37, - [0, - caml_string_of_jsbytes("Article R822-22"), - [0, - caml_string_of_jsbytes - ("Sous-section 4 : Prise en compte du patrimoine"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Bf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 106, - 14, - 106, - 41, - [0, - caml_string_of_jsbytes("Article R822-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Bb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 105, - 14, - 105, - 42, - [0, - caml_string_of_jsbytes("Article R822-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _A9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 327, - 11, - 327, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 316, - 11, - 316, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 316, - 11, - 316, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 316, - 11, - 316, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A7_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_pr\xc3\xaat"),0]], - _A__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 327, - 11, - 327, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 327, - 11, - 327, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A$_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_peuplement_logement_l822_10"),0]], - _Bc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 338, - 11, - 338, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ba_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 338, - 11, - 338, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bd_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"), - 0]], - _Bg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 339, - 11, - 339, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Be_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 339, - 11, - 339, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bh_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("seuil_l822_3_parts_usufruit"),0]], - _Bk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 340, - 11, - 340, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 340, - 11, - 340, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bl_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("seuil_l822_5_patrimoine"),0]], - _Bo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 337, - 11, - 337, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 337, - 11, - 337, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"), - 0]], - _Bs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 336, - 11, - 336, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 336, - 11, - 336, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bt_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("nombre_personnes_logement"),0]], - _By_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 325, - 11, - 325, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 325, - 11, - 325, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bz_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_non_ouverture_l822_9_decence_logement"), - 0]], - _BE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 11, - 324, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 11, - 324, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BF_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_non_ouverture_l822_8"),0]], - _BI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 321, - 11, - 321, - 66, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 321, - 11, - 321, - 66, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BJ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_logement_surface_minimale_sans_seuil_m_carr\xc3\xa9s"), - 0]], - _BQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 11, - 320, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 11, - 320, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_location_tiers"),0]], - _BX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 318, - 12, - 318, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 318, - 12, - 318, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BY_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_logement_r\xc3\xa9sidence_principale"), - 0]], - _B1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 346, - 3, - 346, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B2_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"), - 0]], - _BZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1034, - 10, - 1034, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ouverture_droits_retraite"), - [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], - _B4_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ouverture_droits_retraite"), - [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], - _B7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 335, - 11, - 335, - 37, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 335, - 11, - 335, - 37, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B8_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("patrimoine_total_demandeur"),0]], - _Cb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cc_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_nationalit\xc3\xa9"),0]], - _Co_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 344, - 11, - 344, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("plafond_individuel_l815_9_s\xc3\xa9cu"),0]], - _Cu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 326, - 11, - 326, - 62, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 326, - 11, - 326, - 62, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cv_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_non_ouverture_l822_10_peuplement_logement"), - 0]], - _CE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 319, - 11, - 319, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CF_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_mode_occupation"),0]], - _CL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 323, - 12, - 323, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 323, - 12, - 323, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CM_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_surface"),0]], - _CP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 343, - 11, - 343, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 343, - 11, - 343, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CQ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]], - _C1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 341, - 11, - 341, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 341, - 11, - 341, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C2_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("patrimoine_pris_en_compte"),0]], - _C9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 328, - 11, - 328, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 328, - 11, - 328, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C__= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], - _Db_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 342, - 11, - 342, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 342, - 11, - 342, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dc_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]], - _Dh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 347, - 10, - 347, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 347, - 10, - 347, - 21, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Di_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _Dp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _DD_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _DK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 331, - 11, - 331, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 331, - 11, - 331, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DL_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _DO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 349, - 10, - 349, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 349, - 10, - 349, - 59, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DP_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _DS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 348, - 10, - 348, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 348, - 10, - 348, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DT_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _DU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 182, - 13, - 182, - 48, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _DX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 182, - 13, - 182, - 48, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _DV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 181, - 13, - 181, - 49, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _DW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 181, - 13, - 181, - 49, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _A1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3250, - 14, - 3250, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _AT_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _AU_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _AV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _AW_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _AX_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _AY_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _AZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _A0_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _A2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 741, - 10, - 741, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _AS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 741, - 10, - 741, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _AP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3149, - 14, - 3149, - 33, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _AL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3225, - 14, - 3225, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _z9_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _z__= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _z$_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _Aa_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Ab_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ac_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ad_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ae_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Af_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ag_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Ah_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ai_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Aj_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ak_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Al_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Am_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _An_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ao_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Ap_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _Aq_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Ar_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _As_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _At_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _Au_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _Av_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _Aw_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Ax_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ay_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _Az_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _AA_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _AB_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _AC_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _AD_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _AE_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _AF_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _AG_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _AH_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _AI_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _AJ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _AK_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _AM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 740, - 10, - 740, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 740, - 10, - 740, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3284, - 14, - 3284, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _z1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3169, - 14, - 3169, - 33, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3208, - 14, - 3208, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zz_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _zA_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zB_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _zC_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zD_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _zE_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zF_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _zG_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zH_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _zI_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zJ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _zK_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zL_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _zM_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zN_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _zO_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zP_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _zQ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zR_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _zS_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zT_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _zU_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _zW_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 739, - 10, - 739, - 20, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 739, - 10, - 739, - 20, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3281, - 14, - 3281, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3496, - 5, - 3508, - 77, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 705, - 10, - 705, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3549, - 5, - 3549, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 705, - 10, - 705, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 444, - 14, - 444, - 42, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _zj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 708, - 10, - 708, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2627, - 14, - 2627, - 42, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _zk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 708, - 10, - 708, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3621, - 14, - 3621, - 55, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _y7_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _y8_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _y9_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _y__= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _y$_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _za_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _zb_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _zc_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _ze_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 716, - 11, - 716, - 52, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 716, - 11, - 716, - 52, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3265, - 14, - 3265, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3557, - 14, - 3557, - 70, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3554, - 14, - 3554, - 69, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3555, - 14, - 3555, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3437, - 5, - 3437, - 44, - [0, - caml_string_of_jsbytes("Article D832-14"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yu_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yv_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yw_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yx_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yy_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yz_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yA_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yB_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yC_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yD_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yE_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yF_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yG_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yH_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yI_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yJ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 707, - 10, - 707, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3417, - 14, - 3417, - 42, - [0, - caml_string_of_jsbytes("Article D832-14"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yp_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yq_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yr_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _ys_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3599, - 5, - 3599, - 41, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 715, - 11, - 715, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3610, - 14, - 3610, - 44, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _ym_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 715, - 11, - 715, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 715, - 11, - 715, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3350, - 14, - 3350, - 36, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _ya_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 621, - 5, - 624, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _yb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 665, - 5, - 668, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 710, - 5, - 712, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 753, - 5, - 755, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 804, - 5, - 807, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 848, - 5, - 854, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 895, - 5, - 901, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _x1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 927, - 5, - 930, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 971, - 5, - 974, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1016, - 5, - 1019, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1060, - 5, - 1063, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1107, - 5, - 1110, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1150, - 5, - 1153, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1196, - 5, - 1199, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1239, - 5, - 1242, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1284, - 5, - 1287, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1328, - 5, - 1331, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1373, - 5, - 1376, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1417, - 5, - 1420, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1462, - 5, - 1465, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1506, - 5, - 1509, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1551, - 5, - 1554, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1595, - 5, - 1598, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xs_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1640, - 5, - 1643, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1684, - 5, - 1687, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1729, - 5, - 1732, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1773, - 5, - 1776, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1818, - 5, - 1821, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xi_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1862, - 5, - 1865, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1907, - 5, - 1910, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xe_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1951, - 5, - 1954, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1996, - 5, - 1999, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2071, - 5, - 2074, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _xb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2118, - 5, - 2121, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2162, - 5, - 2165, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2207, - 5, - 2210, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2251, - 5, - 2254, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2296, - 5, - 2299, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2340, - 5, - 2343, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _w1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2385, - 5, - 2388, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2429, - 5, - 2432, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2474, - 5, - 2476, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2517, - 5, - 2519, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 709, - 11, - 709, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3660, - 5, - 3660, - 28, - [0, - caml_string_of_jsbytes("Article D832-18"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 718, - 11, - 718, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3652, - 14, - 3652, - 44, - [0, - caml_string_of_jsbytes("Article D832-18"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3194, - 14, - 3194, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 738, - 10, - 738, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 738, - 10, - 738, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2646, - 7, - 2646, - 18, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 464, - 7, - 464, - 18, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _wB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2567, - 29, - 2567, - 64, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 429, - 29, - 429, - 64, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _ww_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 744, - 14, - 744, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2672, - 14, - 2672, - 50, - [0, - caml_string_of_jsbytes("Article 25"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3354, - 14, - 3354, - 64, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3352, - 14, - 3352, - 59, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _v9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 275, - 14, - 275, - 36, - [0, - caml_string_of_jsbytes("Article premier"), - [0, - caml_string_of_jsbytes - ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), - 0]]], - _v5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2615, - 14, - 2615, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _v1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2614, - 14, - 2614, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2613, - 14, - 2613, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2690, - 14, - 2690, - 48, - [0, - caml_string_of_jsbytes("Article 26"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2598, - 15, - 2598, - 49, - [0, - caml_string_of_jsbytes("Article 22"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2589, - 14, - 2589, - 42, - [0, - caml_string_of_jsbytes("Article 21"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2578, - 14, - 2578, - 41, - [0, - caml_string_of_jsbytes("Article 20"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 720, - 11, - 720, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 720, - 11, - 720, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vJ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_10"),0]], - _vM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 721, - 11, - 721, - 39, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 721, - 11, - 721, - 39, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vN_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d832_10"),0]], - _vQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 723, - 11, - 723, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 723, - 11, - 723, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vR_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_11"),0]], - _vU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 724, - 11, - 724, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 724, - 11, - 724, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_18"),0]], - _vY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 725, - 11, - 725, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 725, - 11, - 725, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_limite_tranches_d832_15_1"),0]], - _v2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 726, - 11, - 726, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 726, - 11, - 726, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v3_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("taux_tranche_inf\xc3\xa9rieure_d832_15_1"), - 0]], - _v6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 727, - 11, - 727, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 727, - 11, - 727, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v7_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("taux_tranche_sup\xc3\xa9rieure_d832_15_1"), - 0]], - _v__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 728, - 11, - 728, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 728, - 11, - 728, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v$_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], - _wc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 730, - 3, - 730, - 22, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wd_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _wa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 681, - 10, - 681, - 35, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 730, - 3, - 730, - 22, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wh_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _we_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 682, - 10, - 682, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wi_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _wj_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _wm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 722, - 11, - 722, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 722, - 11, - 722, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wn_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_17_3"),0]], - _wq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 733, - 3, - 733, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wr_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _wo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 544, - 10, - 544, - 23, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ws_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _wt_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _wF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 11, - 719, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wG_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d832_10"),0]], - _wK_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _wP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 718, - 11, - 718, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 718, - 11, - 718, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wQ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_d832_18"),0]], - _yd_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 710, - 11, - 710, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ye_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 710, - 11, - 710, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yh_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], - _yn_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _yM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 707, - 10, - 707, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 707, - 10, - 707, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yN_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d832_10_3_base"), - 0]], - _yQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 731, - 3, - 731, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yR_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _yO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 613, - 10, - 613, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 731, - 3, - 731, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _yS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 614, - 10, - 614, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 731, - 3, - 731, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _yW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 10, - 615, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y0_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _y1_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _y4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 712, - 10, - 712, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 712, - 10, - 712, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y5_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_formule"), - 0]], - _zf_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 708, - 10, - 708, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 708, - 10, - 708, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zm_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"), - 0]], - _zs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 705, - 10, - 705, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 705, - 10, - 705, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zt_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], - _zw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 713, - 10, - 713, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 713, - 10, - 713, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zx_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_arrondi"), - 0]], - _zZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _z2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 704, - 10, - 704, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 704, - 10, - 704, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z3_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], - _z6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 714, - 10, - 714, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 714, - 10, - 714, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z7_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil"), - 0]], - _AN_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _AQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 736, - 10, - 736, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _AO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 736, - 10, - 736, - 29, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _AR_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _A3_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _vD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3904, - 14, - 3904, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _vv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _vw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vx_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _vy_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _vA_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vB_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _vC_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 671, - 10, - 671, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 671, - 10, - 671, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3801, - 14, - 3801, - 33, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _vn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3879, - 14, - 3879, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uL_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _uM_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _uN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _uO_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _uP_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _uQ_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _uR_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _uS_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _uT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _uU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _uV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _uW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _uX_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _uY_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _uZ_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _u0_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _u1_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _u2_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _u3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _u4_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _u5_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _u6_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _u7_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _u8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _u9_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _u__= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _u$_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _va_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _vb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _vc_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _ve_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vf_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _vg_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _vh_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _vi_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _vj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _vk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vl_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _vm_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 670, - 10, - 670, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 670, - 10, - 670, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4045, - 5, - 4045, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 664, - 10, - 664, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3958, - 14, - 3958, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3862, - 14, - 3862, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ud_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _ue_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _uf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _ug_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _uh_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _ui_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _uj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _uk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _ul_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _um_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _un_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _uo_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _up_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _uq_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _ur_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _us_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _ut_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _uu_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _uv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _uw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _ux_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _uy_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _uz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _uA_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _uC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 669, - 10, - 669, - 20, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 669, - 10, - 669, - 20, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4039, - 5, - 4039, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _t$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 663, - 10, - 663, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3955, - 14, - 3955, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _t5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3834, - 14, - 3834, - 40, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _t1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4210, - 14, - 4210, - 55, - [0, - caml_string_of_jsbytes("Article D832-27"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _tU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _tV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _tW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _tX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _tY_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _tZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _t0_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _t2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 647, - 11, - 647, - 52, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 647, - 11, - 647, - 52, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4022, - 5, - 4022, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 662, - 10, - 662, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3939, - 14, - 3939, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3840, - 14, - 3840, - 70, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3836, - 14, - 3836, - 69, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3838, - 14, - 3838, - 75, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4206, - 14, - 4206, - 44, - [0, - caml_string_of_jsbytes("Article D832-27"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 649, - 11, - 649, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 649, - 11, - 649, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4010, - 14, - 4010, - 36, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 644, - 19, - 644, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3822, - 14, - 3822, - 40, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ti_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2806, - 14, - 2806, - 48, - [0, - caml_string_of_jsbytes("Article 30"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _te_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2915, - 14, - 2915, - 41, - [0, - caml_string_of_jsbytes("Article 32"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _s__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4006, - 14, - 4006, - 64, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _s6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4004, - 14, - 4004, - 59, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _s2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4008, - 14, - 4008, - 55, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3848, - 14, - 3848, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 668, - 10, - 668, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 668, - 10, - 668, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2717, - 14, - 2717, - 48, - [0, - caml_string_of_jsbytes("Article 27"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 501, - 14, - 501, - 48, - [0, - caml_string_of_jsbytes("Article 27"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _sS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 674, - 14, - 674, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3921, - 14, - 3921, - 35, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 640, - 12, - 640, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2782, - 14, - 2782, - 42, - [0, - caml_string_of_jsbytes("Article 29"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2771, - 14, - 2771, - 41, - [0, - caml_string_of_jsbytes("Article 28"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _su_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2796, - 14, - 2796, - 35, - [0, - caml_string_of_jsbytes("Article 30"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 643, - 10, - 643, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _st_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 643, - 10, - 643, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_r_d832_25"),0]], - _sz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 650, - 11, - 650, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 650, - 11, - 650, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sA_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_24"),0]], - _sD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 652, - 11, - 652, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 652, - 11, - 652, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sE_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d823_24"),0]], - _sI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 640, - 12, - 640, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 640, - 12, - 640, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("condition_2_du_832_25"),0]], - _sM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 658, - 3, - 658, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _sK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 544, - 10, - 544, - 23, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _sO_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _sP_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _sV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - 0]], - _s0_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _s3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 655, - 3, - 655, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s4_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), - 0]], - _s1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 625, - 10, - 625, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 655, - 3, - 655, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _s5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 626, - 10, - 626, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 655, - 3, - 655, - 22, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ta_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _s9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 627, - 10, - 627, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _tc_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _tf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 651, - 11, - 651, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _td_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 651, - 11, - 651, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_27"),0]], - _tj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 642, - 10, - 642, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _th_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 642, - 10, - 642, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"),0]], - _tn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 645, - 10, - 645, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 645, - 10, - 645, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _to_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - 0]], - _ts_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 644, - 19, - 644, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 644, - 19, - 644, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], - _tx_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _tA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 656, - 3, - 656, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tB_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _ty_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 613, - 10, - 613, - 37, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 656, - 3, - 656, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _tC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 614, - 10, - 614, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 656, - 3, - 656, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _tG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 10, - 615, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tK_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _tL_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _tQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 662, - 10, - 662, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 662, - 10, - 662, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tR_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_formule"), - 0]], - _t3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _t6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 653, - 10, - 653, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 653, - 10, - 653, - 36, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t7_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"),0]], - _ua_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 663, - 10, - 663, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 663, - 10, - 663, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ub_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_arrondi"), - 0]], - _uD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _uI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 664, - 10, - 664, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 664, - 10, - 664, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil"), - 0]], - _vp_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 666, - 10, - 666, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 666, - 10, - 666, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _vF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _sm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1862, - 14, - 1862, - 33, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _si_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2003, - 14, - 2003, - 39, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _se_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1984, - 14, - 1984, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _r8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _r9_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _r__= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _r$_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _sa_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _sb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _sc_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _sd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _sf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 603, - 10, - 603, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 603, - 10, - 603, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2032, - 14, - 2032, - 42, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _r0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 823, - 14, - 823, - 36, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _rS_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _rT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _rU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _rV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _rW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _rX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _rY_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _rZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _r1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 602, - 10, - 602, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 602, - 10, - 602, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 287, - 14, - 287, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _rN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 423, - 14, - 423, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1951, - 14, - 1951, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _q5_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _q6_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _q7_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _q8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _q9_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _q__= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _q$_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _ra_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _rc_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _re_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rf_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _rg_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rh_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _ri_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _rk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rl_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _rm_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rn_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _ro_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rp_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _rq_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rr_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _rs_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rt_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _ru_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _rw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rx_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _ry_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rz_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _rA_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rB_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _rC_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _rD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _rE_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _rG_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _rI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 601, - 10, - 601, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 601, - 10, - 601, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 280, - 14, - 280, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _q0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 416, - 14, - 416, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1936, - 14, - 1936, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _qM_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _qN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _qO_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _qP_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _qQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _qR_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _qS_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _qT_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _qV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 600, - 10, - 600, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 600, - 10, - 600, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 256, - 14, - 256, - 28, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _qH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 11, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 390, - 14, - 390, - 28, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 11, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 296, - 14, - 296, - 36, - [0, - caml_string_of_jsbytes("Article 13"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 589, - 10, - 589, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 177, - 14, - 177, - 36, - [0, - caml_string_of_jsbytes("Article 13"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _qz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 589, - 10, - 589, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1926, - 5, - 1926, - 50, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _qu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 599, - 10, - 599, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qs_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1914, - 14, - 1914, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _qv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 599, - 10, - 599, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 599, - 10, - 599, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1880, - 14, - 1880, - 28, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _qk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 247, - 14, - 247, - 42, - [0, - caml_string_of_jsbytes("Article 10"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 253, - 14, - 253, - 41, - [0, - caml_string_of_jsbytes("Article 10"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 577, - 29, - 577, - 64, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p__= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 394, - 29, - 394, - 64, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _p$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 224, - 29, - 224, - 64, - [0, - caml_string_of_jsbytes("Article 9"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 163, - 29, - 163, - 64, - [0, - caml_string_of_jsbytes("Article 9"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _p6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 534, - 5, - 535, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 543, - 5, - 544, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 552, - 5, - 552, - 35, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 350, - 5, - 351, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 359, - 5, - 360, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 368, - 5, - 368, - 35, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 189, - 5, - 189, - 61, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 128, - 5, - 128, - 61, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 182, - 14, - 182, - 37, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 121, - 14, - 121, - 37, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 97, - 5, - 98, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 107, - 5, - 108, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _px_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 117, - 5, - 117, - 35, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _py_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 37, - 5, - 38, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 47, - 5, - 48, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 57, - 5, - 57, - 35, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _ps_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 280, - 14, - 280, - 42, - [0, - caml_string_of_jsbytes("Article 12"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pi_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 440, - 14, - 440, - 29, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 578, - 11, - 578, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 305, - 14, - 305, - 29, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _ph_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 578, - 11, - 578, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 474, - 14, - 474, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 584, - 11, - 584, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 576, - 14, - 576, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er janvier 2020 au 1er janvier 2022"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _pa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 584, - 11, - 584, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 222, - 14, - 222, - 40, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 1er octobre 2021"), - [0, - caml_string_of_jsbytes - ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"), - 0]]]]], - _o6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 590, - 10, - 590, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 357, - 14, - 357, - 40, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _o7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 590, - 10, - 590, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 606, - 14, - 606, - 50, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 268, - 14, - 268, - 41, - [0, - caml_string_of_jsbytes("Article 11"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _oQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1975, - 14, - 1975, - 29, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _oR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 579, - 11, - 579, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 579, - 11, - 579, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oS_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("fraction_l832_3"),0]], - _oV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 582, - 11, - 582, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 582, - 11, - 582, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _oW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d823_16"),0]], - _oZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 593, - 3, - 593, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o0_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _oX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 544, - 10, - 544, - 23, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _o1_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _o2_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _o8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 590, - 10, - 590, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 590, - 10, - 590, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o9_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_composition_familiale"),0]], - _pd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 584, - 11, - 584, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _o__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 584, - 11, - 584, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pe_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("abattement_forfaitaire_d823_17"),0]], - _pk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 578, - 11, - 578, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 578, - 11, - 578, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pl_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("loyer_r\xc3\xa9f\xc3\xa9rence"),0]], - _po_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 583, - 11, - 583, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 583, - 11, - 583, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pp_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d823_16"),0]], - _p2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 588, - 10, - 588, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("plafond_loyer_d823_16_2"),0]], - _qd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 587, - 10, - 587, - 45, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qe_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"),0]], - _qh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 581, - 11, - 581, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 581, - 11, - 581, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qi_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("plafond_suppression_d823_16"),0]], - _ql_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 580, - 11, - 580, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 580, - 11, - 580, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qm_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"), - 0]], - _qp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 573, - 11, - 573, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 573, - 11, - 573, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qq_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("loyer_\xc3\xa9ligible"),0]], - _qw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _qC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 589, - 10, - 589, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 589, - 10, - 589, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("participation_minimale"),0]], - _qJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 11, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 11, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qK_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("rapport_loyers"),0]], - _qW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _q2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_formule"),0]], - _rJ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _rP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_arrondi"),0]], - _r2_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _r5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 585, - 11, - 585, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 585, - 11, - 585, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r6_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_prise_compte_ressources"),0]], - _sg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _sj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 591, - 10, - 591, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 591, - 10, - 591, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("participation_personnelle"),0]], - _sn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 596, - 10, - 596, - 29, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 596, - 10, - 596, - 29, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _so_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _sp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1929, - 13, - 1929, - 76, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ss_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1929, - 13, - 1929, - 76, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 833, - 13, - 833, - 63, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _sr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 833, - 13, - 833, - 63, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _oD_=[6,0], - _oF_=[0,0], - _oG_=[1,0], - _oH_=[2,0], - _oI_=[3,0], - _oJ_=[4,0], - _oK_=[5,0], - _oL_=[7,0], - _oE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 29, - 5, - 38, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oA_=[8,0], - _oB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 47, - 5, - 49, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oq_=[6,0], - _os_=[0,0], - _ot_=[1,0], - _ou_=[2,0], - _ov_=[3,0], - _ow_=[4,0], - _ox_=[5,0], - _oy_=[7,0], - _or_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 68, - 5, - 77, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _on_=[8,0], - _oo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 86, - 5, - 88, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _op_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _od_=[6,0], - _of_=[0,0], - _og_=[1,0], - _oh_=[2,0], - _oi_=[3,0], - _oj_=[4,0], - _ok_=[5,0], - _ol_=[7,0], - _oe_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 107, - 5, - 116, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _om_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oa_=[8,0], - _ob_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 125, - 5, - 127, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _n2_=[6,0], - _n4_=[0,0], - _n5_=[1,0], - _n6_=[2,0], - _n7_=[3,0], - _n8_=[4,0], - _n9_=[5,0], - _n__=[7,0], - _n3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 146, - 5, - 155, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _n$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _nZ_=[8,0], - _n0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 165, - 5, - 167, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _n1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _nP_=[6,0], - _nR_=[0,0], - _nS_=[1,0], - _nT_=[2,0], - _nU_=[3,0], - _nV_=[4,0], - _nW_=[5,0], - _nX_=[7,0], - _nQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 186, - 5, - 195, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _nY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _nM_=[8,0], - _nN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 204, - 5, - 206, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _nO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _nL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 10, - 11, - 22, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oO_= - [0, - caml_string_of_jsbytes("Smic"), - [0,caml_string_of_jsbytes("brut_horaire"),0]], - _nH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 28, - 5, - 29, - 34, - [0, - caml_string_of_jsbytes - ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _nI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 48, - 5, - 49, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _nG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 64, - 5, - 65, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _nE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 82, - 5, - 83, - 34, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _nC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 10, - 6, - 17, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _nK_= - [0, - caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant"),0]], - _nv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2310, - 14, - 2310, - 28, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 10, - 1053, - 24, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2247, - 14, - 2247, - 28, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 10, - 1053, - 24, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _no_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2268, - 20, - 2268, - 51, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _np_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2252, - 20, - 2252, - 55, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2362, - 7, - 2362, - 51, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2334, - 7, - 2334, - 42, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ne_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2291, - 14, - 2291, - 36, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1051, - 11, - 1051, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2387, - 14, - 2387, - 36, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1051, - 11, - 1051, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2378, - 14, - 2378, - 36, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _m9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1050, - 11, - 1050, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2282, - 14, - 2282, - 36, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _m__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1050, - 11, - 1050, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2410, - 14, - 2410, - 36, - [0, - caml_string_of_jsbytes("Article R824-3"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _mY_=[0,0], - _mZ_=[1,0], - _m0_=[1,0], - _m1_=[0,0], - _m2_=[0,0], - _m4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1049, - 11, - 1049, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1049, - 11, - 1049, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m5_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("mode_occupation_impay\xc3\xa9"),0]], - _m$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1050, - 11, - 1050, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1050, - 11, - 1050, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _na_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_brute"),0]], - _ng_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1051, - 11, - 1051, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1051, - 11, - 1051, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nh_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_nette"),0]], - _nr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ni_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1048, - 11, - 1048, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ns_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0, - caml_string_of_jsbytes - ("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"), - 0]], - _ny_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 10, - 1053, - 24, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 10, - 1053, - 24, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nz_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("montant_impay\xc3\xa9"),0]], - _mT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 119, - 5, - 119, - 43, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 256, - 5, - 256, - 42, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 266, - 5, - 267, - 43, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 276, - 5, - 276, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 285, - 5, - 285, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 294, - 5, - 294, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _mK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1033, - 10, - 1033, - 29, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mW_= - [0, - caml_string_of_jsbytes("OuvertureDroitsRetraite"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"),0]], - _mF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3331, - 14, - 3331, - 36, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _mG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 10, - 684, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 10, - 684, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mH_= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], - _mA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4072, - 5, - 4072, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 629, - 10, - 629, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3985, - 14, - 3985, - 36, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 629, - 10, - 629, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _my_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 629, - 10, - 629, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mD_= - [0, - caml_string_of_jsbytes("CalculNombrePartLogementFoyer"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], - _mu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4158, - 5, - 4158, - 26, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 622, - 10, - 622, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4120, - 14, - 4120, - 21, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4107, - 14, - 4107, - 50, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mo_=[1,0], - _mj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2868, - 5, - 2868, - 26, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _mi_=[1,0], - _mk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 617, - 11, - 617, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2829, - 14, - 2829, - 38, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _mg_=[1,0], - _mc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2903, - 14, - 2903, - 41, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _md_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 620, - 11, - 620, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 620, - 11, - 620, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _me_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_26"),0]], - _ml_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 617, - 11, - 617, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 617, - 11, - 617, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mm_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("tranches_revenus_d832_26"),0]], - _mq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 618, - 11, - 618, - 47, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 618, - 11, - 618, - 47, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mr_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0, - caml_string_of_jsbytes("tranches_revenus_d832_26_multipli\xc3\xa9es"), - 0]], - _mw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 622, - 10, - 622, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ms_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 622, - 10, - 622, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mx_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("montant"),0]], - _l9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 100, - 5, - 100, - 35, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _l__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 138, - 39, - 138, - 69, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _l0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 37, - 9, - 37, - 20, - [0, - caml_string_of_jsbytes("Article L136-1-3"), - [0, - caml_string_of_jsbytes - ("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"), - [0, - caml_string_of_jsbytes - ("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _l1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _lZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _lY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l3_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("exon\xc3\xa9r\xc3\xa9_csg"),0]], - _l6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 546, - 11, - 546, - 20, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 546, - 11, - 546, - 20, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _l7_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("taux_crds"),0]], - _l$_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _ma_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 104, - 13, - 104, - 24, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _lX_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_in"), - 0], - _lW_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_out"), - 0], - _lV_=[0,caml_string_of_jsbytes("Smic_in"),0], - _lU_=[0,caml_string_of_jsbytes("Smic_out"),0], - _lT_= - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], - _lS_= - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_out"),0], - _lR_= - [0, - caml_string_of_jsbytes - ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_in"), - 0], - _lQ_= - [0, - caml_string_of_jsbytes - ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_out"), - 0], - _lP_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_in"),0], - _lO_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_out"),0], - _lN_= - [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_in"),0], - _lM_= - [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_out"),0], - _lL_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_in"),0], - _lK_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_out"),0], - _lJ_=[0,caml_string_of_jsbytes("CalculAllocationLogement_in"),0], - _lI_=[0,caml_string_of_jsbytes("CalculAllocationLogement_out"),0], - _lH_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_in"),0], - _lG_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_out"),0], - _lF_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _lE_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_out"), - 0], - _lD_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_in"),0], - _lC_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_out"),0], - _lB_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_in"), - 0], - _lA_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_out"), - 0], - _lz_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _ly_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_out"), - 0], - _lx_= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _lw_= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_out"), - 0], - _lv_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"), - 0], - _lu_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_out"), - 0], - _lt_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_in"),0], - _ls_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_out"),0], - _lr_= - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_in"),0], - _lq_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_out"), - 0], - _lp_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"), - 0], - _lo_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_out"), - 0], - _ln_= - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement_in"), - 0], - _lm_= - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement_out"), - 0], - _ll_= - [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_in"),0], - _lk_= - [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_out"),0], - _lj_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_in"), - 0], - _li_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_out"), - 0], - _lh_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_in"), - 0], - _lg_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_out"), - 0], - _lf_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_in"), - 0], - _le_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_out"), - 0], - _ld_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_in"), - 0], - _lc_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_out"), - 0], - _lb_=[0,caml_string_of_jsbytes("M\xc3\xa9nage"),0], - _la_=[0,caml_string_of_jsbytes("Logement"),0], - _k$_=[0,caml_string_of_jsbytes("ModeOccupation"),0], - _k__=[0,caml_string_of_jsbytes("InformationsCalculAPL"),0], - _k9_=[0,caml_string_of_jsbytes("LogementFoyer"),0], - _k8_=[0,caml_string_of_jsbytes("InformationsCalculAPLLocatif"),0], - _k7_=[0,caml_string_of_jsbytes("Personne\xc3\x80Charge"),0], - _k6_= - [0, - caml_string_of_jsbytes - ("InformationsCalculAPLAccessionPropri\xc3\xa9t\xc3\xa9"), - 0], - _k5_=[0,caml_string_of_jsbytes("Propri\xc3\xa9taire"),0], - _k4_=[0,caml_string_of_jsbytes("Location"),0], - _k3_=[0,caml_string_of_jsbytes("ChangementLogementD842_4"),0], - _k2_=[0,caml_string_of_jsbytes("Demandeur"),0], - _k1_= - [0, - caml_string_of_jsbytes("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"), - 0], - _k0_=[0,caml_string_of_jsbytes("Enfant\xc3\x80Charge"),0], - _kZ_=[0,caml_string_of_jsbytes("EnfantPrestationsFamiliales"),0], - _kY_=[0,caml_string_of_jsbytes("InformationsCalculAPLLogementFoyer"),0], - _kX_= - [0, - caml_string_of_jsbytes - ("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"), - 0], - _kW_=[0,caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),0], - _kV_=[0,caml_string_of_jsbytes("TrancheRevenuD\xc3\xa9cimal"),0], - _kU_=[0,caml_string_of_jsbytes("TrancheRevenu"),0], - _kT_=[0,caml_string_of_jsbytes("NeufOuAncien"),0], - _kS_=[0,caml_string_of_jsbytes("Pr\xc3\xaat"),0], - _kR_=[0,caml_string_of_jsbytes("Bailleur"),0], - _kQ_=[0,caml_string_of_jsbytes("InfosChangementLogementD842_4"),0], - _kP_=[0,caml_string_of_jsbytes("PersonneVivantHabituellementAuFoyer"),0], - _kO_=[0,caml_string_of_jsbytes("Patrimoine"),0], - _kN_=[0,caml_string_of_jsbytes("PersonneSousLocation"),0], - _kM_= - [0, - caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), - 0], - _kL_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], - _kK_=[0,caml_string_of_jsbytes("PriseEnChargeEnfant"),0], - _kJ_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], - _kI_=[0,caml_string_of_jsbytes("SituationFamilialeCalculAPL"),0], - _kH_= - [0, - caml_string_of_jsbytes - ("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"), - 0], - _kG_=[0,caml_string_of_jsbytes("TypeLogementFoyer"),0], - _kF_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], - _kE_=[0,caml_string_of_jsbytes("SituationFamiliale"),0], - _kD_=[0,caml_string_of_jsbytes("TypeAidesPersonnelleLogement"),0], - _kC_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0], - _kB_=[0,caml_string_of_jsbytes("ModeOccupationImpay\xc3\xa9"),0], - _kA_=[0,caml_string_of_jsbytes("D\xc3\xa9penseLogement"),0], - _kz_=[0,caml_string_of_jsbytes("Versement\xc3\x80"),0], - _ky_= - [0,caml_string_of_jsbytes("PaiementLogementDistinctProfessionnel"),0], - _kx_=[0,caml_string_of_jsbytes("Cat\xc3\xa9gorieCalculAPL"),0], - _kw_=[0,caml_string_of_jsbytes("ZoneDHabitation"),0], - _kv_=[0,caml_string_of_jsbytes("Nationalit\xc3\xa9"),0], - _ku_=[0,caml_string_of_jsbytes("DateDeNaissanceOuMoisDeGrossesse"),0], - _kt_=[0,caml_string_of_jsbytes("Parent\xc3\xa9"),0], - _ks_=[0,caml_string_of_jsbytes("SituationGardeAltern\xc3\xa9e"),0], - _kr_=[0,caml_string_of_jsbytes("ParentOuAutre"),0], - _kq_=[0,caml_string_of_jsbytes("TypeContratTravail"),0], - _kp_=[0,caml_string_of_jsbytes("PrestationRe\xc3\xa7ue"),0], - _ko_=[0,caml_string_of_jsbytes("LimiteTrancheD\xc3\xa9cimal"),0], - _kn_=[0,caml_string_of_jsbytes("LimiteTranche"),0], - _km_=[0,caml_string_of_jsbytes("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0], - _kl_=[0,caml_string_of_jsbytes("TypeTravauxLogementR842_5"),0], - _kk_=[0,caml_string_of_jsbytes("TypeTravauxLogementD832_15"),0], - _kj_=[0,caml_string_of_jsbytes("TitulairePr\xc3\xaat"),0], - _ki_=[0,caml_string_of_jsbytes("TypePr\xc3\xaat"),0], - _kh_=[0,caml_string_of_jsbytes("TypeBailleur"),0], - _acX_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ModeOccupation.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")], - _acW_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'InformationsCalculAPL.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'InformationsCalculAPL.t'")], - _acV_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PersonneACharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")], - _acU_=[1,0], - _acT_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ChangementLogementD8424.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")], - _acS_=[0,0], - _acR_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")], - _acQ_=[0,0], - _acP_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")], - _acO_=[0,0], - _acN_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'NeufOuAncien.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")], - _acF_=[0,0], - _acG_=[2,0], - _acH_=[1,0], - _acI_=[5,0], - _acJ_=[6,0], - _acK_=[3,0], - _acL_=[7,0], - _acM_=[4,0], - _acE_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], - _acB_=[1,0], - _acC_=[0,0], - _acD_=[2,0], - _acA_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationObligationScolaire.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], - _acv_=[4,0], - _acw_=[3,0], - _acx_=[0,0], - _acy_=[1,0], - _acz_=[2,0], - _acu_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnChargeEnfant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")], - _acl_=[7,0], - _acm_=[5,0], - _acn_=[4,0], - _aco_=[6,0], - _acp_=[8,0], - _acq_=[2,0], - _acr_=[3,0], - _acs_=[1,0], - _act_=[0,0], - _ack_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'Collectivite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], - _aci_=[0,0], - _acj_=[1,0], - _ach_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")], - _acd_=[2,0], - _ace_=[1,0], - _acf_=[0,0], - _acg_=[3,0], - _acc_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")], - _ab__=[1,0], - _ab$_=[0,0], - _aca_=[2,0], - _acb_=[3,0], - _ab9_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeLogementFoyer.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")], - _ab6_=[2,0], - _ab7_=[1,0], - _ab8_=[0,0], - _ab5_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], - _ab0_=[2,0], - _ab1_=[3,0], - _ab2_=[5,0], - _ab3_=[4,0], - _ab4_=[0,0], - _abZ_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationFamiliale.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")], - _abW_=[2,0], - _abX_=[1,0], - _abY_=[0,0], - _abV_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")], - _abS_=[0,0], - _abT_=[2,0], - _abU_=[1,0], - _abR_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'EligibiliteAllocationLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'EligibiliteAllocationLogement.t'")], - _abP_=[1,0], - _abQ_=[0,0], - _abO_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ModeOccupationImpaye.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ModeOccupationImpaye.t'")], - _abN_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DepenseLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")], - _abK_=[2,0], - _abL_=[1,0], - _abM_=[0,0], - _abJ_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'VersementA.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'VersementA.t'")], - _abI_=[1,0], - _abH_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")], - _abE_=[2,0], - _abF_=[0,0], - _abG_=[1,0], - _abD_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'CategorieCalculAPL.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'CategorieCalculAPL.t'")], - _abA_=[2,0], - _abB_=[1,0], - _abC_=[0,0], - _abz_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ZoneDHabitation.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")], - _abx_=[0,0], - _aby_=[1,0], - _abw_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'Nationalite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Nationalite.t'")], - _abu_=[1,0], - _abv_=[2,0], - _abt_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")], - _abq_=[1,0], - _abr_=[2,0], - _abs_=[0,0], - _abp_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'Parente.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Parente.t'")], - _abo_=[0,0], - _abn_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationGardeAlternee.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")], - _abm_=[1,0], - _abl_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ParentOuAutre.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")], - _abj_=[0,0], - _abk_=[1,0], - _abi_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeContratTravail.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeContratTravail.t'")], - _abc_=[1,0], - _abd_=[0,0], - _abe_=[3,0], - _abf_=[4,0], - _abg_=[2,0], - _abh_=[5,0], - _abb_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PrestationRecue.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")], - _aba_=[1,0], - _aa$_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LimiteTrancheDecimal.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LimiteTrancheDecimal.t'")], - _aa__=[1,0], - _aa9_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LimiteTranche.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LimiteTranche.t'")], - _aa7_=[0,0], - _aa8_=[1,0], - _aa6_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'AmelioreParOccupant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")], - _aa2_=[1,0], - _aa3_=[3,0], - _aa4_=[0,0], - _aa5_=[2,0], - _aa1_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeTravauxLogementR8425.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")], - _aaY_=[1,0], - _aaZ_=[0,0], - _aa0_=[2,0], - _aaX_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeTravauxLogementD83215.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")], - _aaV_=[1,0], - _aaW_=[0,0], - _aaU_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TitulairePret.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")], - _aaP_=[3,0], - _aaQ_=[1,0], - _aaR_=[2,0], - _aaS_=[0,0], - _aaT_=[4,0], - _aaO_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'TypePret.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypePret.t'")], - _aaM_=[0,0], - _aaN_=[1,0], - _aaL_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeBailleur.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")]; - function embed_prise_en_charge(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _b89_= - [0, - cst_GardeAltern_ePartageAlloca, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _b89_= - [0, - cst_GardeAltern_eAllocataireUn, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _b89_= - [0, - cst_EffectiveEtPermanente, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _b89_= - [0, - cst_ServicesSociauxAllocationV, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _b89_= - [0, - cst_ServicesSociauxAllocationV$0, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_a_,_b89_]} - var SituationObligationScolaire=[0]; - function embed_situation_obligation_sco(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _b88_=[0,cst_Avant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _b88_=[0,cst_Pendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _b88_=[0,cst_Apr_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_b_,_b88_]} - var PriseEnCompte=[0]; - function embed_prise_en_compte(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _b87_=[0,cst_Compl_te,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _b87_=[0,cst_Partag_e,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _b87_=[0,cst_Z_ro,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_c_,_b87_]} - var VersementAllocations=[0]; - function embed_versement_allocations(x) - {if(0 === x[0]) - var - x$0=x[1], - _b86_=[0,cst_Normal,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _b86_= - [0, - cst_AllocationVers_eAuxService, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_d_,_b86_]} - var ElementPrestationsFamiliales=[0]; - function embed_element_prestations_fami(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _b85_= - [0, - cst_PrestationAccueilJeuneEnfa, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _b85_= - [0, - cst_AllocationsFamiliales, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _b85_= - [0, - cst_Compl_mentFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _b85_= - [0, - cst_AllocationLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _b85_= - [0, - cst_Allocation_ducationEnfantH, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _b85_= - [0, - cst_AllocationSoutienFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _b85_= - [0, - cst_AllocationRentr_eScolaire, - caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - default: - var - x$7=x[1], - _b85_= - [0, - cst_AllocationJournali_rePrese, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]} - return [6,_e_,_b85_]} - var Collectivite=[0]; - function embed_collectivite(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _b84_=[0,cst_Guadeloupe,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _b84_=[0,cst_Guyane,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _b84_=[0,cst_Martinique,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _b84_=[0,cst_LaR_union,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _b84_= - [0,cst_SaintBarth_lemy,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _b84_=[0,cst_SaintMartin,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _b84_=[0,cst_M_tropole,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - case 7: - var - x$7=x[1], - _b84_= - [0, - cst_SaintPierreEtMiquelon, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]; - break; - default: - var - x$8=x[1], - _b84_=[0,cst_Mayotte,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} - return [6,_f_,_b84_]} - var EnfantEntree=[0]; - function embed_enfant_entree(x) - {var - _b8Z_= - [0, - [0, - cst_d_b_n_ficie_titre_personne, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - 0], - _b80_= - [0, - [0, - cst_d_a_d_j_ouvert_droit_aux_a, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _b8Z_], - _b81_=[0,[0,cst_d_prise_en_charge,embed_prise_en_charge(x[4])],_b80_], - _b82_= - [0, - [0, - cst_d_date_de_naissance, - caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _b81_], - _b83_= - [0, - [0, - cst_d_r_muneration_mensuelle, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _b82_]; - return [7, - _g_, - [0, - [0, - cst_d_identifiant, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _b83_]]} - var Enfant=[0]; - function embed_enfant(x) - {var - _b8S_= - [0, - [0, - cst_b_n_ficie_titre_personnel_, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - 0], - _b8T_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _b8S_], - _b8U_=[0,[0,cst_prise_en_charge,embed_prise_en_charge(x[6])],_b8T_], - _b8V_=[0,[0,cst_ge,caml_call1(Runtime_ocaml_Runtime[14],x[5])],_b8U_], - _b8W_= - [0, - [0,cst_date_de_naissance,caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _b8V_], - _b8X_= - [0, - [0, - cst_r_muneration_mensuelle, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _b8W_], - _b8Y_= - [0, - [0,cst_obligation_scolaire,embed_situation_obligation_sco(x[2])], - _b8X_]; - return [7, - _h_, - [0, - [0,cst_identifiant,caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _b8Y_]]} - var PrestationsFamilialesOut=[0]; - function embed_prestations_familiales_o(x) - {var - _b8P_= - [0, - [0, - cst_r_gime_outre_mer_l751_1_ou, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _b8Q_= - [0, - [0,cst_ge_l512_3_2_out,caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _b8P_], - _b8R_= - [0, - [0, - cst_conditions_hors_ge_out, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - _b8Q_]; - return [7, - _i_, - [0, - [0, - cst_droit_ouvert_out, - caml_call1(Runtime_ocaml_Runtime[10],x[1])], - _b8R_]]} - var PrestationsFamilialesIn=[0]; - function embed_prestations_familiales_i(x) - {var - _b8N_=[0,[0,cst_r_sidence_in,embed_collectivite(x[3])],0], - _b8O_= - [0, - [0,cst_prestation_courante_in,embed_element_prestations_fami(x[2])], - _b8N_]; - return [7, - _j_, - [0, - [0, - cst_date_courante_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _b8O_]]} - var AllocationFamilialesAvril2008O=[0]; - function embed_allocation_familiales_av(x) - {return [7, - _k_, - [0, - [0, - cst_ge_minimum_alin_a_1_l521_3, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - 0]]} - var AllocationFamilialesAvril2008I=[0]; - function embed_allocation_familiales_av$0(param){return 0} - var EnfantLePlusAgeOut=[0]; - function embed_enfant_le_plus_age_out(x) - {return [7,_l_,[0,[0,cst_le_plus_g_out,embed_enfant(x[1])],0]]} - var EnfantLePlusAgeIn=[0]; - function embed_enfant_le_plus_age_in(x) - {return [7, - _m_, - [0, - [0, - cst_enfants_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[1])], - 0]]} - var AllocationsFamilialesOut=[0]; - function embed_allocations_familiales_o(x) - {return [7, - _n_, - [0, - [0, - cst_montant_vers_out, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var AllocationsFamilialesIn=[0]; - function embed_allocations_familiales_i(x) - {var - _b8H_= - [0, - [0, - cst_avait_enfant_charge_avant_, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _b8I_= - [0, - [0, - cst_enfants_charge_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[6])], - _b8H_], - _b8J_= - [0, - [0,cst_date_courante_in$0,caml_call1(Runtime_ocaml_Runtime[16],x[5])], - _b8I_], - _b8K_=[0,[0,cst_r_sidence_in$0,embed_collectivite(x[4])],_b8J_], - _b8L_= - [0, - [0, - cst_ressources_m_nage_in, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _b8K_], - _b8M_= - [0, - [0, - cst_personne_charge_effective_, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _b8L_]; - return [7, - _o_, - [0, - [0, - cst_personne_charge_effective_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _b8M_]]} - var SmicOut=[0]; - function embed_smic_out(x) - {return [7, - _p_, - [0, - [0, - cst_brut_horaire_out, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var SmicIn=[0]; - function embed_smic_in(x) - {var _b8G_=[0,[0,cst_r_sidence_in$1,embed_collectivite(x[2])],0]; - return [7, - _q_, - [0, - [0, - cst_date_courante_in$1, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _b8G_]]} - var BaseMensuelleAllocationsFamili=[0]; - function embed_base_mensuelle_allocatio(x) - {return [7, - _r_, - [0, - [0,cst_montant_out,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var BaseMensuelleAllocationsFamili$0=[0]; - function embed_base_mensuelle_allocatio$0(x) - {return [7, - _s_, - [0, - [0, - cst_date_courante_in$2, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var InterfaceAllocationsFamiliales=[0]; - function embed_interface_allocations_fa(x) - {return [7, - _t_, - [0, - [0, - cst_i_montant_vers_out, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var InterfaceAllocationsFamiliales$0=[0]; - function embed_interface_allocations_fa$0(x) - {var - _b8A_= - [0, - [0, - cst_i_avait_enfant_charge_avan, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _b8B_= - [0, - [0, - cst_i_personne_charge_effectiv, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _b8A_], - _b8C_= - [0, - [0, - cst_i_personne_charge_effectiv$0, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _b8B_], - _b8D_=[0,[0,cst_i_r_sidence_in,embed_collectivite(x[4])],_b8C_], - _b8E_= - [0, - [0, - cst_i_ressources_m_nage_in, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _b8D_], - _b8F_= - [0, - [0, - cst_i_enfants_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant_entree,x[2])], - _b8E_]; - return [7, - _u_, - [0, - [0, - cst_i_date_courante_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _b8F_]]} - function allocation_familiales_avril200(allocation_familiales_avril200) - {try - {var - _b8w_= - function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_16)}, - _b8x_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_w_,1)}, - _b8y_=caml_call4(Runtime_ocaml_Runtime[62],_x_,[0],_b8x_,_b8w_)} - catch(_b8z_) - {_b8z_ = caml_wrap_exception(_b8z_); - if(_b8z_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v_]; - throw _b8z_} - var - age_minimum_alinea_1_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_y_,Runtime_ocaml_Runtime[14],_b8y_); - return [0,age_minimum_alinea_1_l521_3]} - function enfant_le_plus_age(enfant_le_plus_age_in) - {var enfants=enfant_le_plus_age_in[1]; - try - {var - _b8n_= - function(param) - {var - _b8r_=caml_call1(Runtime_ocaml_Runtime[46],cst_0), - _b8s_=caml_call3(Runtime_ocaml_Runtime[56],1900,1,1), - _b8t_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$0), - _b8u_= - [0, - caml_call1(Runtime_ocaml_Runtime[46],cst_1), - _B_, - _b8t_, - _b8s_, - _b8r_, - _A_, - 0, - 0]; - function _b8v_(acc,item) - {return caml_call2(Runtime_ocaml_Runtime[83],acc[5],item[5]) - ?acc - :item} - return caml_call3(Stdlib_Array[17],_b8v_,_b8u_,enfants)}, - _b8o_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C_,1)}, - _b8p_=caml_call4(Runtime_ocaml_Runtime[62],_D_,[0],_b8o_,_b8n_)} - catch(_b8q_) - {_b8q_ = caml_wrap_exception(_b8q_); - if(_b8q_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z_]; - throw _b8q_} - var - le_plus_age= - caml_call3(Runtime_ocaml_Runtime[28],_E_,embed_enfant,_b8p_); - return [0,le_plus_age]} - function smic(smic_in) - {var date_courante=smic_in[1],residence=smic_in[2]; - try - {var - _b6w_=function(param){throw Runtime_ocaml_Runtime[2]}, - _b6x_=function(param){return 0}, - _b6y_= - function(param) - {function _b8g_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_819)} - function _b8h_(param) - {var - _b8i_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1), - _b8j_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b8i_); - if(_b8j_) - var - _b8k_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31), - _b8l_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b8k_), - _b8m_=_b8l_?caml_equal(residence,_G_):_b8l_; - else - var _b8m_=_b8j_; - return caml_call2(Runtime_ocaml_Runtime[29],_H_,_b8m_)} - return caml_call4(Runtime_ocaml_Runtime[62],_I_,[0],_b8h_,_b8g_)}, - _b6z_= - function(param) - {function _b74_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085)} - function _b75_(param) - {var - _b76_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1), - _b77_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b76_); - if(_b77_) - {var - _b78_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31), - _b79_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b78_); - if(_b79_) - {var _b7__=caml_equal(residence,_J_); - if(_b7__) - var _b7$_=_b7__; - else - {var _b8a_=caml_equal(residence,_L_); - if(_b8a_) - var _b7$_=_b8a_; - else - {var _b8b_=caml_equal(residence,_M_); - if(_b8b_) - var _b7$_=_b8b_; - else - {var _b8c_=caml_equal(residence,_N_); - if(_b8c_) - var _b7$_=_b8c_; - else - {var _b8d_=caml_equal(residence,_O_); - if(_b8d_) - var _b7$_=_b8d_; - else - {var _b8e_=caml_equal(residence,_P_); - if(_b8e_) - var _b7$_=_b8e_; - else - var - _b8f_=caml_equal(residence,_Q_), - _b7$_=_b8f_ || caml_equal(residence,_R_)}}}}}} - else - var _b7$_=_b79_} - else - var _b7$_=_b77_; - return caml_call2(Runtime_ocaml_Runtime[29],_K_,_b7$_)} - return caml_call4(Runtime_ocaml_Runtime[62],_S_,[0],_b75_,_b74_)}, - _b6A_= - function(param) - {function _b7X_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_798)} - function _b7Y_(param) - {var - _b7Z_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _b70_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7Z_); - if(_b70_) - var - _b71_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30), - _b72_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b71_), - _b73_=_b72_?caml_equal(residence,_T_):_b72_; - else - var _b73_=_b70_; - return caml_call2(Runtime_ocaml_Runtime[29],_U_,_b73_)} - return caml_call4(Runtime_ocaml_Runtime[62],_V_,[0],_b7Y_,_b7X_)}, - _b6B_= - function(param) - {function _b7J_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057)} - function _b7K_(param) - {var - _b7L_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _b7M_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7L_); - if(_b7M_) - {var - _b7N_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30), - _b7O_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7N_); - if(_b7O_) - {var _b7P_=caml_equal(residence,_W_); - if(_b7P_) - var _b7Q_=_b7P_; - else - {var _b7R_=caml_equal(residence,_Y_); - if(_b7R_) - var _b7Q_=_b7R_; - else - {var _b7S_=caml_equal(residence,_Z_); - if(_b7S_) - var _b7Q_=_b7S_; - else - {var _b7T_=caml_equal(residence,___); - if(_b7T_) - var _b7Q_=_b7T_; - else - {var _b7U_=caml_equal(residence,_$_); - if(_b7U_) - var _b7Q_=_b7U_; - else - {var _b7V_=caml_equal(residence,_aa_); - if(_b7V_) - var _b7Q_=_b7V_; - else - var - _b7W_=caml_equal(residence,_ab_), - _b7Q_=_b7W_ || caml_equal(residence,_ac_)}}}}}} - else - var _b7Q_=_b7O_} - else - var _b7Q_=_b7M_; - return caml_call2(Runtime_ocaml_Runtime[29],_X_,_b7Q_)} - return caml_call4(Runtime_ocaml_Runtime[62],_ad_,[0],_b7K_,_b7J_)}, - _b6C_= - function(param) - {function _b7C_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_774)} - function _b7D_(param) - {var - _b7E_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _b7F_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7E_); - if(_b7F_) - var - _b7G_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _b7H_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7G_), - _b7I_=_b7H_?caml_equal(residence,_ae_):_b7H_; - else - var _b7I_=_b7F_; - return caml_call2(Runtime_ocaml_Runtime[29],_af_,_b7I_)} - return caml_call4(Runtime_ocaml_Runtime[62],_ag_,[0],_b7D_,_b7C_)}, - _b6D_= - function(param) - {function _b7o_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025)} - function _b7p_(param) - {var - _b7q_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _b7r_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7q_); - if(_b7r_) - {var - _b7s_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _b7t_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7s_); - if(_b7t_) - {var _b7u_=caml_equal(residence,_ah_); - if(_b7u_) - var _b7v_=_b7u_; - else - {var _b7w_=caml_equal(residence,_aj_); - if(_b7w_) - var _b7v_=_b7w_; - else - {var _b7x_=caml_equal(residence,_ak_); - if(_b7x_) - var _b7v_=_b7x_; - else - {var _b7y_=caml_equal(residence,_al_); - if(_b7y_) - var _b7v_=_b7y_; - else - {var _b7z_=caml_equal(residence,_am_); - if(_b7z_) - var _b7v_=_b7z_; - else - {var _b7A_=caml_equal(residence,_an_); - if(_b7A_) - var _b7v_=_b7A_; - else - var - _b7B_=caml_equal(residence,_ao_), - _b7v_=_b7B_ || caml_equal(residence,_ap_)}}}}}} - else - var _b7v_=_b7t_} - else - var _b7v_=_b7r_; - return caml_call2(Runtime_ocaml_Runtime[29],_ai_,_b7v_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aq_,[0],_b7p_,_b7o_)}, - _b6E_= - function(param) - {function _b7h_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_766)} - function _b7i_(param) - {var - _b7j_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _b7k_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7j_); - if(_b7k_) - var - _b7l_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _b7m_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7l_), - _b7n_=_b7m_?caml_equal(residence,_ar_):_b7m_; - else - var _b7n_=_b7k_; - return caml_call2(Runtime_ocaml_Runtime[29],_as_,_b7n_)} - return caml_call4(Runtime_ocaml_Runtime[62],_at_,[0],_b7i_,_b7h_)}, - _b6F_= - function(param) - {function _b65_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015)} - function _b66_(param) - {var - _b67_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _b68_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b67_); - if(_b68_) - {var - _b69_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _b6__= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b69_); - if(_b6__) - {var _b6$_=caml_equal(residence,_au_); - if(_b6$_) - var _b7a_=_b6$_; - else - {var _b7b_=caml_equal(residence,_aw_); - if(_b7b_) - var _b7a_=_b7b_; - else - {var _b7c_=caml_equal(residence,_ax_); - if(_b7c_) - var _b7a_=_b7c_; - else - {var _b7d_=caml_equal(residence,_ay_); - if(_b7d_) - var _b7a_=_b7d_; - else - {var _b7e_=caml_equal(residence,_az_); - if(_b7e_) - var _b7a_=_b7e_; - else - {var _b7f_=caml_equal(residence,_aA_); - if(_b7f_) - var _b7a_=_b7f_; - else - var - _b7g_=caml_equal(residence,_aB_), - _b7a_=_b7g_ || caml_equal(residence,_aC_)}}}}}} - else - var _b7a_=_b6__} - else - var _b7a_=_b68_; - return caml_call2(Runtime_ocaml_Runtime[29],_av_,_b7a_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aD_,[0],_b66_,_b65_)}, - _b6G_= - function(param) - {function _b6Y_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_757)} - function _b6Z_(param) - {var - _b60_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _b61_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b60_); - if(_b61_) - var - _b62_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _b63_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b62_), - _b64_=_b63_?caml_equal(residence,_aE_):_b63_; - else - var _b64_=_b61_; - return caml_call2(Runtime_ocaml_Runtime[29],_aF_,_b64_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aG_,[0],_b6Z_,_b6Y_)}, - _b6H_= - [0, - function(param) - {function _b6K_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003)} - function _b6L_(param) - {var - _b6M_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _b6N_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6M_); - if(_b6N_) - {var - _b6O_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _b6P_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b6O_); - if(_b6P_) - {var _b6Q_=caml_equal(residence,_aH_); - if(_b6Q_) - var _b6R_=_b6Q_; - else - {var _b6S_=caml_equal(residence,_aJ_); - if(_b6S_) - var _b6R_=_b6S_; - else - {var _b6T_=caml_equal(residence,_aK_); - if(_b6T_) - var _b6R_=_b6T_; - else - {var _b6U_=caml_equal(residence,_aL_); - if(_b6U_) - var _b6R_=_b6U_; - else - {var _b6V_=caml_equal(residence,_aM_); - if(_b6V_) - var _b6R_=_b6V_; - else - {var _b6W_=caml_equal(residence,_aN_); - if(_b6W_) - var _b6R_=_b6W_; - else - var - _b6X_=caml_equal(residence,_aO_), - _b6R_=_b6X_ || caml_equal(residence,_aP_)}}}}}} - else - var _b6R_=_b6P_} - else - var _b6R_=_b6N_; - return caml_call2(Runtime_ocaml_Runtime[29],_aI_,_b6R_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aQ_,[0],_b6L_,_b6K_)}, - _b6G_, - _b6F_, - _b6E_, - _b6D_, - _b6C_, - _b6B_, - _b6A_, - _b6z_, - _b6y_], - _b6I_=caml_call4(Runtime_ocaml_Runtime[62],_aR_,_b6H_,_b6x_,_b6w_)} - catch(_b6J_) - {_b6J_ = caml_wrap_exception(_b6J_); - if(_b6J_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F_]; - throw _b6J_} - var - brut_horaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_aS_,Runtime_ocaml_Runtime[13],_b6I_); - return [0,brut_horaire]} - function base_mensuelle_allocations_fam(base_mensuelle_allocations_fam) - {var date_courante=base_mensuelle_allocations_fam[1]; - try - {var - _b52_=function(param){throw Runtime_ocaml_Runtime[2]}, - _b53_=function(param){return 0}, - _b54_= - function(param) - {function _b6q_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228)} - function _b6r_(param) - {var - _b6s_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1), - _b6t_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6s_); - if(_b6t_) - var - _b6u_=caml_call3(Runtime_ocaml_Runtime[56],2023,4,1), - _b6v_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6u_); - else - var _b6v_=_b6t_; - return caml_call2(Runtime_ocaml_Runtime[29],_aU_,_b6v_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aV_,[0],_b6r_,_b6q_)}, - _b55_= - function(param) - {function _b6k_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481)} - function _b6l_(param) - {var - _b6m_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1), - _b6n_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6m_); - if(_b6n_) - var - _b6o_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1), - _b6p_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6o_); - else - var _b6p_=_b6n_; - return caml_call2(Runtime_ocaml_Runtime[29],_aW_,_b6p_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aX_,[0],_b6l_,_b6k_)}, - _b56_= - function(param) - {function _b6e_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440)} - function _b6f_(param) - {var - _b6g_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1), - _b6h_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6g_); - if(_b6h_) - var - _b6i_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1), - _b6j_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6i_); - else - var _b6j_=_b6h_; - return caml_call2(Runtime_ocaml_Runtime[29],_aY_,_b6j_)} - return caml_call4(Runtime_ocaml_Runtime[62],_aZ_,[0],_b6f_,_b6e_)}, - _b57_= - [0, - function(param) - {function _b5__(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316)} - function _b5$_(param) - {var - _b6a_=caml_call3(Runtime_ocaml_Runtime[56],2019,4,1), - _b6b_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6a_); - if(_b6b_) - var - _b6c_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1), - _b6d_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6c_); - else - var _b6d_=_b6b_; - return caml_call2(Runtime_ocaml_Runtime[29],_a0_,_b6d_)} - return caml_call4(Runtime_ocaml_Runtime[62],_a1_,[0],_b5$_,_b5__)}, - _b56_, - _b55_, - _b54_], - _b58_=caml_call4(Runtime_ocaml_Runtime[62],_a2_,_b57_,_b53_,_b52_)} - catch(_b59_) - {_b59_ = caml_wrap_exception(_b59_); - if(_b59_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aT_]; - throw _b59_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_a3_,Runtime_ocaml_Runtime[13],_b58_); - return [0,montant]} - function prestations_familiales(prestations_familiales_in) - {var - date_courante=prestations_familiales_in[1], - residence=prestations_familiales_in[3]; - try - {var - _b4P_= - function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_20)}, - _b4Q_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_a5_,1)}, - _b4R_=caml_call4(Runtime_ocaml_Runtime[62],_a6_,[0],_b4Q_,_b4P_)} - catch(_b51_) - {_b51_ = caml_wrap_exception(_b51_); - if(_b51_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_a4_]; - throw _b51_} - var - age_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_a7_,Runtime_ocaml_Runtime[14],_b4R_); - try - {var - _b4S_=function(param){return date_courante}, - _b4T_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_a9_,1)}, - _b4U_=caml_call4(Runtime_ocaml_Runtime[62],_a__,[0],_b4T_,_b4S_), - smic_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_a$_,Runtime_ocaml_Runtime[16],_b4U_)} - catch(_b50_) - {_b50_ = caml_wrap_exception(_b50_); - if(_b50_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_a8_]; - throw _b50_} - try - {var - _b4V_=function(param){return residence}, - _b4W_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bb_,1)}, - _b4X_=caml_call4(Runtime_ocaml_Runtime[62],_bc_,[0],_b4W_,_b4V_), - smic_dot_residence= - caml_call3(Runtime_ocaml_Runtime[28],_bd_,embed_collectivite,_b4X_)} - catch(_b5Z_) - {_b5Z_ = caml_wrap_exception(_b5Z_); - if(_b5Z_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ba_]; - throw _b5Z_} - var - _b4Y_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_be_,smic), - [0,smic_dot_date_courante,smic_dot_residence]), - result=caml_call2(Runtime_ocaml_Runtime[27],_bf_,_b4Y_), - smic_dot_brut_horaire=result[1]; - try - {var - _b4Z_=function(param){return 0}, - _b40_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bh_,1)}, - _b41_= - [0, - function(param) - {function _b5R_(param){return 1} - function _b5S_(param) - {var _b5T_=caml_equal(residence,_bi_); - if(_b5T_) - var _b5U_=_b5T_; - else - {var _b5V_=caml_equal(residence,_bk_); - if(_b5V_) - var _b5U_=_b5V_; - else - {var _b5W_=caml_equal(residence,_bl_); - if(_b5W_) - var _b5U_=_b5W_; - else - {var _b5X_=caml_equal(residence,_bm_); - if(_b5X_) - var _b5U_=_b5X_; - else - var - _b5Y_=caml_equal(residence,_bn_), - _b5U_=_b5Y_ || caml_equal(residence,_bo_)}}} - return caml_call2(Runtime_ocaml_Runtime[29],_bj_,_b5U_)} - return caml_call4(Runtime_ocaml_Runtime[62],_bp_,[0],_b5S_,_b5R_)}], - _b42_=caml_call4(Runtime_ocaml_Runtime[62],_bq_,_b41_,_b40_,_b4Z_)} - catch(_b5Q_) - {_b5Q_ = caml_wrap_exception(_b5Q_); - if(_b5Q_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bg_]; - throw _b5Q_} - var - regime_outre_mer_l751_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_br_,Runtime_ocaml_Runtime[12],_b42_); - try - {var - _b43_= - function(param) - {var - _b5N_=caml_call1(Runtime_ocaml_Runtime[39],cst_169), - _b5O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55), - _b5P_= - caml_call2 - (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_b5O_); - return caml_call2(Runtime_ocaml_Runtime[65],_b5P_,_b5N_)}, - _b44_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bt_,1)}, - _b45_= - [0, - function(param) - {function _b5I_(param) - {var - _b5K_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$0), - _b5L_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$0), - _b5M_= - caml_call2 - (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_b5L_); - return caml_call2(Runtime_ocaml_Runtime[65],_b5M_,_b5K_)} - function _b5J_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_bu_,regime_outre_mer_l751_1)} - return caml_call4(Runtime_ocaml_Runtime[62],_bv_,[0],_b5J_,_b5I_)}], - _b46_=caml_call4(Runtime_ocaml_Runtime[62],_bw_,_b45_,_b44_,_b43_)} - catch(_b5H_) - {_b5H_ = caml_wrap_exception(_b5H_); - if(_b5H_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bs_]; - throw _b5H_} - var - plafond_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_bx_,Runtime_ocaml_Runtime[13],_b46_); - function _b47_(param) - {try - {var - _b5v_=function(param){return 0}, - _b5w_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_bz_,1)}, - _b5x_= - [0, - function(param$0) - {function _b5A_(param){return 1} - function _b5B_(param$0) - {switch(param[2][0]) - {case 0:var _b5C_=1;break; - case 1:var _b5C_=0;break; - default:var _b5C_=0} - if(_b5C_) - var _b5D_=_b5C_; - else - {switch(param[2][0]) - {case 0:var _b5F_=0;break; - case 1:var _b5F_=1;break; - default:var _b5F_=0} - if(_b5F_) - var _b5D_=_b5F_; - else - {switch(param[2][0]) - {case 0:var _b5G_=0;break; - case 1:var _b5G_=0;break; - default:var _b5G_=1} - var _b5D_=_b5G_}} - var - _b5E_= - _b5D_ - ?caml_call2 - (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2) - :_b5D_; - return caml_call2(Runtime_ocaml_Runtime[29],_bA_,_b5E_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_bB_,[0],_b5B_,_b5A_)}], - _b5y_=caml_call4(Runtime_ocaml_Runtime[62],_bC_,_b5x_,_b5w_,_b5v_); - return _b5y_} - catch(_b5z_) - {_b5z_ = caml_wrap_exception(_b5z_); - if(_b5z_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_by_]; - throw _b5z_}} - var - conditions_hors_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_bD_,Runtime_ocaml_Runtime[10],_b47_); - function _b48_(param) - {try - {var - _b49_=function(param){return 0}, - _b4__= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_bF_,1)}, - _b4$_= - [0, - function(param$0) - {function _b5c_(param$0) - {function _b5h_(param){throw Runtime_ocaml_Runtime[2]} - function _b5i_(param){return 0} - var - _b5j_= - [0, - function(param$0) - {function _b5k_(param){return 1} - function _b5l_(param$0) - {switch(param[2][0]) - {case 0:var _b5s_=1;break; - case 1:var _b5s_=0;break; - default:var _b5s_=0} - if(_b5s_) - var _b5t_=_b5s_; - else - {switch(param[2][0]) - {case 0:var _b5u_=0;break; - case 1:var _b5u_=1;break; - default:var _b5u_=0} - var _b5t_=_b5u_} - return caml_call2(Runtime_ocaml_Runtime[29],_bG_,_b5t_)} - var - _b5m_= - [0, - function(param$0) - {function _b5n_(param){return 1} - function _b5o_(param$0) - {switch(param[2][0]) - {case 0:var _b5p_=0;break; - case 1:var _b5p_=0;break; - default:var _b5p_=1} - if(_b5p_) - var - _b5q_= - caml_call2 - (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2), - _b5r_= - _b5q_ - ?caml_call2(Runtime_ocaml_Runtime[84],param[5],age_l512_3_2) - :_b5q_; - else - var _b5r_=_b5p_; - return caml_call2(Runtime_ocaml_Runtime[29],_bH_,_b5r_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_bI_,[0],_b5o_,_b5n_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_bJ_,_b5m_,_b5l_,_b5k_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_bK_,_b5j_,_b5i_,_b5h_)} - function _b5d_(param){return 1} - var - _b5e_= - [0, - function(param$0) - {function _b5f_(param){return 0} - function _b5g_(param$0) - {return caml_call2(Runtime_ocaml_Runtime[29],_bL_,param[8])} - return caml_call4 - (Runtime_ocaml_Runtime[62],_bM_,[0],_b5g_,_b5f_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_bN_,_b5e_,_b5d_,_b5c_)}], - _b5a_=caml_call4(Runtime_ocaml_Runtime[62],_bO_,_b4$_,_b4__,_b49_); - return _b5a_} - catch(_b5b_) - {_b5b_ = caml_wrap_exception(_b5b_); - if(_b5b_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bE_]; - throw _b5b_}} - var - droit_ouvert= - caml_call3 - (Runtime_ocaml_Runtime[28],_bP_,Runtime_ocaml_Runtime[10],_b48_); - return [0, - droit_ouvert, - conditions_hors_age, - age_l512_3_2, - regime_outre_mer_l751_1]} - function allocations_familiales(allocations_familiales_in) - {var - personne_charge_effective_perm=allocations_familiales_in[1], - personne_charge_effective_perm$0=allocations_familiales_in[2], - ressources_menage=allocations_familiales_in[3], - residence=allocations_familiales_in[4], - date_courante=allocations_familiales_in[5], - enfants_a_charge=allocations_familiales_in[6], - avait_enfant_a_charge_avant_1e=allocations_familiales_in[7]; - function _bOp_(param) - {try - {var - _b4r_=function(param){throw Runtime_ocaml_Runtime[2]}, - _b4s_=function(param){return 0}, - _b4t_= - function(param$0) - {function _b4E_(param){return _bR_} - function _b4F_(param$0) - {switch(param[6][0]) - {case 0:var _b4O_=0;break; - case 1:var _b4O_=0;break; - case 2:var _b4O_=1;break; - case 3:var _b4O_=0;break; - default:var _b4O_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_bS_,_b4O_)} - var - _b4G_= - [0, - function(param$0) - {function _b4H_(param){return _bT_} - function _b4I_(param$0) - {switch(param[6][0]) - {case 0:var _b4N_=0;break; - case 1:var _b4N_=1;break; - case 2:var _b4N_=0;break; - case 3:var _b4N_=0;break; - default:var _b4N_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_bU_,_b4N_)} - var - _b4J_= - [0, - function(param$0) - {function _b4K_(param){return _bV_} - function _b4L_(param$0) - {switch(param[6][0]) - {case 0:var _b4M_=0;break; - case 1:var _b4M_=0;break; - case 2:var _b4M_=0;break; - case 3:var _b4M_=1;break; - default:var _b4M_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_bW_,_b4M_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_bX_,[0],_b4L_,_b4K_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_bY_,_b4J_,_b4I_,_b4H_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_bZ_,_b4G_,_b4F_,_b4E_)}, - _b4u_= - function(param$0) - {function _b4B_(param){return _b0_} - function _b4C_(param$0) - {switch(param[6][0]) - {case 0:var _b4D_=0;break; - case 1:var _b4D_=0;break; - case 2:var _b4D_=0;break; - case 3:var _b4D_=0;break; - default:var _b4D_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_b1_,_b4D_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_b2_,[0],_b4C_,_b4B_)}, - _b4v_= - [0, - function(param$0) - {function _b4y_(param){return _b3_} - function _b4z_(param$0) - {switch(param[6][0]) - {case 0:var _b4A_=1;break; - case 1:var _b4A_=0;break; - case 2:var _b4A_=0;break; - case 3:var _b4A_=0;break; - default:var _b4A_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_b4_,_b4A_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_b5_,[0],_b4z_,_b4y_)}, - _b4u_, - _b4t_], - _b4w_=caml_call4(Runtime_ocaml_Runtime[62],_b6_,_b4v_,_b4s_,_b4r_); - return _b4w_} - catch(_b4x_) - {_b4x_ = caml_wrap_exception(_b4x_); - if(_b4x_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bQ_]; - throw _b4x_}} - var - prise_en_compte= - caml_call3 - (Runtime_ocaml_Runtime[28],_b7_,Runtime_ocaml_Runtime[10],_bOp_); - function _bOq_(param) - {try - {var - _b35_=function(param){throw Runtime_ocaml_Runtime[2]}, - _b36_=function(param){return 0}, - _b37_= - function(param$0) - {function _b4c_(param){return _b9_} - function _b4d_(param$0) - {switch(param[6][0]) - {case 0:var _b4q_=0;break; - case 1:var _b4q_=0;break; - case 2:var _b4q_=1;break; - case 3:var _b4q_=0;break; - default:var _b4q_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_b__,_b4q_)} - var - _b4e_= - [0, - function(param$0) - {function _b4f_(param){return _b$_} - function _b4g_(param$0) - {switch(param[6][0]) - {case 0:var _b4p_=0;break; - case 1:var _b4p_=1;break; - case 2:var _b4p_=0;break; - case 3:var _b4p_=0;break; - default:var _b4p_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_ca_,_b4p_)} - var - _b4h_= - [0, - function(param$0) - {function _b4i_(param){return _cb_} - function _b4j_(param$0) - {switch(param[6][0]) - {case 0:var _b4o_=1;break; - case 1:var _b4o_=0;break; - case 2:var _b4o_=0;break; - case 3:var _b4o_=0;break; - default:var _b4o_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cc_,_b4o_)} - var - _b4k_= - [0, - function(param$0) - {function _b4l_(param){return _cd_} - function _b4m_(param$0) - {switch(param[6][0]) - {case 0:var _b4n_=0;break; - case 1:var _b4n_=0;break; - case 2:var _b4n_=0;break; - case 3:var _b4n_=1;break; - default:var _b4n_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_ce_,_b4n_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_cf_,[0],_b4m_,_b4l_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_cg_,_b4k_,_b4j_,_b4i_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_ch_,_b4h_,_b4g_,_b4f_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_ci_,_b4e_,_b4d_,_b4c_)}, - _b38_= - [0, - function(param$0) - {function _b3$_(param){return _cj_} - function _b4a_(param$0) - {switch(param[6][0]) - {case 0:var _b4b_=0;break; - case 1:var _b4b_=0;break; - case 2:var _b4b_=0;break; - case 3:var _b4b_=0;break; - default:var _b4b_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_ck_,_b4b_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_cl_,[0],_b4a_,_b3$_)}, - _b37_], - _b39_=caml_call4(Runtime_ocaml_Runtime[62],_cm_,_b38_,_b36_,_b35_); - return _b39_} - catch(_b3__) - {_b3__ = caml_wrap_exception(_b3__); - if(_b3__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_b8_]; - throw _b3__}} - caml_call3 - (Runtime_ocaml_Runtime[28],_cn_,Runtime_ocaml_Runtime[10],_bOq_); - try - {var - _bOr_= - function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_3)}, - _bOs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cp_,1)}, - _bOt_=caml_call4(Runtime_ocaml_Runtime[62],_cq_,[0],_bOs_,_bOr_)} - catch(_b34_) - {_b34_ = caml_wrap_exception(_b34_); - if(_b34_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_co_]; - throw _b34_} - caml_call3 - (Runtime_ocaml_Runtime[28],_cr_,Runtime_ocaml_Runtime[14],_bOt_); - try - {var - _bOu_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[46],cst_3$0)}, - _bOv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ct_,1)}, - _bOw_=caml_call4(Runtime_ocaml_Runtime[62],_cu_,[0],_bOv_,_bOu_)} - catch(_b33_) - {_b33_ = caml_wrap_exception(_b33_); - if(_b33_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cs_]; - throw _b33_} - var - nombre_enfants_alinea_2_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_cv_,Runtime_ocaml_Runtime[14],_bOw_), - _bOx_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_cw_,allocation_familiales_avril200), - 0), - result=caml_call2(Runtime_ocaml_Runtime[27],_cx_,_bOx_), - version_avril_2008_dot_age_min=result[1]; - try - {var - _bOy_=function(param){return date_courante}, - _bOz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cz_,1)}, - _bOA_=caml_call4(Runtime_ocaml_Runtime[62],_cA_,[0],_bOz_,_bOy_), - bmaf_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_cB_,Runtime_ocaml_Runtime[16],_bOA_)} - catch(_b32_) - {_b32_ = caml_wrap_exception(_b32_); - if(_b32_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cy_]; - throw _b32_} - var - _bOB_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_cC_,base_mensuelle_allocations_fam), - [0,bmaf_dot_date_courante]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_cD_,_bOB_), - bmaf_dot_montant=result$0[1]; - try - {var - _bOC_=function(param){return date_courante}, - _bOD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cF_,1)}, - _bOE_=caml_call4(Runtime_ocaml_Runtime[62],_cG_,[0],_bOD_,_bOC_), - prestations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_cH_,Runtime_ocaml_Runtime[16],_bOE_)} - catch(_b31_) - {_b31_ = caml_wrap_exception(_b31_); - if(_b31_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cE_]; - throw _b31_} - try - {var - _bOF_=function(param){return _cJ_}, - _bOG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cK_,1)}, - _bOH_=caml_call4(Runtime_ocaml_Runtime[62],_cL_,[0],_bOG_,_bOF_), - prestations_familiales_dot_pre= - caml_call3 - (Runtime_ocaml_Runtime[28], - _cM_, - embed_element_prestations_fami, - _bOH_)} - catch(_b30_) - {_b30_ = caml_wrap_exception(_b30_); - if(_b30_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cI_]; - throw _b30_} - try - {var - _bOI_=function(param){return residence}, - _bOJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cO_,1)}, - _bOK_=caml_call4(Runtime_ocaml_Runtime[62],_cP_,[0],_bOJ_,_bOI_), - prestations_familiales_dot_res= - caml_call3(Runtime_ocaml_Runtime[28],_cQ_,embed_collectivite,_bOK_)} - catch(_b3Z_) - {_b3Z_ = caml_wrap_exception(_b3Z_); - if(_b3Z_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cN_]; - throw _b3Z_} - var - _bOL_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_cR_,prestations_familiales), - [0, - prestations_familiales_dot_dat, - prestations_familiales_dot_pre, - prestations_familiales_dot_res]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_cS_,_bOL_), - prestations_familiales_dot_dro=result$1[1], - prestations_familiales_dot_con=result$1[2], - prestations_familiales_dot_age=result$1[3], - prestations_familiales_dot_reg=result$1[4]; - try - {var - _bOM_=function(param){return enfants_a_charge}, - _bON_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cU_,1)}, - _bOO_=caml_call4(Runtime_ocaml_Runtime[62],_cV_,[0],_bON_,_bOM_), - _bOP_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfant_le_plus_age_dot_enfants= - caml_call3(Runtime_ocaml_Runtime[28],_cW_,_bOP_,_bOO_)} - catch(_b3Y_) - {_b3Y_ = caml_wrap_exception(_b3Y_); - if(_b3Y_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cT_]; - throw _b3Y_} - var - _bOQ_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_cX_,enfant_le_plus_age), - [0,enfant_le_plus_age_dot_enfants]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_cY_,_bOQ_), - enfant_le_plus_age_dot_le_plus=result$2[1]; - function _bOR_(param) - {try - {var - _b3N_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[46],cst_14)}, - _b3O_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_c0_,1)}, - _b3P_= - [0, - function(param$0) - {function _b3S_(param){return version_avril_2008_dot_age_min} - function _b3T_(param$0) - {var - _b3U_=caml_call3(Runtime_ocaml_Runtime[56],2008,4,30), - _b3V_=caml_call3(Runtime_ocaml_Runtime[59],11,0,0), - _b3W_=caml_call2(Runtime_ocaml_Runtime[95],param[4],_b3V_), - _b3X_=caml_call2(Runtime_ocaml_Runtime[99],_b3W_,_b3U_); - return caml_call2(Runtime_ocaml_Runtime[29],_c1_,_b3X_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_c2_,[0],_b3T_,_b3S_)}], - _b3Q_=caml_call4(Runtime_ocaml_Runtime[62],_c3_,_b3P_,_b3O_,_b3N_); - return _b3Q_} - catch(_b3R_) - {_b3R_ = caml_wrap_exception(_b3R_); - if(_b3R_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cZ_]; - throw _b3R_}} - var - age_minimum_alinea_1_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_c4_,Runtime_ocaml_Runtime[10],_bOR_); - try - {var - _bOS_= - function(param) - {function _b3J_(enfant) - {var - _b3K_= - caml_call3(Runtime_ocaml_Runtime[28],_c6_,embed_enfant,enfant), - _b3L_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _c7_, - prestations_familiales_dot_dro), - _b3K_), - _b3M_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _c8_, - Runtime_ocaml_Runtime[12], - _b3L_); - return caml_call2(Runtime_ocaml_Runtime[27],_c9_,_b3M_)} - return caml_call2 - (Runtime_ocaml_Runtime[112],_b3J_,enfants_a_charge)}, - _bOT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c__,1)}, - _bOU_=caml_call4(Runtime_ocaml_Runtime[62],_c$_,[0],_bOT_,_bOS_)} - catch(_b3I_) - {_b3I_ = caml_wrap_exception(_b3I_); - if(_b3I_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_c5_]; - throw _b3I_} - var - _bOV_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfants_a_charge_droit_ouvert_= - caml_call3(Runtime_ocaml_Runtime[28],_da_,_bOV_,_bOU_); - function _bOW_(param) - {try - {var - _b3E_= - function(param$0) - {return caml_equal(enfant_le_plus_age_dot_le_plus,param)}, - _b3F_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_dc_,1)}, - _b3G_=caml_call4(Runtime_ocaml_Runtime[62],_dd_,[0],_b3F_,_b3E_); - return _b3G_} - catch(_b3H_) - {_b3H_ = caml_wrap_exception(_b3H_); - if(_b3H_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_db_]; - throw _b3H_}} - var - est_enfant_le_plus_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_de_,Runtime_ocaml_Runtime[10],_bOW_); - try - {var - _bOX_= - function(param) - {var - _b3z_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b3A_=caml_call1(Runtime_ocaml_Runtime[41],_b3z_), - _b3B_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500), - _b3C_=caml_call2(Runtime_ocaml_Runtime[65],_b3B_,_b3A_), - _b3D_=caml_call1(Runtime_ocaml_Runtime[31],cst_7830000); - return caml_call2(Runtime_ocaml_Runtime[67],_b3D_,_b3C_)}, - _bOY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dg_,1)}, - _bOZ_= - [0, - function(param) - {function _b2N_(param){throw Runtime_ocaml_Runtime[2]} - function _b2O_(param){return 0} - function _b2P_(param) - {function _b3o_(param) - {var - _b3u_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b3v_=caml_call1(Runtime_ocaml_Runtime[41],_b3u_), - _b3w_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700), - _b3x_=caml_call2(Runtime_ocaml_Runtime[65],_b3w_,_b3v_), - _b3y_=caml_call1(Runtime_ocaml_Runtime[31],cst_8155800); - return caml_call2(Runtime_ocaml_Runtime[67],_b3y_,_b3x_)} - function _b3p_(param) - {var - _b3q_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _b3r_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b3q_); - if(_b3r_) - var - _b3s_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _b3t_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b3s_); - else - var _b3t_=_b3r_; - return caml_call2(Runtime_ocaml_Runtime[29],_dh_,_b3t_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_di_,[0],_b3p_,_b3o_)} - function _b2Q_(param) - {function _b3d_(param) - {var - _b3j_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b3k_=caml_call1(Runtime_ocaml_Runtime[41],_b3j_), - _b3l_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500), - _b3m_=caml_call2(Runtime_ocaml_Runtime[65],_b3l_,_b3k_), - _b3n_=caml_call1(Runtime_ocaml_Runtime[31],cst_8083100); - return caml_call2(Runtime_ocaml_Runtime[67],_b3n_,_b3m_)} - function _b3e_(param) - {var - _b3f_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _b3g_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b3f_); - if(_b3g_) - var - _b3h_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _b3i_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b3h_); - else - var _b3i_=_b3g_; - return caml_call2(Runtime_ocaml_Runtime[29],_dj_,_b3i_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dk_,[0],_b3e_,_b3d_)} - function _b2R_(param) - {function _b24_(param) - {var - _b2__= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b2$_=caml_call1(Runtime_ocaml_Runtime[41],_b2__), - _b3a_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400), - _b3b_=caml_call2(Runtime_ocaml_Runtime[65],_b3a_,_b2$_), - _b3c_=caml_call1(Runtime_ocaml_Runtime[31],cst_7955800); - return caml_call2(Runtime_ocaml_Runtime[67],_b3c_,_b3b_)} - function _b25_(param) - {var - _b26_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _b27_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b26_); - if(_b27_) - var - _b28_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _b29_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b28_); - else - var _b29_=_b27_; - return caml_call2(Runtime_ocaml_Runtime[29],_dl_,_b29_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dm_,[0],_b25_,_b24_)} - var - _b2S_= - [0, - function(param) - {function _b2T_(param) - {var - _b2Z_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b20_=caml_call1(Runtime_ocaml_Runtime[41],_b2Z_), - _b21_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800), - _b22_=caml_call2(Runtime_ocaml_Runtime[65],_b21_,_b20_), - _b23_=caml_call1(Runtime_ocaml_Runtime[31],cst_7877000); - return caml_call2(Runtime_ocaml_Runtime[67],_b23_,_b22_)} - function _b2U_(param) - {var - _b2V_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _b2W_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2V_); - if(_b2W_) - var - _b2X_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31), - _b2Y_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2X_); - else - var _b2Y_=_b2W_; - return caml_call2(Runtime_ocaml_Runtime[29],_dn_,_b2Y_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_do_,[0],_b2U_,_b2T_)}, - _b2R_, - _b2Q_, - _b2P_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_dp_,_b2S_,_b2O_,_b2N_)}], - _bO0_=caml_call4(Runtime_ocaml_Runtime[62],_dq_,_bOZ_,_bOY_,_bOX_)} - catch(_b2M_) - {_b2M_ = caml_wrap_exception(_b2M_); - if(_b2M_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_df_]; - throw _b2M_} - var - plafond_i_i_d521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_dr_,Runtime_ocaml_Runtime[13],_bO0_); - try - {var - _bO1_= - function(param) - {var - _b2H_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b2I_=caml_call1(Runtime_ocaml_Runtime[41],_b2H_), - _b2J_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500$0), - _b2K_=caml_call2(Runtime_ocaml_Runtime[65],_b2J_,_b2I_), - _b2L_=caml_call1(Runtime_ocaml_Runtime[31],cst_5595000); - return caml_call2(Runtime_ocaml_Runtime[67],_b2L_,_b2K_)}, - _bO2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dt_,1)}, - _bO3_= - [0, - function(param) - {function _b1V_(param){throw Runtime_ocaml_Runtime[2]} - function _b1W_(param){return 0} - function _b1X_(param) - {function _b2w_(param) - {var - _b2C_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b2D_=caml_call1(Runtime_ocaml_Runtime[41],_b2C_), - _b2E_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700$0), - _b2F_=caml_call2(Runtime_ocaml_Runtime[65],_b2E_,_b2D_), - _b2G_=caml_call1(Runtime_ocaml_Runtime[31],cst_5827900); - return caml_call2(Runtime_ocaml_Runtime[67],_b2G_,_b2F_)} - function _b2x_(param) - {var - _b2y_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _b2z_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2y_); - if(_b2z_) - var - _b2A_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _b2B_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2A_); - else - var _b2B_=_b2z_; - return caml_call2(Runtime_ocaml_Runtime[29],_du_,_b2B_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dv_,[0],_b2x_,_b2w_)} - function _b1Y_(param) - {function _b2l_(param) - {var - _b2r_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b2s_=caml_call1(Runtime_ocaml_Runtime[41],_b2r_), - _b2t_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500$0), - _b2u_=caml_call2(Runtime_ocaml_Runtime[65],_b2t_,_b2s_), - _b2v_=caml_call1(Runtime_ocaml_Runtime[31],cst_5775900); - return caml_call2(Runtime_ocaml_Runtime[67],_b2v_,_b2u_)} - function _b2m_(param) - {var - _b2n_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _b2o_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2n_); - if(_b2o_) - var - _b2p_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _b2q_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2p_); - else - var _b2q_=_b2o_; - return caml_call2(Runtime_ocaml_Runtime[29],_dw_,_b2q_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dx_,[0],_b2m_,_b2l_)} - function _b1Z_(param) - {function _b2a_(param) - {var - _b2g_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b2h_=caml_call1(Runtime_ocaml_Runtime[41],_b2g_), - _b2i_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400$0), - _b2j_=caml_call2(Runtime_ocaml_Runtime[65],_b2i_,_b2h_), - _b2k_=caml_call1(Runtime_ocaml_Runtime[31],cst_5684900); - return caml_call2(Runtime_ocaml_Runtime[67],_b2k_,_b2j_)} - function _b2b_(param) - {var - _b2c_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _b2d_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2c_); - if(_b2d_) - var - _b2e_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _b2f_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2e_); - else - var _b2f_=_b2d_; - return caml_call2(Runtime_ocaml_Runtime[29],_dy_,_b2f_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dz_,[0],_b2b_,_b2a_)} - var - _b10_= - [0, - function(param) - {function _b11_(param) - {var - _b17_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b18_=caml_call1(Runtime_ocaml_Runtime[41],_b17_), - _b19_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800$0), - _b1__=caml_call2(Runtime_ocaml_Runtime[65],_b19_,_b18_), - _b1$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5628600); - return caml_call2(Runtime_ocaml_Runtime[67],_b1$_,_b1__)} - function _b12_(param) - {var - _b13_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _b14_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b13_); - if(_b14_) - var - _b15_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31), - _b16_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b15_); - else - var _b16_=_b14_; - return caml_call2(Runtime_ocaml_Runtime[29],_dA_,_b16_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dB_,[0],_b12_,_b11_)}, - _b1Z_, - _b1Y_, - _b1X_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_dC_,_b10_,_b1W_,_b1V_)}], - _bO4_=caml_call4(Runtime_ocaml_Runtime[62],_dD_,_bO3_,_bO2_,_bO1_)} - catch(_b1U_) - {_b1U_ = caml_wrap_exception(_b1U_); - if(_b1U_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ds_]; - throw _b1U_} - var - plafond_i_d521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_dE_,Runtime_ocaml_Runtime[13],_bO4_); - try - {var - _bO5_=function(param){return 0}, - _bO6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dG_,1)}, - _bO7_= - [0, - function(param) - {function _b1N_(param){return 1} - function _b1O_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_dH_,1)} - var - _b1P_= - [0, - function(param) - {function _b1Q_(param){return 0} - function _b1R_(param) - {if(prestations_familiales_dot_reg) - var - _b1S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$0), - _b1T_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b1S_); - else - var _b1T_=prestations_familiales_dot_reg; - return caml_call2(Runtime_ocaml_Runtime[29],_dI_,_b1T_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dJ_,[0],_b1R_,_b1Q_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_dK_,_b1P_,_b1O_,_b1N_)}], - _bO8_=caml_call4(Runtime_ocaml_Runtime[62],_dL_,_bO7_,_bO6_,_bO5_)} - catch(_b1M_) - {_b1M_ = caml_wrap_exception(_b1M_); - if(_b1M_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dF_]; - throw _b1M_} - var - droit_ouvert_complement= - caml_call3 - (Runtime_ocaml_Runtime[28],_dM_,Runtime_ocaml_Runtime[12],_bO8_); - function _bO9_(param) - {try - {var - _b1s_=function(param){return 0}, - _b1t_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_dO_,1)}, - _b1u_= - [0, - function(param$0) - {function _b1x_(param){return 1} - function _b1y_(param$0) - {var - _b1E_= - caml_call1(Runtime_ocaml_Runtime[113],enfants_a_charge), - _b1F_= - caml_call2 - (Runtime_ocaml_Runtime[81], - _b1E_, - nombre_enfants_alinea_2_l521_3); - if(_b1F_) - {var - _b1G_= - caml_equal(param[5],prestations_familiales_dot_age); - if(_b1G_) - {var _b1H_=param[7]; - if(_b1H_) - var - _b1I_= - caml_call3 - (Runtime_ocaml_Runtime[28],_dP_,embed_enfant,param), - _b1J_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _dQ_, - prestations_familiales_dot_con), - _b1I_), - _b1K_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _dR_, - Runtime_ocaml_Runtime[12], - _b1J_), - _b1L_=caml_call2(Runtime_ocaml_Runtime[27],_dS_,_b1K_); - else - var _b1L_=_b1H_} - else - var _b1L_=_b1G_} - else - var _b1L_=_b1F_; - return caml_call2(Runtime_ocaml_Runtime[29],_dT_,_b1L_)} - var - _b1z_= - [0, - function(param) - {function _b1A_(param){return 0} - function _b1B_(param) - {if(prestations_familiales_dot_reg) - var - _b1C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$1), - _b1D_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b1C_); - else - var _b1D_=prestations_familiales_dot_reg; - return caml_call2(Runtime_ocaml_Runtime[29],_dU_,_b1D_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_dV_,[0],_b1B_,_b1A_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_dW_,_b1z_,_b1y_,_b1x_)}], - _b1v_=caml_call4(Runtime_ocaml_Runtime[62],_dX_,_b1u_,_b1t_,_b1s_); - return _b1v_} - catch(_b1w_) - {_b1w_ = caml_wrap_exception(_b1w_); - if(_b1w_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dN_]; - throw _b1w_}} - var - droit_ouvert_forfaitaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_dY_,Runtime_ocaml_Runtime[10],_bO9_); - try - {var - _bO__= - function(param) - {var - _b1k_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$1), - _b1l_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b1l_,_b1k_)) - {var - _b1m_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), - _b1n_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _b1o_=caml_call2(Runtime_ocaml_Runtime[76],_b1n_,_b1m_), - _b1p_=caml_call1(Runtime_ocaml_Runtime[41],_b1o_), - _b1q_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), - _b1r_= - caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1q_); - return caml_call2(Runtime_ocaml_Runtime[65],_b1r_,_b1p_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)}, - _bO$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d0_,1)}, - _bPa_=caml_call4(Runtime_ocaml_Runtime[62],_d1_,[0],_bO$_,_bO__)} - catch(_b1j_) - {_b1j_ = caml_wrap_exception(_b1j_); - if(_b1j_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dZ_]; - throw _b1j_} - var - montant_initial_base_quatrieme= - caml_call3 - (Runtime_ocaml_Runtime[28],_d2_,Runtime_ocaml_Runtime[13],_bPa_); - try - {var - _bPb_= - function(param) - {var - _b1g_=caml_call1(Runtime_ocaml_Runtime[46],cst_2), - _b1h_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b1h_,_b1g_)) - {var _b1i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1i_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)}, - _bPc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d4_,1)}, - _bPd_= - [0, - function(param) - {function _bZw_(param){throw Runtime_ocaml_Runtime[2]} - function _bZx_(param){return 0} - function _bZy_(param) - {function _b08_(param) - {var - _b1d_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$0), - _b1e_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b1e_,_b1d_)) - {var _b1f_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1f_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)} - function _b09_(param) - {var _b0__=caml_equal(residence,_d5_); - if(_b0__) - {var - _b0$_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _b1a_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0$_); - if(_b1a_) - var - _b1b_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _b1c_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b1b_); - else - var _b1c_=_b1a_} - else - var _b1c_=_b0__; - return caml_call2(Runtime_ocaml_Runtime[29],_d6_,_b1c_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_d7_,[0],_b09_,_b08_)} - function _bZz_(param) - {function _b0Y_(param) - {var - _b05_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$1), - _b06_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b06_,_b05_)) - {var _b07_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b07_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)} - function _b0Z_(param) - {var _b00_=caml_equal(residence,_d8_); - if(_b00_) - {var - _b01_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _b02_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b01_); - if(_b02_) - var - _b03_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _b04_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b03_); - else - var _b04_=_b02_} - else - var _b04_=_b00_; - return caml_call2(Runtime_ocaml_Runtime[29],_d9_,_b04_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_d__,[0],_b0Z_,_b0Y_)} - function _bZA_(param) - {function _b0O_(param) - {var - _b0V_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$2), - _b0W_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b0W_,_b0V_)) - {var _b0X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0X_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)} - function _b0P_(param) - {var _b0Q_=caml_equal(residence,_d$_); - if(_b0Q_) - {var - _b0R_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _b0S_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0R_); - if(_b0S_) - var - _b0T_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31), - _b0U_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0T_); - else - var _b0U_=_b0S_} - else - var _b0U_=_b0Q_; - return caml_call2(Runtime_ocaml_Runtime[29],_ea_,_b0U_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_eb_,[0],_b0P_,_b0O_)} - function _bZB_(param) - {function _b0E_(param) - {var - _b0L_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$3), - _b0M_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b0M_,_b0L_)) - {var _b0N_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0N_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)} - function _b0F_(param) - {var _b0G_=caml_equal(residence,_ec_); - if(_b0G_) - {var - _b0H_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1), - _b0I_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0H_); - if(_b0I_) - var - _b0J_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _b0K_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0J_); - else - var _b0K_=_b0I_} - else - var _b0K_=_b0G_; - return caml_call2(Runtime_ocaml_Runtime[29],_ed_,_b0K_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ee_,[0],_b0F_,_b0E_)} - function _bZC_(param) - {function _b0u_(param) - {var - _b0B_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$4), - _b0C_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b0C_,_b0B_)) - {var _b0D_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0D_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)} - function _b0v_(param) - {var _b0w_=caml_equal(residence,_ef_); - if(_b0w_) - {var - _b0x_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1), - _b0y_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0x_); - if(_b0y_) - var - _b0z_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31), - _b0A_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0z_); - else - var _b0A_=_b0y_} - else - var _b0A_=_b0w_; - return caml_call2(Runtime_ocaml_Runtime[29],_eg_,_b0A_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_eh_,[0],_b0v_,_b0u_)} - function _bZD_(param) - {function _b0k_(param) - {var - _b0r_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$5), - _b0s_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b0s_,_b0r_)) - {var _b0t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0t_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)} - function _b0l_(param) - {var _b0m_=caml_equal(residence,_ei_); - if(_b0m_) - {var - _b0n_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1), - _b0o_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0n_); - if(_b0o_) - var - _b0p_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31), - _b0q_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0p_); - else - var _b0q_=_b0o_} - else - var _b0q_=_b0m_; - return caml_call2(Runtime_ocaml_Runtime[29],_ej_,_b0q_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ek_,[0],_b0l_,_b0k_)} - function _bZE_(param) - {function _b0a_(param) - {var - _b0h_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$6), - _b0i_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_b0i_,_b0h_)) - {var _b0j_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0j_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)} - function _b0b_(param) - {var _b0c_=caml_equal(residence,_el_); - if(_b0c_) - {var - _b0d_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1), - _b0e_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0d_); - if(_b0e_) - var - _b0f_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31), - _b0g_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0f_); - else - var _b0g_=_b0e_} - else - var _b0g_=_b0c_; - return caml_call2(Runtime_ocaml_Runtime[29],_em_,_b0g_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_en_,[0],_b0b_,_b0a_)} - function _bZF_(param) - {function _bZ2_(param) - {var - _bZ9_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$7), - _bZ__= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bZ__,_bZ9_)) - {var _bZ$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZ$_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)} - function _bZ3_(param) - {var _bZ4_=caml_equal(residence,_eo_); - if(_bZ4_) - {var - _bZ5_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1), - _bZ6_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZ5_); - if(_bZ6_) - var - _bZ7_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31), - _bZ8_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZ7_); - else - var _bZ8_=_bZ6_} - else - var _bZ8_=_bZ4_; - return caml_call2(Runtime_ocaml_Runtime[29],_ep_,_bZ8_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_eq_,[0],_bZ3_,_bZ2_)} - function _bZG_(param) - {function _bZS_(param) - {var - _bZZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$8), - _bZ0_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bZ0_,_bZZ_)) - {var _bZ1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZ1_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)} - function _bZT_(param) - {var _bZU_=caml_equal(residence,_er_); - if(_bZU_) - {var - _bZV_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1), - _bZW_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZV_); - if(_bZW_) - var - _bZX_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bZY_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZX_); - else - var _bZY_=_bZW_} - else - var _bZY_=_bZU_; - return caml_call2(Runtime_ocaml_Runtime[29],_es_,_bZY_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_et_,[0],_bZT_,_bZS_)} - var - _bZH_= - [0, - function(param) - {function _bZI_(param) - {var - _bZP_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$9), - _bZQ_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bZQ_,_bZP_)) - {var - _bZR_= - caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZR_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$12)} - function _bZJ_(param) - {var _bZK_=caml_equal(residence,_eu_); - if(_bZK_) - {var - _bZL_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1), - _bZM_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZL_); - if(_bZM_) - var - _bZN_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bZO_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZN_); - else - var _bZO_=_bZM_} - else - var _bZO_=_bZK_; - return caml_call2(Runtime_ocaml_Runtime[29],_ev_,_bZO_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ew_,[0],_bZJ_,_bZI_)}, - _bZG_, - _bZF_, - _bZE_, - _bZD_, - _bZC_, - _bZB_, - _bZA_, - _bZz_, - _bZy_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_ex_,_bZH_,_bZx_,_bZw_)}], - _bPe_=caml_call4(Runtime_ocaml_Runtime[62],_ey_,_bPd_,_bPc_,_bPb_)} - catch(_bZv_) - {_bZv_ = caml_wrap_exception(_bZv_); - if(_bZv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_d3_]; - throw _bZv_} - var - montant_initial_base_troisieme= - caml_call3 - (Runtime_ocaml_Runtime[28],_ez_,Runtime_ocaml_Runtime[13],_bPe_); - try - {var - _bPf_= - function(param) - {var - _bZu_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - return caml_call1(Runtime_ocaml_Runtime[41],_bZu_)}, - _bPg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eB_,1)}, - _bPh_=caml_call4(Runtime_ocaml_Runtime[62],_eC_,[0],_bPg_,_bPf_)} - catch(_bZt_) - {_bZt_ = caml_wrap_exception(_bZt_); - if(_bZt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_eA_]; - throw _bZt_} - var - nombre_total_enfants= - caml_call3 - (Runtime_ocaml_Runtime[28],_eD_,Runtime_ocaml_Runtime[15],_bPh_); - try - {var - _bPi_= - function(param) - {var _bZn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$13); - function _bZo_(acc,enfant) - {var - _bZp_= - caml_call3(Runtime_ocaml_Runtime[28],_eF_,embed_enfant,enfant), - _bZq_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_eG_,prise_en_compte), - _bZp_), - _bZr_= - caml_call3 - (Runtime_ocaml_Runtime[28],_eH_,embed_prise_en_compte,_bZq_), - match=caml_call2(Runtime_ocaml_Runtime[27],_eI_,_bZr_); - switch(match[0]) - {case 0: - var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$2); - break; - case 1: - var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5); - break; - default: - var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$14)} - return caml_call2(Runtime_ocaml_Runtime[85],acc,_bZs_)} - return caml_call3 - (Stdlib_Array[17], - _bZo_, - _bZn_, - enfants_a_charge_droit_ouvert_)}, - _bPj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eJ_,1)}, - _bPk_=caml_call4(Runtime_ocaml_Runtime[62],_eK_,[0],_bPj_,_bPi_)} - catch(_bZm_) - {_bZm_ = caml_wrap_exception(_bZm_); - if(_bZm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_eE_]; - throw _bZm_} - var - nombre_moyen_enfants= - caml_call3 - (Runtime_ocaml_Runtime[28],_eL_,Runtime_ocaml_Runtime[15],_bPk_); - try - {var - _bPl_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$15)}, - _bPm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eN_,1)}, - _bPn_= - function(param) - {function _bZh_(param) - {var _bZl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZl_)} - function _bZi_(param) - {if(prestations_familiales_dot_reg) - var - _bZj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$3), - _bZk_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bZj_); - else - var _bZk_=prestations_familiales_dot_reg; - return caml_call2(Runtime_ocaml_Runtime[29],_eO_,_bZk_)} - return caml_call4(Runtime_ocaml_Runtime[62],_eP_,[0],_bZi_,_bZh_)}, - _bPo_= - [0, - function(param) - {function _bXb_(param) - {var - _bZe_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$16), - _bZf_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bZf_,_bZe_)) - {var _bZg_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZg_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$17)} - function _bXc_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_eR_,caml_equal(residence,_eQ_))} - var - _bXd_= - [0, - function(param) - {function _bXe_(param){throw Runtime_ocaml_Runtime[2]} - function _bXf_(param){return 0} - function _bXg_(param) - {function _bY$_(param) - {var - _bZc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$18), - _bZd_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - return caml_call2(Runtime_ocaml_Runtime[83],_bZd_,_bZc_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_5728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$19)} - function _bZa_(param) - {var - _bZb_=caml_equal(residence,_eS_), - avait_enfant_a_charge_avant_1e$0= - _bZb_?avait_enfant_a_charge_avant_1e:_bZb_; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _eT_, - avait_enfant_a_charge_avant_1e$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_eU_,[0],_bZa_,_bY$_)} - function _bXh_(param) - {function _bY0_(param) - {var - _bY8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$20), - _bY9_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bY9_,_bY8_)) - {var _bY__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bY__)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$21)} - function _bY1_(param) - {var _bY2_=caml_equal(residence,_eV_); - if(_bY2_) - {var - _bY3_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bY4_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bY3_); - if(_bY4_) - var - _bY5_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _bY6_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bY5_), - _bY7_=_bY6_?1 - avait_enfant_a_charge_avant_1e:_bY6_; - else - var _bY7_=_bY4_} - else - var _bY7_=_bY2_; - return caml_call2(Runtime_ocaml_Runtime[29],_eW_,_bY7_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_eX_,[0],_bY1_,_bY0_)} - function _bXi_(param) - {function _bYP_(param) - {var - _bYX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$22), - _bYY_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bYY_,_bYX_)) - {var _bYZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYZ_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$23)} - function _bYQ_(param) - {var _bYR_=caml_equal(residence,_eY_); - if(_bYR_) - {var - _bYS_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _bYT_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYS_); - if(_bYT_) - var - _bYU_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _bYV_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYU_), - _bYW_=_bYV_?1 - avait_enfant_a_charge_avant_1e:_bYV_; - else - var _bYW_=_bYT_} - else - var _bYW_=_bYR_; - return caml_call2(Runtime_ocaml_Runtime[29],_eZ_,_bYW_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_e0_,[0],_bYQ_,_bYP_)} - function _bXj_(param) - {function _bYE_(param) - {var - _bYM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$24), - _bYN_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bYN_,_bYM_)) - {var _bYO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYO_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$25)} - function _bYF_(param) - {var _bYG_=caml_equal(residence,_e1_); - if(_bYG_) - {var - _bYH_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _bYI_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYH_); - if(_bYI_) - var - _bYJ_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31), - _bYK_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYJ_), - _bYL_=_bYK_?1 - avait_enfant_a_charge_avant_1e:_bYK_; - else - var _bYL_=_bYI_} - else - var _bYL_=_bYG_; - return caml_call2(Runtime_ocaml_Runtime[29],_e2_,_bYL_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_e3_,[0],_bYF_,_bYE_)} - function _bXk_(param) - {function _bYt_(param) - {var - _bYB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$26), - _bYC_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bYC_,_bYB_)) - {var _bYD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYD_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$27)} - function _bYu_(param) - {var _bYv_=caml_equal(residence,_e4_); - if(_bYv_) - {var - _bYw_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1), - _bYx_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYw_); - if(_bYx_) - var - _bYy_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _bYz_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYy_), - _bYA_=_bYz_?1 - avait_enfant_a_charge_avant_1e:_bYz_; - else - var _bYA_=_bYx_} - else - var _bYA_=_bYv_; - return caml_call2(Runtime_ocaml_Runtime[29],_e5_,_bYA_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_e6_,[0],_bYu_,_bYt_)} - function _bXl_(param) - {function _bYi_(param) - {var - _bYq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$28), - _bYr_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bYr_,_bYq_)) - {var _bYs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYs_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$29)} - function _bYj_(param) - {var _bYk_=caml_equal(residence,_e7_); - if(_bYk_) - {var - _bYl_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1), - _bYm_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYl_); - if(_bYm_) - var - _bYn_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31), - _bYo_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYn_), - _bYp_=_bYo_?1 - avait_enfant_a_charge_avant_1e:_bYo_; - else - var _bYp_=_bYm_} - else - var _bYp_=_bYk_; - return caml_call2(Runtime_ocaml_Runtime[29],_e8_,_bYp_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_e9_,[0],_bYj_,_bYi_)} - function _bXm_(param) - {function _bX9_(param) - {var - _bYf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$30), - _bYg_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bYg_,_bYf_)) - {var _bYh_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYh_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$31)} - function _bX__(param) - {var _bX$_=caml_equal(residence,_e__); - if(_bX$_) - {var - _bYa_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1), - _bYb_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYa_); - if(_bYb_) - var - _bYc_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31), - _bYd_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYc_), - _bYe_=_bYd_?1 - avait_enfant_a_charge_avant_1e:_bYd_; - else - var _bYe_=_bYb_} - else - var _bYe_=_bX$_; - return caml_call2(Runtime_ocaml_Runtime[29],_e$_,_bYe_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fa_,[0],_bX__,_bX9_)} - function _bXn_(param) - {function _bXY_(param) - {var - _bX6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$32), - _bX7_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bX7_,_bX6_)) - {var _bX8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bX8_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$33)} - function _bXZ_(param) - {var _bX0_=caml_equal(residence,_fb_); - if(_bX0_) - {var - _bX1_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1), - _bX2_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bX1_); - if(_bX2_) - var - _bX3_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31), - _bX4_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bX3_), - _bX5_=_bX4_?1 - avait_enfant_a_charge_avant_1e:_bX4_; - else - var _bX5_=_bX2_} - else - var _bX5_=_bX0_; - return caml_call2(Runtime_ocaml_Runtime[29],_fc_,_bX5_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fd_,[0],_bXZ_,_bXY_)} - function _bXo_(param) - {function _bXN_(param) - {var - _bXV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$34), - _bXW_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bXW_,_bXV_)) - {var _bXX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXX_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$35)} - function _bXO_(param) - {var _bXP_=caml_equal(residence,_fe_); - if(_bXP_) - {var - _bXQ_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1), - _bXR_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXQ_); - if(_bXR_) - var - _bXS_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31), - _bXT_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXS_), - _bXU_=_bXT_?1 - avait_enfant_a_charge_avant_1e:_bXT_; - else - var _bXU_=_bXR_} - else - var _bXU_=_bXP_; - return caml_call2(Runtime_ocaml_Runtime[29],_ff_,_bXU_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fg_,[0],_bXO_,_bXN_)} - function _bXp_(param) - {function _bXC_(param) - {var - _bXK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$36), - _bXL_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bXL_,_bXK_)) - {var _bXM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXM_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$37)} - function _bXD_(param) - {var _bXE_=caml_equal(residence,_fh_); - if(_bXE_) - {var - _bXF_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1), - _bXG_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXF_); - if(_bXG_) - var - _bXH_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bXI_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXH_), - _bXJ_=_bXI_?1 - avait_enfant_a_charge_avant_1e:_bXI_; - else - var _bXJ_=_bXG_} - else - var _bXJ_=_bXE_; - return caml_call2(Runtime_ocaml_Runtime[29],_fi_,_bXJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fj_,[0],_bXD_,_bXC_)} - var - _bXq_= - [0, - function(param) - {function _bXr_(param) - {var - _bXz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$38), - _bXA_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bXA_,_bXz_)) - {var _bXB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXB_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$39)} - function _bXs_(param) - {var _bXt_=caml_equal(residence,_fk_); - if(_bXt_) - {var - _bXu_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1), - _bXv_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXu_); - if(_bXv_) - var - _bXw_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bXx_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXw_), - _bXy_=_bXx_?1 - avait_enfant_a_charge_avant_1e:_bXx_; - else - var _bXy_=_bXv_} - else - var _bXy_=_bXt_; - return caml_call2(Runtime_ocaml_Runtime[29],_fl_,_bXy_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fm_,[0],_bXs_,_bXr_)}, - _bXp_, - _bXo_, - _bXn_, - _bXm_, - _bXl_, - _bXk_, - _bXj_, - _bXi_, - _bXh_, - _bXg_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fn_,_bXq_,_bXf_,_bXe_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fo_,_bXd_,_bXc_,_bXb_)}, - _bPn_], - _bPp_=caml_call4(Runtime_ocaml_Runtime[62],_fp_,_bPo_,_bPm_,_bPl_)} - catch(_bXa_) - {_bXa_ = caml_wrap_exception(_bXa_); - if(_bXa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_eM_]; - throw _bXa_} - var - montant_initial_base_premier_e= - caml_call3 - (Runtime_ocaml_Runtime[28],_fq_,Runtime_ocaml_Runtime[13],_bPp_); - try - {var - _bPq_=function(param){return 0}, - _bPr_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fs_,1)}, - _bPs_= - [0, - function(param) - {function _bWR_(param){return 1} - function _bWS_(param) - {var - _bW9_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$10), - _bW__= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bW$_=caml_call2(Runtime_ocaml_Runtime[81],_bW__,_bW9_); - return caml_call2(Runtime_ocaml_Runtime[29],_ft_,_bW$_)} - var - _bWT_= - [0, - function(param) - {function _bWU_(param){throw Runtime_ocaml_Runtime[2]} - function _bWV_(param){return 0} - var - _bWW_= - [0, - function(param) - {function _bWX_(param){return 1} - function _bWY_(param) - {if(prestations_familiales_dot_reg) - var - _bW6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$4), - _bW7_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bW8_=caml_call2(Runtime_ocaml_Runtime[81],_bW7_,_bW6_); - else - var _bW8_=prestations_familiales_dot_reg; - return caml_call2(Runtime_ocaml_Runtime[29],_fu_,_bW8_)} - var - _bWZ_= - [0, - function(param) - {function _bW0_(param){return 1} - function _bW1_(param) - {var _bW2_=caml_equal(residence,_fv_); - if(_bW2_) - var - _bW3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$5), - _bW4_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bW5_=caml_call2(Runtime_ocaml_Runtime[81],_bW4_,_bW3_); - else - var _bW5_=_bW2_; - return caml_call2(Runtime_ocaml_Runtime[29],_fw_,_bW5_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fx_,[0],_bW1_,_bW0_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fy_,_bWZ_,_bWY_,_bWX_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fz_,_bWW_,_bWV_,_bWU_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fA_,_bWT_,_bWS_,_bWR_)}], - _bPt_=caml_call4(Runtime_ocaml_Runtime[62],_fB_,_bPs_,_bPr_,_bPq_)} - catch(_bWQ_) - {_bWQ_ = caml_wrap_exception(_bWQ_); - if(_bWQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_fr_]; - throw _bWQ_} - var - droit_ouvert_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_fC_,Runtime_ocaml_Runtime[12],_bPt_); - function _bPu_(param) - {try - {var - _bWq_=function(param){return 0}, - _bWr_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_fE_,1)}, - _bWs_= - [0, - function(param$0) - {function _bWv_(param){return 1} - function _bWw_(param$0) - {var - _bWH_= - caml_call3 - (Runtime_ocaml_Runtime[28],_fF_,embed_enfant,param), - _bWI_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_fG_,est_enfant_le_plus_age), - _bWH_), - _bWJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _fH_, - Runtime_ocaml_Runtime[12], - _bWI_), - _bWK_=1 - caml_call2(Runtime_ocaml_Runtime[27],_fI_,_bWJ_); - if(_bWK_) - var - _bWL_= - caml_call3 - (Runtime_ocaml_Runtime[28],_fJ_,embed_enfant,param), - _bWM_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_fK_,age_minimum_alinea_1_l521_3), - _bWL_), - _bWN_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _fL_, - Runtime_ocaml_Runtime[14], - _bWM_), - _bWO_=caml_call2(Runtime_ocaml_Runtime[27],_fM_,_bWN_), - _bWP_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bWO_); - else - var _bWP_=_bWK_; - return caml_call2(Runtime_ocaml_Runtime[29],_fN_,_bWP_)} - var - _bWx_= - [0, - function(param$0) - {function _bWy_(param){return 1} - function _bWz_(param$0) - {var - _bWA_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bWB_= - caml_call2 - (Runtime_ocaml_Runtime[81], - _bWA_, - nombre_enfants_alinea_2_l521_3); - if(_bWB_) - var - _bWC_= - caml_call3 - (Runtime_ocaml_Runtime[28],_fO_,embed_enfant,param), - _bWD_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_fP_,age_minimum_alinea_1_l521_3), - _bWC_), - _bWE_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _fQ_, - Runtime_ocaml_Runtime[14], - _bWD_), - _bWF_=caml_call2(Runtime_ocaml_Runtime[27],_fR_,_bWE_), - _bWG_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bWF_); - else - var _bWG_=_bWB_; - return caml_call2(Runtime_ocaml_Runtime[29],_fS_,_bWG_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_fT_,[0],_bWz_,_bWy_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_fU_,_bWx_,_bWw_,_bWv_)}], - _bWt_=caml_call4(Runtime_ocaml_Runtime[62],_fV_,_bWs_,_bWr_,_bWq_); - return _bWt_} - catch(_bWu_) - {_bWu_ = caml_wrap_exception(_bWu_); - if(_bWu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_fD_]; - throw _bWu_}} - var - droit_ouvert_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_fW_,Runtime_ocaml_Runtime[10],_bPu_); - function _bPv_(param) - {try - {var - _bVR_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)}, - _bVS_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_fY_,1)}, - _bVT_= - [0, - function(param$0) - {function _bVW_(param){throw Runtime_ocaml_Runtime[2]} - function _bVX_(param){return 0} - var - _bVY_= - [0, - function(param$0) - {function _bVZ_(param$0) - {var - _bWj_=caml_call1(Runtime_ocaml_Runtime[39],cst_12), - _bWk_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$6), - _bWl_=caml_call2(Runtime_ocaml_Runtime[89],_bWk_,_bWj_), - _bWm_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$0), - _bWn_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWm_), - _bWo_= - caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bWn_), - _bWp_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bWo_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[65],_bWp_,_bWl_)} - function _bV0_(param$0) - {var - _bWe_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3); - if(_bWe_) - var - _bWf_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1), - _bWg_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWf_), - _bWh_= - caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bWg_), - _bWi_= - caml_call2 - (Runtime_ocaml_Runtime[71],ressources_menage,_bWh_); - else - var _bWi_=_bWe_; - return caml_call2(Runtime_ocaml_Runtime[29],_fZ_,_bWi_)} - var - _bV1_= - [0, - function(param$0) - {function _bV2_(param$0) - {var - _bV9_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$2), - _bV__=caml_call1(Runtime_ocaml_Runtime[39],cst_1$7), - _bV$_=caml_call2(Runtime_ocaml_Runtime[89],_bV__,_bV9_), - _bWa_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$3), - _bWb_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWa_), - _bWc_= - caml_call2 - (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bWb_), - _bWd_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bWc_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[65],_bWd_,_bV$_)} - function _bV3_(param$0) - {var - _bV4_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - if(_bV4_) - var - _bV5_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4), - _bV6_=caml_call2(Runtime_ocaml_Runtime[65],param,_bV5_), - _bV7_= - caml_call2 - (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bV6_), - _bV8_= - caml_call2 - (Runtime_ocaml_Runtime[71],ressources_menage,_bV7_); - else - var _bV8_=_bV4_; - return caml_call2(Runtime_ocaml_Runtime[29],_f0_,_bV8_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_f1_,[0],_bV3_,_bV2_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_f2_,_bV1_,_bV0_,_bVZ_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_f3_,_bVY_,_bVX_,_bVW_)}], - _bVU_=caml_call4(Runtime_ocaml_Runtime[62],_f4_,_bVT_,_bVS_,_bVR_); - return _bVU_} - catch(_bVV_) - {_bVV_ = caml_wrap_exception(_bVV_); - if(_bVV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_fX_]; - throw _bVV_}} - var - complement_degressif= - caml_call3 - (Runtime_ocaml_Runtime[28],_f5_,Runtime_ocaml_Runtime[10],_bPv_); - try - {var - _bPw_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bPx_=function(param){return 0}, - _bPy_= - function(param) - {function _bVN_(param) - {var _bVQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_05059); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVQ_)} - function _bVO_(param) - {var - _bVP_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_f7_,_bVP_)} - return caml_call4(Runtime_ocaml_Runtime[62],_f8_,[0],_bVO_,_bVN_)}, - _bPz_= - function(param) - {function _bVI_(param) - {var _bVM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_10117); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVM_)} - function _bVJ_(param) - {var - _bVK_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3), - _bVL_= - _bVK_ - ?caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_i_d521_3) - :_bVK_; - return caml_call2(Runtime_ocaml_Runtime[29],_f9_,_bVL_)} - return caml_call4(Runtime_ocaml_Runtime[62],_f__,[0],_bVJ_,_bVI_)}, - _bPA_= - [0, - function(param) - {function _bVE_(param) - {var _bVH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_20234); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVH_)} - function _bVF_(param) - {var - _bVG_= - caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_f$_,_bVG_)} - return caml_call4(Runtime_ocaml_Runtime[62],_ga_,[0],_bVF_,_bVE_)}, - _bPz_, - _bPy_], - _bPB_=caml_call4(Runtime_ocaml_Runtime[62],_gb_,_bPA_,_bPx_,_bPw_)} - catch(_bVD_) - {_bVD_ = caml_wrap_exception(_bVD_); - if(_bVD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_f6_]; - throw _bVD_} - var - montant_verse_forfaitaire_par_= - caml_call3 - (Runtime_ocaml_Runtime[28],_gc_,Runtime_ocaml_Runtime[13],_bPB_); - try - {var - _bPC_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bPD_=function(param){return 0}, - _bPE_= - function(param) - {function _bVs_(param) - {var - _bVv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$11), - _bVw_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bVw_,_bVv_)) - {var - _bVx_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), - _bVy_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bVz_=caml_call2(Runtime_ocaml_Runtime[76],_bVy_,_bVx_), - _bVA_=caml_call1(Runtime_ocaml_Runtime[41],_bVz_), - _bVB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), - _bVC_= - caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVB_); - return caml_call2(Runtime_ocaml_Runtime[65],_bVC_,_bVA_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)} - function _bVt_(param) - {var - _bVu_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_ge_,_bVu_)} - return caml_call4(Runtime_ocaml_Runtime[62],_gf_,[0],_bVt_,_bVs_)}, - _bPF_= - function(param) - {function _bVg_(param) - {var - _bVk_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$13), - _bVl_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bVl_,_bVk_)) - {var - _bVm_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), - _bVn_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bVo_=caml_call2(Runtime_ocaml_Runtime[76],_bVn_,_bVm_), - _bVp_=caml_call1(Runtime_ocaml_Runtime[41],_bVo_), - _bVq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), - _bVr_= - caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVq_); - return caml_call2(Runtime_ocaml_Runtime[65],_bVr_,_bVp_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)} - function _bVh_(param) - {var - _bVi_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3), - _bVj_= - _bVi_ - ?caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_i_d521_3) - :_bVi_; - return caml_call2(Runtime_ocaml_Runtime[29],_gg_,_bVj_)} - return caml_call4(Runtime_ocaml_Runtime[62],_gh_,[0],_bVh_,_bVg_)}, - _bPG_= - [0, - function(param) - {function _bU7_(param) - {var - _bU__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$15), - _bU$_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bU$_,_bU__)) - {var - _bVa_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), - _bVb_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bVc_=caml_call2(Runtime_ocaml_Runtime[76],_bVb_,_bVa_), - _bVd_=caml_call1(Runtime_ocaml_Runtime[41],_bVc_), - _bVe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), - _bVf_= - caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVe_); - return caml_call2(Runtime_ocaml_Runtime[65],_bVf_,_bVd_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)} - function _bU8_(param) - {var - _bU9_= - caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gi_,_bU9_)} - return caml_call4(Runtime_ocaml_Runtime[62],_gj_,[0],_bU8_,_bU7_)}, - _bPF_, - _bPE_], - _bPH_=caml_call4(Runtime_ocaml_Runtime[62],_gk_,_bPG_,_bPD_,_bPC_)} - catch(_bU6_) - {_bU6_ = caml_wrap_exception(_bU6_); - if(_bU6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gd_]; - throw _bU6_} - var - montant_initial_base_troisieme$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_gl_,Runtime_ocaml_Runtime[13],_bPH_); - try - {var - _bPI_= - function(param) - {function _bUI_(param){throw Runtime_ocaml_Runtime[2]} - function _bUJ_(param){return 0} - function _bUK_(param) - {function _bU0_(param) - {var - _bU3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$8), - _bU4_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bU4_,_bU3_)) - {var _bU5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bU5_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)} - function _bU1_(param) - {var - _bU2_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gn_,_bU2_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_go_,[0],_bU1_,_bU0_)} - function _bUL_(param) - {function _bUT_(param) - {var - _bUX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$9), - _bUY_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUY_,_bUX_)) - {var _bUZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUZ_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)} - function _bUU_(param) - {var - _bUV_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3), - _bUW_= - _bUV_ - ?caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_i_d521_3) - :_bUV_; - return caml_call2(Runtime_ocaml_Runtime[29],_gp_,_bUW_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gq_,[0],_bUU_,_bUT_)} - var - _bUM_= - [0, - function(param) - {function _bUN_(param) - {var - _bUQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$10), - _bUR_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUR_,_bUQ_)) - {var _bUS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUS_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)} - function _bUO_(param) - {var - _bUP_= - caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gr_,_bUP_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gs_,[0],_bUO_,_bUN_)}, - _bUL_, - _bUK_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_gt_,_bUM_,_bUJ_,_bUI_)}, - _bPJ_=function(param){return 1}, - _bPK_= - [0, - function(param) - {function _bSS_(param) - {var - _bUF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$11), - _bUG_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUG_,_bUF_)) - {var _bUH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUH_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)} - function _bST_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_gv_,caml_equal(residence,_gu_))} - var - _bSU_= - [0, - function(param) - {function _bSV_(param){throw Runtime_ocaml_Runtime[2]} - function _bSW_(param){return 0} - function _bSX_(param) - {function _bUv_(param) - {var - _bUC_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$12), - _bUD_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUD_,_bUC_)) - {var _bUE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUE_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)} - function _bUw_(param) - {var _bUx_=caml_equal(residence,_gw_); - if(_bUx_) - {var - _bUy_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bUz_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUy_); - if(_bUz_) - var - _bUA_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _bUB_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUA_); - else - var _bUB_=_bUz_} - else - var _bUB_=_bUx_; - return caml_call2(Runtime_ocaml_Runtime[29],_gx_,_bUB_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gy_,[0],_bUw_,_bUv_)} - function _bSY_(param) - {function _bUl_(param) - {var - _bUs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$13), - _bUt_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUt_,_bUs_)) - {var _bUu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUu_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)} - function _bUm_(param) - {var _bUn_=caml_equal(residence,_gz_); - if(_bUn_) - {var - _bUo_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _bUp_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUo_); - if(_bUp_) - var - _bUq_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _bUr_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUq_); - else - var _bUr_=_bUp_} - else - var _bUr_=_bUn_; - return caml_call2(Runtime_ocaml_Runtime[29],_gA_,_bUr_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gB_,[0],_bUm_,_bUl_)} - function _bSZ_(param) - {function _bUb_(param) - {var - _bUi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$14), - _bUj_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bUj_,_bUi_)) - {var _bUk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUk_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)} - function _bUc_(param) - {var _bUd_=caml_equal(residence,_gC_); - if(_bUd_) - {var - _bUe_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _bUf_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUe_); - if(_bUf_) - var - _bUg_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31), - _bUh_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUg_); - else - var _bUh_=_bUf_} - else - var _bUh_=_bUd_; - return caml_call2(Runtime_ocaml_Runtime[29],_gD_,_bUh_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gE_,[0],_bUc_,_bUb_)} - function _bS0_(param) - {function _bT3_(param) - {var - _bT__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$15), - _bT$_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bT$_,_bT__)) - {var _bUa_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUa_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)} - function _bT4_(param) - {var _bT5_=caml_equal(residence,_gF_); - if(_bT5_) - {var - _bT6_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1), - _bT7_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bT6_); - if(_bT7_) - var - _bT8_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _bT9_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bT8_); - else - var _bT9_=_bT7_} - else - var _bT9_=_bT5_; - return caml_call2(Runtime_ocaml_Runtime[29],_gG_,_bT9_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gH_,[0],_bT4_,_bT3_)} - function _bS1_(param) - {function _bTT_(param) - {var - _bT0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$16), - _bT1_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bT1_,_bT0_)) - {var _bT2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bT2_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)} - function _bTU_(param) - {var _bTV_=caml_equal(residence,_gI_); - if(_bTV_) - {var - _bTW_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1), - _bTX_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTW_); - if(_bTX_) - var - _bTY_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31), - _bTZ_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTY_); - else - var _bTZ_=_bTX_} - else - var _bTZ_=_bTV_; - return caml_call2(Runtime_ocaml_Runtime[29],_gJ_,_bTZ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gK_,[0],_bTU_,_bTT_)} - function _bS2_(param) - {function _bTJ_(param) - {var - _bTQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$17), - _bTR_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bTR_,_bTQ_)) - {var _bTS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTS_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)} - function _bTK_(param) - {var _bTL_=caml_equal(residence,_gL_); - if(_bTL_) - {var - _bTM_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1), - _bTN_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTM_); - if(_bTN_) - var - _bTO_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31), - _bTP_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTO_); - else - var _bTP_=_bTN_} - else - var _bTP_=_bTL_; - return caml_call2(Runtime_ocaml_Runtime[29],_gM_,_bTP_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gN_,[0],_bTK_,_bTJ_)} - function _bS3_(param) - {function _bTz_(param) - {var - _bTG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$18), - _bTH_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bTH_,_bTG_)) - {var _bTI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTI_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)} - function _bTA_(param) - {var _bTB_=caml_equal(residence,_gO_); - if(_bTB_) - {var - _bTC_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1), - _bTD_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTC_); - if(_bTD_) - var - _bTE_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31), - _bTF_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTE_); - else - var _bTF_=_bTD_} - else - var _bTF_=_bTB_; - return caml_call2(Runtime_ocaml_Runtime[29],_gP_,_bTF_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gQ_,[0],_bTA_,_bTz_)} - function _bS4_(param) - {function _bTp_(param) - {var - _bTw_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$19), - _bTx_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bTx_,_bTw_)) - {var _bTy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTy_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)} - function _bTq_(param) - {var _bTr_=caml_equal(residence,_gR_); - if(_bTr_) - {var - _bTs_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1), - _bTt_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTs_); - if(_bTt_) - var - _bTu_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31), - _bTv_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTu_); - else - var _bTv_=_bTt_} - else - var _bTv_=_bTr_; - return caml_call2(Runtime_ocaml_Runtime[29],_gS_,_bTv_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gT_,[0],_bTq_,_bTp_)} - function _bS5_(param) - {function _bTf_(param) - {var - _bTm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$20), - _bTn_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bTn_,_bTm_)) - {var _bTo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTo_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)} - function _bTg_(param) - {var _bTh_=caml_equal(residence,_gU_); - if(_bTh_) - {var - _bTi_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1), - _bTj_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTi_); - if(_bTj_) - var - _bTk_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bTl_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTk_); - else - var _bTl_=_bTj_} - else - var _bTl_=_bTh_; - return caml_call2(Runtime_ocaml_Runtime[29],_gV_,_bTl_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gW_,[0],_bTg_,_bTf_)} - var - _bS6_= - [0, - function(param) - {function _bS7_(param) - {var - _bTc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$21), - _bTd_= - caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bTd_,_bTc_)) - {var _bTe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTe_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$57)} - function _bS8_(param) - {var _bS9_=caml_equal(residence,_gX_); - if(_bS9_) - {var - _bS__=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1), - _bS$_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bS__); - if(_bS$_) - var - _bTa_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bTb_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTa_); - else - var _bTb_=_bS$_} - else - var _bTb_=_bS9_; - return caml_call2(Runtime_ocaml_Runtime[29],_gY_,_bTb_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_gZ_,[0],_bS8_,_bS7_)}, - _bS5_, - _bS4_, - _bS3_, - _bS2_, - _bS1_, - _bS0_, - _bSZ_, - _bSY_, - _bSX_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_g0_,_bS6_,_bSW_,_bSV_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_g1_,_bSU_,_bST_,_bSS_)}], - _bPL_=caml_call4(Runtime_ocaml_Runtime[62],_g2_,_bPK_,_bPJ_,_bPI_)} - catch(_bSR_) - {_bSR_ = caml_wrap_exception(_bSR_); - if(_bSR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gm_]; - throw _bSR_} - var - montant_initial_base_deuxieme_= - caml_call3 - (Runtime_ocaml_Runtime[28],_g3_,Runtime_ocaml_Runtime[13],_bPL_); - try - {var - _bPM_= - function(param) - {return caml_equal - (nombre_total_enfants, - caml_call1(Runtime_ocaml_Runtime[39],cst_0$58)) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0$59) - :caml_call2 - (Runtime_ocaml_Runtime[89], - nombre_moyen_enfants, - nombre_total_enfants)}, - _bPN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_g5_,1)}, - _bPO_=caml_call4(Runtime_ocaml_Runtime[62],_g6_,[0],_bPN_,_bPM_)} - catch(_bSQ_) - {_bSQ_ = caml_wrap_exception(_bSQ_); - if(_bSQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_g4_]; - throw _bSQ_} - var - rapport_enfants_total_moyen= - caml_call3 - (Runtime_ocaml_Runtime[28],_g7_,Runtime_ocaml_Runtime[15],_bPO_); - function _bPP_(param) - {try - {var - _bSd_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bSe_=function(param){return 0}, - _bSf_= - function(param$0) - {function _bSK_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$60)} - function _bSL_(param$0) - {var - _bSM_= - caml_call3 - (Runtime_ocaml_Runtime[28],_g9_,embed_enfant,param), - _bSN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_g__,droit_ouvert_majoration), - _bSM_), - _bSO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _g$_, - Runtime_ocaml_Runtime[12], - _bSN_), - _bSP_=1 - caml_call2(Runtime_ocaml_Runtime[27],_ha_,_bSO_); - return caml_call2(Runtime_ocaml_Runtime[29],_hb_,_bSP_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_hc_,[0],_bSL_,_bSK_)}, - _bSg_= - function(param$0) - {function _bSC_(param) - {var _bSJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSJ_)} - function _bSD_(param$0) - {var - _bSE_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - if(_bSE_) - var - _bSF_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hd_,embed_enfant,param), - _bSG_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_he_,droit_ouvert_majoration), - _bSF_), - _bSH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hf_, - Runtime_ocaml_Runtime[12], - _bSG_), - _bSI_=caml_call2(Runtime_ocaml_Runtime[27],_hg_,_bSH_); - else - var _bSI_=_bSE_; - return caml_call2(Runtime_ocaml_Runtime[29],_hh_,_bSI_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_hi_,[0],_bSD_,_bSC_)}, - _bSh_= - function(param$0) - {function _bSt_(param) - {var _bSB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSB_)} - function _bSu_(param$0) - {var - _bSv_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3), - _bSw_= - _bSv_ - ?caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_i_d521_3) - :_bSv_; - if(_bSw_) - var - _bSx_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hj_,embed_enfant,param), - _bSy_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hk_,droit_ouvert_majoration), - _bSx_), - _bSz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hl_, - Runtime_ocaml_Runtime[12], - _bSy_), - _bSA_=caml_call2(Runtime_ocaml_Runtime[27],_hm_,_bSz_); - else - var _bSA_=_bSw_; - return caml_call2(Runtime_ocaml_Runtime[29],_hn_,_bSA_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ho_,[0],_bSu_,_bSt_)}, - _bSi_= - [0, - function(param$0) - {function _bSl_(param) - {var _bSs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$1); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSs_)} - function _bSm_(param$0) - {var - _bSn_= - caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage, - plafond_i_d521_3); - if(_bSn_) - var - _bSo_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hp_,embed_enfant,param), - _bSp_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hq_,droit_ouvert_majoration), - _bSo_), - _bSq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hr_, - Runtime_ocaml_Runtime[12], - _bSp_), - _bSr_=caml_call2(Runtime_ocaml_Runtime[27],_hs_,_bSq_); - else - var _bSr_=_bSn_; - return caml_call2(Runtime_ocaml_Runtime[29],_ht_,_bSr_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_hu_,[0],_bSm_,_bSl_)}, - _bSh_, - _bSg_, - _bSf_], - _bSj_=caml_call4(Runtime_ocaml_Runtime[62],_hv_,_bSi_,_bSe_,_bSd_); - return _bSj_} - catch(_bSk_) - {_bSk_ = caml_wrap_exception(_bSk_); - if(_bSk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_g8_]; - throw _bSk_}} - var - montant_initial_metropole_majo= - caml_call3 - (Runtime_ocaml_Runtime[28],_hw_,Runtime_ocaml_Runtime[10],_bPP_); - try - {var - _bPQ_= - function(param) - {var _bR7_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$61); - function _bR8_(acc,enfant) - {var - _bR$_= - caml_call3(Runtime_ocaml_Runtime[28],_hy_,embed_enfant,enfant), - _bSa_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hz_,droit_ouvert_forfaitaire), - _bR$_), - _bSb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hA_, - Runtime_ocaml_Runtime[12], - _bSa_); - if(caml_call2(Runtime_ocaml_Runtime[27],_hB_,_bSb_)) - {var _bSc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$22); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_bSc_)} - return acc} - var - _bR9_=caml_call3(Stdlib_Array[17],_bR8_,_bR7_,enfants_a_charge), - _bR__=caml_call1(Runtime_ocaml_Runtime[41],_bR9_); - return caml_call2 - (Runtime_ocaml_Runtime[65], - montant_verse_forfaitaire_par_, - _bR__)}, - _bPR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_hC_,1)}, - _bPS_=caml_call4(Runtime_ocaml_Runtime[62],_hD_,[0],_bPR_,_bPQ_)} - catch(_bR6_) - {_bR6_ = caml_wrap_exception(_bR6_); - if(_bR6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hx_]; - throw _bR6_} - var - montant_verse_forfaitaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_hE_,Runtime_ocaml_Runtime[13],_bPS_); - try - {var - _bPT_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[67], - montant_initial_base_deuxieme_, - montant_initial_base_troisieme$0)}, - _bPU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_hG_,1)}, - _bPV_= - [0, - function(param) - {function _bRU_(param){throw Runtime_ocaml_Runtime[2]} - function _bRV_(param){return 0} - function _bRW_(param) - {function _bR2_(param) - {var - _bR4_= - caml_call2 - (Runtime_ocaml_Runtime[67], - montant_initial_base_premier_e, - montant_initial_base_deuxieme_), - _bR5_= - caml_call2 - (Runtime_ocaml_Runtime[67], - _bR4_, - montant_initial_base_troisieme); - return caml_call2 - (Runtime_ocaml_Runtime[67], - _bR5_, - montant_initial_base_quatrieme)} - function _bR3_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_hI_,caml_equal(residence,_hH_))} - return caml_call4 - (Runtime_ocaml_Runtime[62],_hJ_,[0],_bR3_,_bR2_)} - var - _bRX_= - [0, - function(param) - {function _bRY_(param){return montant_initial_base_premier_e} - function _bRZ_(param) - {if(prestations_familiales_dot_reg) - var - _bR0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$23), - _bR1_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bR0_); - else - var _bR1_=prestations_familiales_dot_reg; - return caml_call2(Runtime_ocaml_Runtime[29],_hK_,_bR1_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_hL_,[0],_bRZ_,_bRY_)}, - _bRW_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_hM_,_bRX_,_bRV_,_bRU_)}], - _bPW_=caml_call4(Runtime_ocaml_Runtime[62],_hN_,_bPV_,_bPU_,_bPT_)} - catch(_bRT_) - {_bRT_ = caml_wrap_exception(_bRT_); - if(_bRT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hF_]; - throw _bRT_} - var - montant_initial_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_hO_,Runtime_ocaml_Runtime[13],_bPW_); - function _bPX_(param) - {try - {var - _bRj_= - function(param$0) - {var - _bRQ_= - caml_call3(Runtime_ocaml_Runtime[28],_hQ_,embed_enfant,param), - _bRR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _hR_, - montant_initial_metropole_majo), - _bRQ_), - _bRS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hS_, - Runtime_ocaml_Runtime[13], - _bRR_); - return caml_call2(Runtime_ocaml_Runtime[27],_hT_,_bRS_)}, - _bRk_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_hU_,1)}, - _bRl_= - [0, - function(param$0) - {function _bRo_(param){throw Runtime_ocaml_Runtime[2]} - function _bRp_(param){return 0} - function _bRq_(param$0) - {function _bRF_(param) - {var _bRP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0567); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bRP_)} - function _bRG_(param$0) - {var - _bRH_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hV_,embed_enfant,param), - _bRI_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hW_,droit_ouvert_majoration), - _bRH_), - _bRJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hX_, - Runtime_ocaml_Runtime[12], - _bRI_), - _bRK_=caml_call2(Runtime_ocaml_Runtime[27],_hY_,_bRJ_); - if(_bRK_) - if(prestations_familiales_dot_reg) - {var - _bRL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$24), - _bRM_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bRL_); - if(_bRM_) - var - _bRN_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$0), - _bRO_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bRN_); - else - var _bRO_=_bRM_} - else - var _bRO_=prestations_familiales_dot_reg; - else - var _bRO_=_bRK_; - return caml_call2(Runtime_ocaml_Runtime[29],_hZ_,_bRO_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_h0_,[0],_bRG_,_bRF_)} - var - _bRr_= - [0, - function(param$0) - {function _bRs_(param) - {var _bRE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0369); - return caml_call2 - (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bRE_)} - function _bRt_(param$0) - {var - _bRu_= - caml_call3 - (Runtime_ocaml_Runtime[28],_h1_,embed_enfant,param), - _bRv_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_h2_,droit_ouvert_majoration), - _bRu_), - _bRw_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _h3_, - Runtime_ocaml_Runtime[12], - _bRv_), - _bRx_=caml_call2(Runtime_ocaml_Runtime[27],_h4_,_bRw_); - if(_bRx_) - if(prestations_familiales_dot_reg) - {var - _bRy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$25), - _bRz_= - caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_), - _bRy_); - if(_bRz_) - {var - _bRA_=caml_call1(Runtime_ocaml_Runtime[46],cst_11), - _bRB_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bRA_); - if(_bRB_) - var - _bRC_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$1), - _bRD_=caml_call2(Runtime_ocaml_Runtime[84],param[5],_bRC_); - else - var _bRD_=_bRB_} - else - var _bRD_=_bRz_} - else - var _bRD_=prestations_familiales_dot_reg; - else - var _bRD_=_bRx_; - return caml_call2(Runtime_ocaml_Runtime[29],_h5_,_bRD_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_h6_,[0],_bRt_,_bRs_)}, - _bRq_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_h7_,_bRr_,_bRp_,_bRo_)}], - _bRm_=caml_call4(Runtime_ocaml_Runtime[62],_h8_,_bRl_,_bRk_,_bRj_); - return _bRm_} - catch(_bRn_) - {_bRn_ = caml_wrap_exception(_bRn_); - if(_bRn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hP_]; - throw _bRn_}} - var - montant_initial_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_h9_,Runtime_ocaml_Runtime[10],_bPX_); - try - {var - _bPY_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$62)}, - _bPZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h$_,1)}, - _bP0_= - [0, - function(param) - {function _bQP_(param){throw Runtime_ocaml_Runtime[2]} - function _bQQ_(param){return 0} - var - _bQR_= - [0, - function(param) - {function _bQS_(param) - {var - _bRc_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$5), - _bRd_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$26), - _bRe_=caml_call2(Runtime_ocaml_Runtime[89],_bRd_,_bRc_), - _bRf_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$6), - _bRg_= - caml_call2 - (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bRf_), - _bRh_= - caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bRg_), - _bRi_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bRh_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[65],_bRi_,_bRe_)} - function _bQT_(param) - {var - _bQ9_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_d521_3); - if(_bQ9_) - var - _bQ__=caml_call1(Runtime_ocaml_Runtime[39],cst_12$7), - _bQ$_= - caml_call2 - (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQ__), - _bRa_= - caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bQ$_), - _bRb_= - caml_call2 - (Runtime_ocaml_Runtime[71],ressources_menage,_bRa_); - else - var _bRb_=_bQ9_; - return caml_call2(Runtime_ocaml_Runtime[29],_ia_,_bRb_)} - var - _bQU_= - [0, - function(param) - {function _bQV_(param) - {var - _bQ2_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$8), - _bQ3_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$27), - _bQ4_=caml_call2(Runtime_ocaml_Runtime[89],_bQ3_,_bQ2_), - _bQ5_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$9), - _bQ6_= - caml_call2 - (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQ5_), - _bQ7_= - caml_call2 - (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bQ6_), - _bQ8_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bQ7_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[65],_bQ8_,_bQ4_)} - function _bQW_(param) - {var - _bQX_= - caml_call2 - (Runtime_ocaml_Runtime[74], - ressources_menage, - plafond_i_i_d521_3); - if(_bQX_) - var - _bQY_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$10), - _bQZ_= - caml_call2 - (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQY_), - _bQ0_= - caml_call2 - (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bQZ_), - _bQ1_= - caml_call2 - (Runtime_ocaml_Runtime[71],ressources_menage,_bQ0_); - else - var _bQ1_=_bQX_; - return caml_call2(Runtime_ocaml_Runtime[29],_ib_,_bQ1_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ic_,[0],_bQW_,_bQV_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_id_,_bQU_,_bQT_,_bQS_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_ie_,_bQR_,_bQQ_,_bQP_)}], - _bP1_=caml_call4(Runtime_ocaml_Runtime[62],_if_,_bP0_,_bPZ_,_bPY_)} - catch(_bQO_) - {_bQO_ = caml_wrap_exception(_bQO_); - if(_bQO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_h__]; - throw _bQO_} - var - montant_verse_complement_pour_= - caml_call3 - (Runtime_ocaml_Runtime[28],_ig_,Runtime_ocaml_Runtime[13],_bP1_); - try - {var - _bP2_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[65], - montant_initial_base, - rapport_enfants_total_moyen)}, - _bP3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ii_,1)}, - _bP4_=caml_call4(Runtime_ocaml_Runtime[62],_ij_,[0],_bP3_,_bP2_)} - catch(_bQN_) - {_bQN_ = caml_wrap_exception(_bQN_); - if(_bQN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ih_]; - throw _bQN_} - var - montant_avec_garde_alternee_ba= - caml_call3 - (Runtime_ocaml_Runtime[28],_ik_,Runtime_ocaml_Runtime[13],_bP4_); - function _bP5_(param) - {try - {var - _bQB_= - function(param$0) - {var - _bQF_= - caml_call3(Runtime_ocaml_Runtime[28],_im_,embed_enfant,param), - _bQG_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_in_,prise_en_compte), - _bQF_), - _bQH_= - caml_call3 - (Runtime_ocaml_Runtime[28],_io_,embed_prise_en_compte,_bQG_), - match=caml_call2(Runtime_ocaml_Runtime[27],_ip_,_bQH_); - switch(match[0]) - {case 0: - var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$28); - break; - case 1: - var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$0); - break; - default: - var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$63)} - var - _bQJ_= - caml_call3(Runtime_ocaml_Runtime[28],_iq_,embed_enfant,param), - _bQK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_ir_,montant_initial_majoration), - _bQJ_), - _bQL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _is_, - Runtime_ocaml_Runtime[13], - _bQK_), - _bQM_=caml_call2(Runtime_ocaml_Runtime[27],_it_,_bQL_); - return caml_call2(Runtime_ocaml_Runtime[65],_bQM_,_bQI_)}, - _bQC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_iu_,1)}, - _bQD_=caml_call4(Runtime_ocaml_Runtime[62],_iv_,[0],_bQC_,_bQB_); - return _bQD_} - catch(_bQE_) - {_bQE_ = caml_wrap_exception(_bQE_); - if(_bQE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_il_]; - throw _bQE_}} - var - montant_avec_garde_alternee_ma= - caml_call3 - (Runtime_ocaml_Runtime[28],_iw_,Runtime_ocaml_Runtime[10],_bP5_); - try - {var - _bP6_= - function(param) - {return droit_ouvert_base - ?montant_avec_garde_alternee_ba - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)}, - _bP7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iy_,1)}, - _bP8_=caml_call4(Runtime_ocaml_Runtime[62],_iz_,[0],_bP7_,_bP6_)} - catch(_bQA_) - {_bQA_ = caml_wrap_exception(_bQA_); - if(_bQA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ix_]; - throw _bQA_} - var - montant_verse_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_iA_,Runtime_ocaml_Runtime[13],_bP8_); - try - {var - _bP9_= - function(param) - {if(droit_ouvert_base) - {var - _bQu_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$65), - _bQv_= - function(acc,enfant) - {var - _bQw_= - caml_call3 - (Runtime_ocaml_Runtime[28],_iC_,embed_enfant,enfant), - _bQx_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _iD_, - montant_avec_garde_alternee_ma), - _bQw_), - _bQy_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _iE_, - Runtime_ocaml_Runtime[13], - _bQx_), - _bQz_=caml_call2(Runtime_ocaml_Runtime[27],_iF_,_bQy_); - return caml_call2(Runtime_ocaml_Runtime[67],acc,_bQz_)}; - return caml_call3(Stdlib_Array[17],_bQv_,_bQu_,enfants_a_charge)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)}, - _bP__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iG_,1)}, - _bP$_=caml_call4(Runtime_ocaml_Runtime[62],_iH_,[0],_bP__,_bP9_)} - catch(_bQt_) - {_bQt_ = caml_wrap_exception(_bQt_); - if(_bQt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iB_]; - throw _bQt_} - var - montant_verse_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_iI_,Runtime_ocaml_Runtime[13],_bP$_); - try - {var - _bQa_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[67], - montant_verse_base, - montant_verse_majoration)}, - _bQb_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iK_,1)}, - _bQc_=caml_call4(Runtime_ocaml_Runtime[62],_iL_,[0],_bQb_,_bQa_)} - catch(_bQs_) - {_bQs_ = caml_wrap_exception(_bQs_); - if(_bQs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iJ_]; - throw _bQs_} - var - montant_base_complement_pour_b= - caml_call3 - (Runtime_ocaml_Runtime[28],_iM_,Runtime_ocaml_Runtime[13],_bQc_); - try - {var - _bQd_= - function(param) - {if(droit_ouvert_complement) - {var - _bQp_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _iO_, - Runtime_ocaml_Runtime[13], - montant_base_complement_pour_b), - _bQq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_iP_,complement_degressif), - _bQp_), - _bQr_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _iQ_, - Runtime_ocaml_Runtime[13], - _bQq_); - return caml_call2(Runtime_ocaml_Runtime[27],_iR_,_bQr_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$67)}, - _bQe_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iS_,1)}, - _bQf_=caml_call4(Runtime_ocaml_Runtime[62],_iT_,[0],_bQe_,_bQd_)} - catch(_bQo_) - {_bQo_ = caml_wrap_exception(_bQo_); - if(_bQo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iN_]; - throw _bQo_} - var - montant_verse_complement_pour_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_iU_,Runtime_ocaml_Runtime[13],_bQf_); - try - {var - _bQg_= - function(param) - {if(droit_ouvert_base) - {var - _bQl_= - caml_call2 - (Runtime_ocaml_Runtime[67], - montant_verse_base, - montant_verse_majoration), - _bQm_= - caml_call2 - (Runtime_ocaml_Runtime[67],_bQl_,montant_verse_forfaitaire), - _bQn_= - caml_call2 - (Runtime_ocaml_Runtime[67], - _bQm_, - montant_verse_complement_pour_$0); - return caml_call2 - (Runtime_ocaml_Runtime[67], - _bQn_, - montant_verse_complement_pour_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$68)}, - _bQh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iW_,1)}, - _bQi_=caml_call4(Runtime_ocaml_Runtime[62],_iX_,[0],_bQh_,_bQg_)} - catch(_bQk_) - {_bQk_ = caml_wrap_exception(_bQk_); - if(_bQk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iV_]; - throw _bQk_} - var - montant_verse= - caml_call3 - (Runtime_ocaml_Runtime[28],_iY_,Runtime_ocaml_Runtime[13],_bQi_); - if(personne_charge_effective_perm) - var personne_charge_effective_perm$1=personne_charge_effective_perm; - else - var - _bQj_=1 - personne_charge_effective_perm, - personne_charge_effective_perm$1= - _bQj_?personne_charge_effective_perm$0:_bQj_; - if(personne_charge_effective_perm$1)return [0,montant_verse]; - throw [0,Runtime_ocaml_Runtime[3],_iZ_]} - function interface_allocations_familial(interface_allocations_familial) - {var - i_date_courante=interface_allocations_familial[1], - i_enfants=interface_allocations_familial[2], - i_ressources_menage=interface_allocations_familial[3], - i_residence=interface_allocations_familial[4], - i_personne_charge_effective_pe=interface_allocations_familial[5], - i_personne_charge_effective_pe$0=interface_allocations_familial[6], - i_avait_enfant_a_charge_avant_=interface_allocations_familial[7]; - try - {var - _bNq_= - function(param) - {function _bOa_(enfant) - {var - _bOb_=enfant[6], - _bOc_=enfant[5], - _bOd_=enfant[4], - _bOe_= - caml_call2 - (Runtime_ocaml_Runtime[96],i_date_courante,enfant[3]), - _bOf_=caml_call3(Runtime_ocaml_Runtime[56],0,1,1), - _bOg_=caml_call2(Runtime_ocaml_Runtime[95],_bOf_,_bOe_), - _bOh_=caml_call1(Runtime_ocaml_Runtime[54],_bOg_), - _bOi_=enfant[3], - _bOj_=enfant[2], - _bOk_=caml_call3(Runtime_ocaml_Runtime[59],3,0,0), - _bOl_=caml_call2(Runtime_ocaml_Runtime[95],enfant[3],_bOk_); - if(caml_call2(Runtime_ocaml_Runtime[98],_bOl_,i_date_courante)) - var _bOm_=_i1_; - else - var - _bOn_=caml_call3(Runtime_ocaml_Runtime[59],16,0,0), - _bOo_=caml_call2(Runtime_ocaml_Runtime[95],enfant[3],_bOn_), - _bOm_= - caml_call2(Runtime_ocaml_Runtime[98],_bOo_,i_date_courante) - ?_i2_ - :_i3_; - return [0,enfant[1],_bOm_,_bOj_,_bOi_,_bOh_,_bOd_,_bOc_,_bOb_]} - return caml_call2(Stdlib_Array[15],_bOa_,i_enfants)}, - _bNr_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i4_,1)}, - _bNs_=caml_call4(Runtime_ocaml_Runtime[62],_i5_,[0],_bNr_,_bNq_)} - catch(_bN$_) - {_bN$_ = caml_wrap_exception(_bN$_); - if(_bN$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_i0_]; - throw _bN$_} - var - _bNt_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfants_a_charge=caml_call3(Runtime_ocaml_Runtime[28],_i6_,_bNt_,_bNs_); - try - {var - _bNu_=function(param){return 0}, - _bNv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i8_,1)}, - _bNw_= - [0, - function(param) - {function _bN9_(param){return 1} - function _bN__(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _i9_, - i_personne_charge_effective_pe)} - return caml_call4(Runtime_ocaml_Runtime[62],_i__,[0],_bN__,_bN9_)}], - _bNx_=caml_call4(Runtime_ocaml_Runtime[62],_i$_,_bNw_,_bNv_,_bNu_), - allocations_familiales_dot_per= - caml_call3 - (Runtime_ocaml_Runtime[28],_ja_,Runtime_ocaml_Runtime[12],_bNx_)} - catch(_bN8_) - {_bN8_ = caml_wrap_exception(_bN8_); - if(_bN8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_i7_]; - throw _bN8_} - try - {var - _bNy_=function(param){return 0}, - _bNz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jc_,1)}, - _bNA_= - [0, - function(param) - {function _bN6_(param){return 1} - function _bN7_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _jd_, - i_personne_charge_effective_pe$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_je_,[0],_bN7_,_bN6_)}], - _bNB_=caml_call4(Runtime_ocaml_Runtime[62],_jf_,_bNA_,_bNz_,_bNy_), - allocations_familiales_dot_per$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_jg_,Runtime_ocaml_Runtime[12],_bNB_)} - catch(_bN5_) - {_bN5_ = caml_wrap_exception(_bN5_); - if(_bN5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jb_]; - throw _bN5_} - try - {var - _bNC_=function(param){return i_ressources_menage}, - _bND_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ji_,1)}, - _bNE_=caml_call4(Runtime_ocaml_Runtime[62],_jj_,[0],_bND_,_bNC_), - allocations_familiales_dot_res= - caml_call3 - (Runtime_ocaml_Runtime[28],_jk_,Runtime_ocaml_Runtime[13],_bNE_)} - catch(_bN4_) - {_bN4_ = caml_wrap_exception(_bN4_); - if(_bN4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jh_]; - throw _bN4_} - try - {var - _bNF_=function(param){return i_residence}, - _bNG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jm_,1)}, - _bNH_=caml_call4(Runtime_ocaml_Runtime[62],_jn_,[0],_bNG_,_bNF_), - allocations_familiales_dot_res$0= - caml_call3(Runtime_ocaml_Runtime[28],_jo_,embed_collectivite,_bNH_)} - catch(_bN3_) - {_bN3_ = caml_wrap_exception(_bN3_); - if(_bN3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jl_]; - throw _bN3_} - try - {var - _bNI_=function(param){return i_date_courante}, - _bNJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jq_,1)}, - _bNK_=caml_call4(Runtime_ocaml_Runtime[62],_jr_,[0],_bNJ_,_bNI_), - allocations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_js_,Runtime_ocaml_Runtime[16],_bNK_)} - catch(_bN2_) - {_bN2_ = caml_wrap_exception(_bN2_); - if(_bN2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jp_]; - throw _bN2_} - try - {var - _bNL_=function(param){return enfants_a_charge}, - _bNM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ju_,1)}, - _bNN_=caml_call4(Runtime_ocaml_Runtime[62],_jv_,[0],_bNM_,_bNL_), - _bNO_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - allocations_familiales_dot_enf= - caml_call3(Runtime_ocaml_Runtime[28],_jw_,_bNO_,_bNN_)} - catch(_bN1_) - {_bN1_ = caml_wrap_exception(_bN1_); - if(_bN1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jt_]; - throw _bN1_} - try - {var - _bNP_=function(param){return 0}, - _bNQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jy_,1)}, - _bNR_= - [0, - function(param) - {function _bNZ_(param){return 1} - function _bN0_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _jz_, - i_avait_enfant_a_charge_avant_)} - return caml_call4(Runtime_ocaml_Runtime[62],_jA_,[0],_bN0_,_bNZ_)}], - _bNS_=caml_call4(Runtime_ocaml_Runtime[62],_jB_,_bNR_,_bNQ_,_bNP_), - allocations_familiales_dot_ava= - caml_call3 - (Runtime_ocaml_Runtime[28],_jC_,Runtime_ocaml_Runtime[12],_bNS_)} - catch(_bNY_) - {_bNY_ = caml_wrap_exception(_bNY_); - if(_bNY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jx_]; - throw _bNY_} - var - _bNT_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_jD_,allocations_familiales), - [0, - allocations_familiales_dot_per, - allocations_familiales_dot_per$0, - allocations_familiales_dot_res, - allocations_familiales_dot_res$0, - allocations_familiales_dot_dat, - allocations_familiales_dot_enf, - allocations_familiales_dot_ava]), - result=caml_call2(Runtime_ocaml_Runtime[27],_jE_,_bNT_), - allocations_familiales_dot_mon=result[1]; - try - {var - _bNU_=function(param){return allocations_familiales_dot_mon}, - _bNV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jG_,1)}, - _bNW_=caml_call4(Runtime_ocaml_Runtime[62],_jH_,[0],_bNV_,_bNU_)} - catch(_bNX_) - {_bNX_ = caml_wrap_exception(_bNX_); - if(_bNX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jF_]; - throw _bNX_} - var - i_montant_verse= - caml_call3 - (Runtime_ocaml_Runtime[28],_jI_,Runtime_ocaml_Runtime[13],_bNW_); - return [0,i_montant_verse]} - var - Law_source_Allocations_familia= - [0, - PriseEnCharge, - embed_prise_en_charge, - SituationObligationScolaire, - embed_situation_obligation_sco, - PriseEnCompte, - embed_prise_en_compte, - VersementAllocations, - embed_versement_allocations, - ElementPrestationsFamiliales, - embed_element_prestations_fami, - Collectivite, - embed_collectivite, - EnfantEntree, - embed_enfant_entree, - Enfant, - embed_enfant, - PrestationsFamilialesOut, - embed_prestations_familiales_o, - PrestationsFamilialesIn, - embed_prestations_familiales_i, - AllocationFamilialesAvril2008O, - embed_allocation_familiales_av, - AllocationFamilialesAvril2008I, - embed_allocation_familiales_av$0, - EnfantLePlusAgeOut, - embed_enfant_le_plus_age_out, - EnfantLePlusAgeIn, - embed_enfant_le_plus_age_in, - AllocationsFamilialesOut, - embed_allocations_familiales_o, - AllocationsFamilialesIn, - embed_allocations_familiales_i, - SmicOut, - embed_smic_out, - SmicIn, - embed_smic_in, - BaseMensuelleAllocationsFamili, - embed_base_mensuelle_allocatio, - BaseMensuelleAllocationsFamili$0, - embed_base_mensuelle_allocatio$0, - InterfaceAllocationsFamiliales, - embed_interface_allocations_fa, - InterfaceAllocationsFamiliales$0, - embed_interface_allocations_fa$0, - allocation_familiales_avril200, - enfant_le_plus_age, - smic, - base_mensuelle_allocations_fam, - prestations_familiales, - allocations_familiales, - interface_allocations_familial]; - caml_register_global - (8852, - Law_source_Allocations_familia, - "Law_source__Allocations_familiales"); - function prise_en_charge_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"GardeAlterneePartageAllocations","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeALaFamille", - "payload":arg$2}; - default: - var arg$3=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", - "payload":arg$3}}} - function prise_en_charge_of_jsoo(prise_en_charge) - {var cons=caml_string_of_jsstring(prise_en_charge.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$0)) - {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn)) - {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2)) - {var _bNp_=caml_call2(Stdlib_Printf[4],_jJ_,cons); - return caml_call1(Stdlib[2],_bNp_)} - return _jK_} - return _jL_} - return _jM_} - return _jN_} - return _jO_} - function situation_obligation_scolaire_(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} - function situation_obligation_scolaire_$0(situation_obligation_scolaire) - {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); - if(caml_string_notequal(cons,cst_Apres)) - {if(caml_string_notequal(cons,cst_Avant$0)) - {if(caml_string_notequal(cons,cst_Pendant$0)) - {var _bNo_=caml_call2(Stdlib_Printf[4],_jP_,cons); - return caml_call1(Stdlib[2],_bNo_)} - return _jQ_} - return _jR_} - return _jS_} - function prise_en_compte_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Complete","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Partagee","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Zero","payload":arg$1}}} - function prise_en_compte_of_jsoo(prise_en_compte) - {var cons=caml_string_of_jsstring(prise_en_compte.kind); - if(caml_string_notequal(cons,cst_Complete)) - {if(caml_string_notequal(cons,cst_Partagee)) - {if(caml_string_notequal(cons,cst_Zero)) - {var _bNn_=caml_call2(Stdlib_Printf[4],_jT_,cons); - return caml_call1(Stdlib[2],_bNn_)} - return _jU_} - return _jV_} - return _jW_} - function versement_allocations_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Normal","payload":arg}} - var arg$0=param[1]; - return {"kind":"AllocationVerseeAuxServicesSociaux","payload":arg$0}} - function versement_allocations_of_jsoo(versement_allocations) - {var cons=caml_string_of_jsstring(versement_allocations.kind); - if(caml_string_notequal(cons,cst_AllocationVerseeAuxService)) - {if(caml_string_notequal(cons,cst_Normal$0)) - {var _bNm_=caml_call2(Stdlib_Printf[4],_jX_,cons); - return caml_call1(Stdlib[2],_bNm_)} - return _jY_} - return _jZ_} - function element_prestations_familiales(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"ComplementFamilial","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationLogement","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; - case 5: - var arg$4=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$4}; - case 6: - var arg$5=param[1]; - return {"kind":"AllocationRentreeScolaire","payload":arg$5}; - default: - var arg$6=param[1]; - return {"kind":"AllocationJournalierePresenceParentale", - "payload":arg$6}}} - function element_prestations_familiales$0(element_prestations_familiales) - {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); - if(caml_string_notequal(cons,cst_AllocationEducationEnfantH)) - {if(caml_string_notequal(cons,cst_AllocationJournalierePrese)) - {if(caml_string_notequal(cons,cst_AllocationLogement$0)) - {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$0)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$0)) - {if(caml_string_notequal(cons,cst_ComplementFamilial)) - {if - (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0)) - {var _bNl_=caml_call2(Stdlib_Printf[4],_j0_,cons); - return caml_call1(Stdlib[2],_bNl_)} - return _j1_} - return _j2_} - return _j3_} - return _j4_} - return _j5_} - return _j6_} - return _j7_} - return _j8_} - function collectivite_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; - case 2: - var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; - case 4: - var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; - case 5: - var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; - case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; - case 7: - var arg$6=param[1]; - return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; - default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} - function collectivite_of_jsoo(collectivite) - {var cons=caml_string_of_jsstring(collectivite.kind); - if(caml_string_notequal(cons,cst_Guadeloupe$0)) - {if(caml_string_notequal(cons,cst_Guyane$0)) - {if(caml_string_notequal(cons,cst_LaReunion)) - {if(caml_string_notequal(cons,cst_Martinique$0)) - {if(caml_string_notequal(cons,cst_Mayotte$0)) - {if(caml_string_notequal(cons,cst_Metropole)) - {if(caml_string_notequal(cons,cst_SaintBarthelemy)) - {if(caml_string_notequal(cons,cst_SaintMartin$0)) - {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0)) - {var _bNk_=caml_call2(Stdlib_Printf[4],_j9_,cons); - return caml_call1(Stdlib[2],_bNk_)} - return _j__} - return _j$_} - return _ka_} - return _kb_} - return _kc_} - return _kd_} - return _ke_} - return _kf_} - return _kg_} - function enfant_entree_to_jsoo(enfant_entree) - {var - t71=! ! enfant_entree[6], - t70=! ! enfant_entree[5], - t69=prise_en_charge_to_jsoo(enfant_entree[4]), - t68=caml_call1(Runtime_jsoo_Runtime[5],enfant_entree[3]), - t67=caml_call1(Runtime_ocaml_Runtime[35],enfant_entree[2]), - t66=caml_call1(Runtime_ocaml_Runtime[48],enfant_entree[1]); - return {"dIdentifiant":t66, - "dRemunerationMensuelle":t67, - "dDateDeNaissance":t68, - "dPriseEnCharge":t69, - "dADejaOuvertDroitAuxAllocationsFamiliales":t70, - "dBeneficieTitrePersonnelAidePersonnelleLogement":t71}} - function enfant_entree_of_jsoo(enfant_entree) - {var - _bNe_=enfant_entree.dBeneficieTitrePersonnelAidePersonnelleLogement | 0, - _bNf_=enfant_entree.dADejaOuvertDroitAuxAllocationsFamiliales | 0, - _bNg_=prise_en_charge_of_jsoo(enfant_entree.dPriseEnCharge), - _bNh_= - caml_call1(Runtime_jsoo_Runtime[4],enfant_entree.dDateDeNaissance), - _bNi_= - caml_call1 - (Runtime_ocaml_Runtime[42],enfant_entree.dRemunerationMensuelle), - _bNj_=caml_call1(Runtime_ocaml_Runtime[33],_bNi_); - return [0, - caml_call1(Runtime_ocaml_Runtime[49],enfant_entree.dIdentifiant), - _bNj_, - _bNh_, - _bNg_, - _bNf_, - _bNe_]} - function enfant_to_jsoo(enfant) - {var - t85=! ! enfant[8], - t84=! ! enfant[7], - t83=prise_en_charge_to_jsoo(enfant[6]), - t82=caml_call1(Runtime_ocaml_Runtime[48],enfant[5]), - t81=caml_call1(Runtime_jsoo_Runtime[5],enfant[4]), - t80=caml_call1(Runtime_ocaml_Runtime[35],enfant[3]), - t79=situation_obligation_scolaire_(enfant[2]), - t78=caml_call1(Runtime_ocaml_Runtime[48],enfant[1]); - return {"identifiant":t78, - "obligationScolaire":t79, - "remunerationMensuelle":t80, - "dateDeNaissance":t81, - "age":t82, - "priseEnCharge":t83, - "aDejaOuvertDroitAuxAllocationsFamiliales":t84, - "beneficieTitrePersonnelAidePersonnelleLogement":t85}} - function enfant_of_jsoo(enfant) - {var - _bM8_=enfant.beneficieTitrePersonnelAidePersonnelleLogement | 0, - _bM9_=enfant.aDejaOuvertDroitAuxAllocationsFamiliales | 0, - _bM__=prise_en_charge_of_jsoo(enfant.priseEnCharge), - _bM$_=caml_call1(Runtime_ocaml_Runtime[49],enfant.age), - _bNa_=caml_call1(Runtime_jsoo_Runtime[4],enfant.dateDeNaissance), - _bNb_= - caml_call1(Runtime_ocaml_Runtime[42],enfant.remunerationMensuelle), - _bNc_=caml_call1(Runtime_ocaml_Runtime[33],_bNb_), - _bNd_=situation_obligation_scolaire_$0(enfant.obligationScolaire); - return [0, - caml_call1(Runtime_ocaml_Runtime[49],enfant.identifiant), - _bNd_, - _bNc_, - _bNa_, - _bM$_, - _bM__, - _bM9_, - _bM8_]} - function prestations_familiales_out_to_(prestations_familiales_out) - {var - t97=! ! prestations_familiales_out[4], - t96=caml_call1(Runtime_ocaml_Runtime[48],prestations_familiales_out[3]); - function t95(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _bM7_=enfant_of_jsoo(input); - return ! ! caml_call1(prestations_familiales_out[2],_bM7_)})} - function t94(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _bM6_=enfant_of_jsoo(input); - return ! ! caml_call1(prestations_familiales_out[1],_bM6_)})} - return {"droitOuvertOut":caml_js_wrap_meth_callback(t94), - "conditionsHorsAgeOut":caml_js_wrap_meth_callback(t95), - "ageL51232Out":t96, - "regimeOutreMerL7511Out":t97}} - function prestations_familiales_out_of_(prestations_familiales_out) - {var - _bM3_=prestations_familiales_out.regimeOutreMerL7511Out | 0, - _bM4_= - caml_call1 - (Runtime_ocaml_Runtime[49],prestations_familiales_out.ageL51232Out), - _bM5_=caml_call1(Stdlib[2],cst_The_function_conditions_ho); - return [0, - caml_call1(Stdlib[2],cst_The_function_droit_ouvert_), - _bM5_, - _bM4_, - _bM3_]} - function prestations_familiales_in_to_j(prestations_familiales_in) - {var - t102=collectivite_to_jsoo(prestations_familiales_in[3]), - t101=element_prestations_familiales(prestations_familiales_in[2]), - t100=caml_call1(Runtime_jsoo_Runtime[5],prestations_familiales_in[1]); - return {"dateCouranteIn":t100, - "prestationCouranteIn":t101, - "residenceIn":t102}} - function prestations_familiales_in_of_j(prestations_familiales_in) - {var - _bM1_=collectivite_of_jsoo(prestations_familiales_in.residenceIn), - _bM2_= - element_prestations_familiales$0 - (prestations_familiales_in.prestationCouranteIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - prestations_familiales_in.dateCouranteIn), - _bM2_, - _bM1_]} - function allocation_familiales_avril200$0(allocation_familiales_avril200) - {var - t106= - caml_call1 - (Runtime_ocaml_Runtime[48],allocation_familiales_avril200[1]); - return {"ageMinimumAlinea1L5213Out":t106}} - function allocation_familiales_avril200$1(allocation_familiales_avril200) - {return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - allocation_familiales_avril200.ageMinimumAlinea1L5213Out)]} - function allocation_familiales_avril200$2(param){return {}} - function allocation_familiales_avril200$3(param){return 0} - function enfant_le_plus_age_out_to_jsoo(enfant_le_plus_age_out) - {var t108=enfant_to_jsoo(enfant_le_plus_age_out[1]); - return {"lePlusAgeOut":t108}} - function enfant_le_plus_age_out_of_jsoo(enfant_le_plus_age_out) - {return [0,enfant_of_jsoo(enfant_le_plus_age_out.lePlusAgeOut)]} - function enfant_le_plus_age_in_to_jsoo(enfant_le_plus_age_in) - {var _bMZ_=enfant_le_plus_age_in[1]; - function _bM0_(x){return enfant_to_jsoo(x)} - var t110=caml_js_from_array(caml_call2(Stdlib_Array[15],_bM0_,_bMZ_)); - return {"enfantsIn":t110}} - function enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in) - {var _bMX_=caml_js_to_array(enfant_le_plus_age_in.enfantsIn); - function _bMY_(x){return enfant_of_jsoo(x)} - return [0,caml_call1(caml_call1(Stdlib_Array[15],_bMY_),_bMX_)]} - function allocations_familiales_out_to_(allocations_familiales_out) - {var - t112= - caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_out[1]); - return {"montantVerseOut":t112}} - function allocations_familiales_out_of_(allocations_familiales_out) - {var - _bMW_= - caml_call1 - (Runtime_ocaml_Runtime[42], - allocations_familiales_out.montantVerseOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMW_)]} - function allocations_familiales_in_to_j(allocations_familiales_in) - {var - t120=! ! allocations_familiales_in[7], - _bMU_=allocations_familiales_in[6]; - function _bMV_(x){return enfant_to_jsoo(x)} - var - t119=caml_js_from_array(caml_call2(Stdlib_Array[15],_bMV_,_bMU_)), - t118=caml_call1(Runtime_jsoo_Runtime[5],allocations_familiales_in[5]), - t117=collectivite_to_jsoo(allocations_familiales_in[4]), - t116=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_in[3]), - t115=! ! allocations_familiales_in[2], - t114=! ! allocations_familiales_in[1]; - return {"personneChargeEffectivePermanenteEstParentIn":t114, - "personneChargeEffectivePermanenteRemplitTitreIIn":t115, - "ressourcesMenageIn":t116, - "residenceIn":t117, - "dateCouranteIn":t118, - "enfantsAChargeIn":t119, - "avaitEnfantAChargeAvant1erJanvier2012In":t120}} - function allocations_familiales_in_of_j(allocations_familiales_in) - {var - _bMM_= - allocations_familiales_in.avaitEnfantAChargeAvant1erJanvier2012In - | - 0, - _bMN_=caml_js_to_array(allocations_familiales_in.enfantsAChargeIn); - function _bMO_(x){return enfant_of_jsoo(x)} - var - _bMP_=caml_call1(caml_call1(Stdlib_Array[15],_bMO_),_bMN_), - _bMQ_= - caml_call1 - (Runtime_jsoo_Runtime[4],allocations_familiales_in.dateCouranteIn), - _bMR_=collectivite_of_jsoo(allocations_familiales_in.residenceIn), - _bMS_= - caml_call1 - (Runtime_ocaml_Runtime[42], - allocations_familiales_in.ressourcesMenageIn), - _bMT_=caml_call1(Runtime_ocaml_Runtime[33],_bMS_); - return [0, - allocations_familiales_in.personneChargeEffectivePermanenteEstParentIn - | - 0, - allocations_familiales_in.personneChargeEffectivePermanenteRemplitTitreIIn - | - 0, - _bMT_, - _bMR_, - _bMQ_, - _bMP_, - _bMM_]} - function smic_out_to_jsoo(smic_out) - {var t128=caml_call1(Runtime_ocaml_Runtime[35],smic_out[1]); - return {"brutHoraireOut":t128}} - function smic_out_of_jsoo(smic_out) - {var _bML_=caml_call1(Runtime_ocaml_Runtime[42],smic_out.brutHoraireOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bML_)]} - function smic_in_to_jsoo(smic_in) - {var - t131=collectivite_to_jsoo(smic_in[2]), - t130=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); - return {"dateCouranteIn":t130,"residenceIn":t131}} - function smic_in_of_jsoo(smic_in) - {var _bMK_=collectivite_of_jsoo(smic_in.residenceIn); - return [0, - caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), - _bMK_]} - function base_mensuelle_allocations_fam$0(base_mensuelle_allocations_fam) - {var - t134= - caml_call1 - (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); - return {"montantOut":t134}} - function base_mensuelle_allocations_fam$1(base_mensuelle_allocations_fam) - {var - _bMJ_= - caml_call1 - (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montantOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMJ_)]} - function base_mensuelle_allocations_fam$2(base_mensuelle_allocations_fam) - {var - t136= - caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); - return {"dateCouranteIn":t136}} - function base_mensuelle_allocations_fam$3(base_mensuelle_allocations_fam) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - base_mensuelle_allocations_fam.dateCouranteIn)]} - function interface_allocations_familial$0(interface_allocations_familial) - {var - t138= - caml_call1 - (Runtime_ocaml_Runtime[35],interface_allocations_familial[1]); - return {"iMontantVerseOut":t138}} - function interface_allocations_familial$1(interface_allocations_familial) - {var - _bMI_= - caml_call1 - (Runtime_ocaml_Runtime[42], - interface_allocations_familial.iMontantVerseOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMI_)]} - function interface_allocations_familial$2(interface_allocations_familial) - {var - t146=! ! interface_allocations_familial[7], - t145=! ! interface_allocations_familial[6], - t144=! ! interface_allocations_familial[5], - t143=collectivite_to_jsoo(interface_allocations_familial[4]), - t142= - caml_call1 - (Runtime_ocaml_Runtime[35],interface_allocations_familial[3]), - _bMG_=interface_allocations_familial[2]; - function _bMH_(x){return enfant_entree_to_jsoo(x)} - var - t141=caml_js_from_array(caml_call2(Stdlib_Array[15],_bMH_,_bMG_)), - t140= - caml_call1(Runtime_jsoo_Runtime[5],interface_allocations_familial[1]); - return {"iDateCouranteIn":t140, - "iEnfantsIn":t141, - "iRessourcesMenageIn":t142, - "iResidenceIn":t143, - "iPersonneChargeEffectivePermanenteEstParentIn":t144, - "iPersonneChargeEffectivePermanenteRemplitTitreIIn":t145, - "iAvaitEnfantAChargeAvant1erJanvier2012In":t146}} - function interface_allocations_familial$3(interface_allocations_familial) - {var - _bMx_= - interface_allocations_familial.iAvaitEnfantAChargeAvant1erJanvier2012In - | - 0, - _bMy_= - interface_allocations_familial.iPersonneChargeEffectivePermanenteRemplitTitreIIn - | - 0, - _bMz_= - interface_allocations_familial.iPersonneChargeEffectivePermanenteEstParentIn - | - 0, - _bMA_=collectivite_of_jsoo(interface_allocations_familial.iResidenceIn), - _bMB_= - caml_call1 - (Runtime_ocaml_Runtime[42], - interface_allocations_familial.iRessourcesMenageIn), - _bMC_=caml_call1(Runtime_ocaml_Runtime[33],_bMB_), - _bMD_=caml_js_to_array(interface_allocations_familial.iEnfantsIn); - function _bME_(x){return enfant_entree_of_jsoo(x)} - var _bMF_=caml_call1(caml_call1(Stdlib_Array[15],_bME_),_bMD_); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - interface_allocations_familial.iDateCouranteIn), - _bMF_, - _bMC_, - _bMA_, - _bMz_, - _bMy_, - _bMx_]} - function allocation_familiales_avril200$4 - (allocation_familiales_avril200$1) - {return allocation_familiales_avril200$0 - (allocation_familiales_avril200(0))} - function enfant_le_plus_age$0(enfant_le_plus_age_in) - {return enfant_le_plus_age_out_to_jsoo - (enfant_le_plus_age - (enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)))} - function smic$0(smic_in) - {return smic_out_to_jsoo(smic(smic_in_of_jsoo(smic_in)))} - function base_mensuelle_allocations_fam$4 - (base_mensuelle_allocations_fam$1) - {return base_mensuelle_allocations_fam$0 - (base_mensuelle_allocations_fam - (base_mensuelle_allocations_fam$3 - (base_mensuelle_allocations_fam$1)))} - function prestations_familiales$0(prestations_familiales_in) - {return prestations_familiales_out_to_ - (prestations_familiales - (prestations_familiales_in_of_j(prestations_familiales_in)))} - function allocations_familiales$0(allocations_familiales_in) - {return allocations_familiales_out_to_ - (allocations_familiales - (allocations_familiales_in_of_j(allocations_familiales_in)))} - function interface_allocations_familial$4 - (interface_allocations_familial$1) - {return interface_allocations_familial$0 - (interface_allocations_familial - (interface_allocations_familial$3 - (interface_allocations_familial$1)))} - function t160(param) - {return caml_js_wrap_callback(interface_allocations_familial$4)} - function t159(param) - {return caml_js_wrap_callback(allocations_familiales$0)} - function t158(param) - {return caml_js_wrap_callback(prestations_familiales$0)} - function t157(param) - {return caml_js_wrap_callback(base_mensuelle_allocations_fam$4)} - function t156(param){return caml_js_wrap_callback(smic$0)} - function t155(param){return caml_js_wrap_callback(enfant_le_plus_age$0)} - function t154(param) - {return caml_js_wrap_callback(allocation_familiales_avril200$4)} - caml_call2 - (Js_of_ocaml_Js[46], - cst_AllocationsFamilialesLib, - {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t154), - "enfantLePlusAge":caml_js_wrap_meth_callback(t155), - "smic":caml_js_wrap_meth_callback(t156), - "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t157), - "prestationsFamiliales":caml_js_wrap_meth_callback(t158), - "allocationsFamiliales":caml_js_wrap_meth_callback(t159), - "interfaceAllocationsFamiliales":caml_js_wrap_meth_callback(t160)}); - var - Law_source_Allocations_familia$0= - [0, - prise_en_charge_to_jsoo, - prise_en_charge_of_jsoo, - situation_obligation_scolaire_, - situation_obligation_scolaire_$0, - prise_en_compte_to_jsoo, - prise_en_compte_of_jsoo, - versement_allocations_to_jsoo, - versement_allocations_of_jsoo, - element_prestations_familiales, - element_prestations_familiales$0, - collectivite_to_jsoo, - collectivite_of_jsoo, - enfant_entree_to_jsoo, - enfant_entree_of_jsoo, - enfant_to_jsoo, - enfant_of_jsoo, - prestations_familiales_out_to_, - prestations_familiales_out_of_, - prestations_familiales_in_to_j, - prestations_familiales_in_of_j, - allocation_familiales_avril200$0, - allocation_familiales_avril200$1, - allocation_familiales_avril200$2, - allocation_familiales_avril200$3, - enfant_le_plus_age_out_to_jsoo, - enfant_le_plus_age_out_of_jsoo, - enfant_le_plus_age_in_to_jsoo, - enfant_le_plus_age_in_of_jsoo, - allocations_familiales_out_to_, - allocations_familiales_out_of_, - allocations_familiales_in_to_j, - allocations_familiales_in_of_j, - smic_out_to_jsoo, - smic_out_of_jsoo, - smic_in_to_jsoo, - smic_in_of_jsoo, - base_mensuelle_allocations_fam$0, - base_mensuelle_allocations_fam$1, - base_mensuelle_allocations_fam$2, - base_mensuelle_allocations_fam$3, - interface_allocations_familial$0, - interface_allocations_familial$1, - interface_allocations_familial$2, - interface_allocations_familial$3, - allocation_familiales_avril200$4, - enfant_le_plus_age$0, - smic$0, - base_mensuelle_allocations_fam$4, - prestations_familiales$0, - allocations_familiales$0, - interface_allocations_familial$4]; - caml_register_global - (8858, - Law_source_Allocations_familia$0, - "Law_source__Allocations_familiales_api_web"); - var TypeBailleur=[0]; - function embed_type_bailleur(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMw_=[0,cst_BailleurSocial,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMw_=[0,cst_BailleurPriv,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kh_,_bMw_]} - var TypePret=[0]; - function embed_type_pret(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMv_=[0,cst_D331_32,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMv_=[0,cst_D331_63_64,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bMv_=[0,cst_D331_59_8,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bMv_=[0,cst_D331_76_1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _bMv_=[0,cst_Autre,caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_ki_,_bMv_]} - var TitulairePret=[0]; - function embed_titulaire_pret(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMu_=[0,cst_Demandeur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMu_= - [0, - cst_VendeurQuandDemandeurACont, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kj_,_bMu_]} - var TypeTravauxLogementD83215=[0]; - function embed_type_travaux_logement_d8(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMt_= - [0, - cst_TravauxPourAcquisitionD832, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMt_= - [0, - cst_TravauxSurLogementD_j_Acqu, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMt_=[0,cst_PasDeTravaux,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kk_,_bMt_]} - var TypeTravauxLogementR8425=[0]; - function embed_type_travaux_logement_r8(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMs_= - [0, - cst_ObjectifD_cenceLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMs_= - [0, - cst_Pr_vuDansListeR321_15, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bMs_= - [0, - cst_AgrandirOuRendreHabitableD, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bMs_= - [0,cst_PasDeTravaux$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_kl_,_bMs_]} - var AmelioreParOccupant=[0]; - function embed_ameliore_par_occupant(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMr_=[0,cst_Oui,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMr_=[0,cst_Non,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_km_,_bMr_]} - var LimiteTranche=[0]; - function embed_limite_tranche(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMq_=[0,cst_Revenu,caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - else - var - x$1=x[1], - _bMq_=[0,cst_Infini,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kn_,_bMq_]} - var LimiteTrancheDecimal=[0]; - function embed_limite_tranche_decimal(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMp_=[0,cst_Revenu$0,caml_call1(Runtime_ocaml_Runtime[15],x$0)]; - else - var - x$1=x[1], - _bMp_=[0,cst_Infini$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_ko_,_bMp_]} - var PrestationRecue=[0]; - function embed_prestation_recue(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMo_= - [0, - cst_AllocationsFamiliales$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMo_= - [0, - cst_Compl_mentFamilial$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bMo_= - [0, - cst_AllocationJeuneEnfant, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bMo_= - [0, - cst_AllocationSoutienFamilial$1, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bMo_= - [0, - cst_AllocationSoutienEnfantHan, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - default: - var - x$5=x[1], - _bMo_= - [0, - cst_AllocationAdulteHandicap, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]} - return [6,_kp_,_bMo_]} - var TypeContratTravail=[0]; - function embed_type_contrat_travail(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMn_=[0,cst_CDI,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMn_=[0,cst_Autres,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kq_,_bMn_]} - var ParentOuAutre=[0]; - function embed_parent_ou_autre(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMm_= - [0, - cst_DemandeurOuConjointOuParen, - caml_call1(Runtime_ocaml_Runtime[15],x$0)]; - else - var - x$1=x[1], - _bMm_=[0,cst_Autre$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kr_,_bMm_]} - var SituationGardeAlternee=[0]; - function embed_situation_garde_alternee(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMl_= - [0,cst_PasDeGardeAltern_e,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMl_= - [0, - cst_GardeAltern_eCoefficientPr, - caml_call1(Runtime_ocaml_Runtime[15],x$1)]; - return [6,_ks_,_bMl_]} - var Parente=[0]; - function embed_parente(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMk_=[0,cst_Ascendant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMk_=[0,cst_Descendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMk_= - [0, - cst_Collat_ralDeuxi_meTroisi_m, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kt_,_bMk_]} - var DateDeNaissanceOuMoisDeGrosses=[0]; - function embed_date_de_naissance_ou_moi(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMj_= - [0,cst_DateDeNaissance,caml_call1(Runtime_ocaml_Runtime[16],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMj_= - [0, - cst_AvantPremierJourMoisCivilT, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMj_= - [0, - cst_Apr_sPremierJourMoisCivilT, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_ku_,_bMj_]} - var Nationalite=[0]; - function embed_nationalite(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMi_=[0,cst_Fran_aise,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMi_=[0,cst_trang_re,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kv_,_bMi_]} - var ZoneDHabitation=[0]; - function embed_zone_d_habitation(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMh_=[0,cst_Zone1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMh_=[0,cst_Zone2,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMh_=[0,cst_Zone3,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kw_,_bMh_]} - var CategorieCalculAPL=[0]; - function embed_categorie_calcul_a_p_l(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMg_=[0,cst_Location,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMg_= - [0,cst_AccessionPropri_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMg_= - [0,cst_LogementFoyer,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kx_,_bMg_]} - var PaiementLogementDistinctProfes=[0]; - function embed_paiement_logement_distin(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMf_= - [0, - cst_OuiAvecLoyerOuCharges, - caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - else - var - x$1=x[1], - _bMf_=[0,cst_Non$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_ky_,_bMf_]} - var VersementA=[0]; - function embed_versement_a(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMe_=[0,cst_Bailleur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMe_=[0,cst_B_n_ficiaire,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMe_= - [0, - cst_tablissementHabilit, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kz_,_bMe_]} - var DepenseLogement=[0]; - function embed_depense_logement(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMd_= - [0, - cst_TotalAnnuel_ch_ances, - caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMd_=[0,cst_Mensualit,caml_call1(Runtime_ocaml_Runtime[13],x$1)]; - break; - default: - var - x$2=x[1], - _bMd_=[0,cst_Loyer,caml_call1(Runtime_ocaml_Runtime[13],x$2)]} - return [6,_kA_,_bMd_]} - var ModeOccupationImpaye=[0]; - function embed_mode_occupation_impaye(x) - {if(0 === x[0]) - var - x$0=x[1], - _bMc_=[0,cst_Impay_Loyer,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bMc_=[0,cst_Impay_Pr_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kB_,_bMc_]} - var EligibiliteAllocationLogement=[0]; - function embed_eligibilite_allocation_l(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMb_=[0,cst_Pas_ligible,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMb_= - [0, - cst_AllocationLogementFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMb_= - [0, - cst_AllocationLogementSociale, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kC_,_bMb_]} - var TypeAidesPersonnelleLogement=[0]; - function embed_type_aides_personnelle_l(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bMa_= - [0, - cst_AidePersonnalis_eLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bMa_= - [0, - cst_AllocationLogementFamilial$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bMa_= - [0, - cst_AllocationLogementSociale$0, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kD_,_bMa_]} - var SituationFamiliale=[0]; - function embed_situation_familiale(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL$_=[0,cst_C_libataire,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL$_=[0,cst_Mari_s,caml_call1(Runtime_ocaml_Runtime[16],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL$_=[0,cst_Pacs_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bL$_=[0,cst_Concubins,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bL$_= - [0, - cst_C_libataireS_par_DeFait, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - default: - var - x$5=x[1], - _bL$_= - [0, - cst_ConcubinageDontS_par_DeFai, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]} - return [6,_kE_,_bL$_]} - var PriseEnCharge$0=[0]; - function embed_prise_en_charge$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL__= - [0, - cst_EffectiveEtPermanente$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL__= - [0, - cst_R_sidenceAltern_eAllocatai, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bL__= - [0, - cst_R_sidenceAltern_eAllocatio, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kF_,_bL__]} - var TypeLogementFoyer=[0]; - function embed_type_logement_foyer(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL9_= - [0, - cst_LogementPersonnes_g_esOuHa, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL9_= - [0,cst_R_sidenceSociale,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL9_= - [0, - cst_FoyerJeunesTrvailleursOuMi, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bL9_=[0,cst_Autre$1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_kG_,_bL9_]} - var CategorieEquivalenceLoyerAlloc=[0]; - function embed_categorie_equivalence_lo(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL8_= - [0, - cst_tudiantLog_EnChambre, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL8_= - [0, - cst_tudiantLog_EnChambreR_habi, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL8_= - [0, - cst_Personnes_g_esSelon3DeD842, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bL8_= - [0,cst_AutresPersonnes,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_kH_,_bL8_]} - var SituationFamilialeCalculAPL=[0]; - function embed_situation_familiale_calc(x) - {if(0 === x[0]) - var - x$0=x[1], - _bL7_=[0,cst_PersonneSeule,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bL7_=[0,cst_Couple,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kI_,_bL7_]} - var Collectivite$0=[0]; - function embed_collectivite$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL6_=[0,cst_Guadeloupe$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL6_=[0,cst_Guyane$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL6_=[0,cst_Martinique$1,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bL6_=[0,cst_LaR_union$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bL6_= - [0,cst_SaintBarth_lemy$0,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _bL6_= - [0,cst_SaintMartin$1,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _bL6_=[0,cst_M_tropole$0,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - case 7: - var - x$7=x[1], - _bL6_= - [0, - cst_SaintPierreEtMiquelon$1, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]; - break; - default: - var - x$8=x[1], - _bL6_=[0,cst_Mayotte$1,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} - return [6,_kJ_,_bL6_]} - var PriseEnChargeEnfant=[0]; - function embed_prise_en_charge_enfant(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL5_= - [0, - cst_GardeAltern_ePartageAlloca$0, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL5_= - [0, - cst_GardeAltern_eAllocataireUn$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL5_= - [0, - cst_EffectiveEtPermanente$2, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bL5_= - [0, - cst_ServicesSociauxAllocationV$3, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _bL5_= - [0, - cst_ServicesSociauxAllocationV$4, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_kK_,_bL5_]} - var SituationObligationScolaire$0=[0]; - function embed_situation_obligation_sco$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL4_=[0,cst_Avant$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL4_=[0,cst_Pendant$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bL4_=[0,cst_Apr_s$0,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kL_,_bL4_]} - var ElementPrestationsFamiliales$0=[0]; - function embed_element_prestations_fami$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bL3_= - [0, - cst_PrestationAccueilJeuneEnfa$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bL3_= - [0, - cst_AllocationsFamiliales$2, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bL3_= - [0, - cst_Compl_mentFamilial$1, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bL3_= - [0, - cst_AllocationLogement$1, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bL3_= - [0, - cst_Allocation_ducationEnfantH$0, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _bL3_= - [0, - cst_AllocationSoutienFamilial$2, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _bL3_= - [0, - cst_AllocationRentr_eScolaire$0, - caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - default: - var - x$7=x[1], - _bL3_= - [0, - cst_AllocationJournali_rePrese$0, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]} - return [6,_kM_,_bL3_]} - var PersonneSousLocation=[0]; - function embed_personne_sous_location(x) - {var - _bL2_= - [0, - [0, - cst_conforme_article_l442_1, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - 0]; - return [7, - _kN_, - [0, - [0, - cst_age_personne_sous_location, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bL2_]]} - var Patrimoine=[0]; - function embed_patrimoine(x) - {var - _bL1_= - [0, - [0, - cst_ne_produisant_pas_revenu_p, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _kO_, - [0, - [0, - cst_produisant_revenu_p_riode_, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bL1_]]} - var PersonneVivantHabituellementAu=[0]; - function embed_personne_vivant_habituel(x) - {var - _bL0_= - [0,[0,cst_ressources,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; - return [7, - _kP_, - [0, - [0, - cst_dur_e_r_sidence_durant_p_r, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bL0_]]} - var InfosChangementLogementD8424=[0]; - function embed_infos_changement_logemen(x) - {var - _bLZ_= - [0, - [0, - cst_ancienne_allocation_logeme, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _kQ_, - [0, - [0, - cst_ancien_loyer_principal, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bLZ_]]} - var Bailleur=[0]; - function embed_bailleur(x) - {var - _bLV_= - [0, - [0, - cst_acquisition_aides_tat_pr_t, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - 0], - _bLW_= - [0, - [0, - cst_construit_am_lior_conditio, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bLV_], - _bLX_= - [0, - [0, - cst_respecte_convention_titre_, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bLW_], - _bLY_= - [0, - [0, - cst_respecte_convention_titre_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bLX_]; - return [7, - _kR_, - [0,[0,cst_type_bailleur,embed_type_bailleur(x[1])],_bLY_]]} - var Pret=[0]; - function embed_pret(x) - {var - _bLT_=[0,[0,cst_titulaire_pr_t,embed_titulaire_pret(x[3])],0], - _bLU_= - [0, - [0,cst_date_signature,caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bLT_]; - return [7,_kS_,[0,[0,cst_type_pr_t,embed_type_pret(x[1])],_bLU_]]} - var NeufOuAncien=[0]; - function embed_neuf_ou_ancien(x) - {if(0 === x[0]) - var - x$0=x[1], - _bLS_=[0,cst_Neuf,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var x$1=x[1],_bLS_=[0,cst_Ancien,embed_ameliore_par_occupant(x$1)]; - return [6,_kT_,_bLS_]} - var TrancheRevenu=[0]; - function embed_tranche_revenu(x) - {var - _bLQ_=[0,[0,cst_taux,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], - _bLR_=[0,[0,cst_bas,caml_call1(Runtime_ocaml_Runtime[13],x[2])],_bLQ_]; - return [7,_kU_,[0,[0,cst_haut,embed_limite_tranche(x[1])],_bLR_]]} - var TrancheRevenuDecimal=[0]; - function embed_tranche_revenu_decimal(x) - {var - _bLO_=[0,[0,cst_taux$0,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], - _bLP_= - [0,[0,cst_bas$0,caml_call1(Runtime_ocaml_Runtime[15],x[2])],_bLO_]; - return [7, - _kV_, - [0,[0,cst_haut$0,embed_limite_tranche_decimal(x[1])],_bLP_]]} - var AutrePersonneACharge=[0]; - function embed_autre_personne_a_charge(x) - {var - _bLI_= - [0, - [0, - cst_titulaire_allocation_perso, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _bLJ_= - [0, - [0, - cst_b_n_ficiaire_l161_19_l351_, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bLI_], - _bLK_= - [0, - [0, - cst_incapacit_80_pourcent_ou_r, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bLJ_], - _bLL_=[0,[0,cst_parent,embed_parente(x[4])],_bLK_], - _bLM_= - [0, - [0, - cst_ascendant_descendant_colla, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bLL_], - _bLN_= - [0, - [0,cst_ressources$0,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bLM_]; - return [7, - _kW_, - [0, - [0, - cst_date_naissance, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bLN_]]} - var DateNaissanceTroisiemeOuDernie=[0]; - function embed_date_naissance_troisieme(x) - {if(0 === x[0]) - var - x$0=x[1], - _bLH_= - [0,cst_MoinsDeTroisEnfants,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bLH_=[0,cst_PlusDeTroisEnfants,embed_date_de_naissance_ou_moi(x$1)]; - return [6,_kX_,_bLH_]} - var InformationsCalculAPLLogementF=[0]; - function embed_informations_calcul_a_p_(x) - {var - _bLG_= - [0, - [0, - cst_cat_gorie_quivalence_loyer, - embed_categorie_equivalence_lo(x[2])], - 0]; - return [7, - _kY_, - [0, - [0,cst_redevance,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bLG_]]} - var EnfantPrestationsFamiliales=[0]; - function embed_enfant_prestations_famil(x) - {var - _bLz_= - [0, - [0, - cst_b_n_ficie_titre_personnel_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - 0], - _bLA_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bLz_], - _bLB_= - [0,[0,cst_prise_en_charge$0,embed_prise_en_charge_enfant(x[6])],_bLA_], - _bLC_=[0,[0,cst_ge$0,caml_call1(Runtime_ocaml_Runtime[14],x[5])],_bLB_], - _bLD_= - [0, - [0, - cst_date_de_naissance$0, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bLC_], - _bLE_= - [0, - [0, - cst_r_muneration_mensuelle$0, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bLD_], - _bLF_= - [0, - [0,cst_obligation_scolaire$0,embed_situation_obligation_sco$0(x[2])], - _bLE_]; - return [7, - _kZ_, - [0, - [0, - cst_identifiant$0, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bLF_]]} - var EnfantACharge=[0]; - function embed_enfant_a_charge(x) - {var - _bLr_= - [0, - [0,cst_situation_garde_altern_e,embed_situation_garde_alternee(x[9])], - 0], - _bLs_=[0,[0,cst_ge$1,caml_call1(Runtime_ocaml_Runtime[14],x[8])],_bLr_], - _bLt_=[0,[0,cst_prise_en_charge$1,embed_prise_en_charge$0(x[7])],_bLs_], - _bLu_= - [0, - [0,cst_obligation_scolaire$1,embed_situation_obligation_sco$0(x[6])], - _bLt_], - _bLv_= - [0, - [0, - cst_r_muneration_mensuelle$1, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bLu_], - _bLw_= - [0, - [0, - cst_date_de_naissance$1, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bLv_], - _bLx_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all$1, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bLw_], - _bLy_= - [0, - [0, - cst_b_n_ficie_titre_personnel_$1, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bLx_]; - return [7, - _k0_, - [0, - [0, - cst_identifiant$1, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bLy_]]} - var LoueOuSousLoueADesTiers=[0]; - function embed_loue_ou_sous_loue_a_des_(x) - {if(0 === x[0]) - var - x$0=x[1], - _bLq_=[0,cst_Non$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var x$1=x[1],_bLq_=[0,cst_Oui$0,embed_personne_sous_location(x$1)]; - return [6,_k1_,_bLq_]} - var Demandeur=[0]; - function embed_demandeur(x) - {var - _bLk_= - [0, - [0, - cst_personne_h_berg_e_centre_s, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _bLl_=[0,[0,cst_patrimoine,embed_patrimoine(x[6])],_bLk_], - _bLm_=[0,[0,cst_nationalit,embed_nationalite(x[5])],_bLl_], - _bLn_= - [0,[0,cst_contrat_de_travail,embed_type_contrat_travail(x[4])],_bLm_], - _bLo_= - [0, - [0,cst_date_naissance$0,caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bLn_], - _bLp_= - [0, - [0,cst_age_demandeur,caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bLo_]; - return [7, - _k2_, - [0, - [0, - cst_satisfait_conditions_l512_, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bLp_]]} - var ChangementLogementD8424=[0]; - function embed_changement_logement_d842(x) - {if(0 === x[0]) - var - x$0=x[1], - _bLj_=[0,cst_Changement,embed_infos_changement_logemen(x$0)]; - else - var - x$1=x[1], - _bLj_= - [0,cst_PasDeChangement,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_k3_,_bLj_]} - var Location=[0]; - function embed_location(x) - {return [7,_k4_,[0,[0,cst_bailleur,embed_bailleur(x[1])],0]]} - var Proprietaire=[0]; - function embed_proprietaire(x) - {return [7,_k5_,[0,[0,cst_pr_t,embed_pret(x[1])],0]]} - var InformationsCalculAPLAccession=[0]; - function embed_informations_calcul_a_p_$0(x) - {var - _bK$_=[0,[0,cst_anciennet_logement,embed_neuf_ou_ancien(x[11])],0], - _bLa_=[0,[0,cst_type_pr_t$0,embed_type_pret(x[10])],_bK$_], - _bLb_= - [0, - [0, - cst_situation_r822_11_13_17, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bLa_], - _bLc_= - [0, - [0,cst_copropri_t,caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bLb_], - _bLd_= - [0, - [0, - cst_local_habit_premi_re_fois_, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bLc_], - _bLe_= - [0, - [0, - cst_type_travaux_logement_r842, - embed_type_travaux_logement_r8(x[6])], - _bLd_], - _bLf_= - [0, - [0, - cst_type_travaux_logement_d832, - embed_type_travaux_logement_d8(x[5])], - _bLe_], - _bLg_= - [0, - [0, - cst_date_entr_e_logement, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bLf_], - _bLh_= - [0, - [0, - cst_date_signature_pr_t, - caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bLg_], - _bLi_= - [0, - [0, - cst_charges_mensuelles_pr_t, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bLh_]; - return [7, - _k6_, - [0, - [0, - cst_mensualit_principale, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bLi_]]} - var PersonneACharge=[0]; - function embed_personne_a_charge(x) - {if(0 === x[0]) - var x$0=x[1],_bK__=[0,cst_Enfant_Charge,embed_enfant_a_charge(x$0)]; - else - var - x$1=x[1], - _bK__=[0,cst_AutrePersonne_Charge,embed_autre_personne_a_charge(x$1)]; - return [6,_k7_,_bK__]} - var InformationsCalculAPLLocatif=[0]; - function embed_informations_calcul_a_p_$1(x) - {var - _bK3_= - [0, - [0, - cst_changement_logement_d842_4, - embed_changement_logement_d842(x[8])], - 0], - _bK4_= - [0, - [0, - cst_logement_meubl_d842_2, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bK3_], - _bK5_= - [0, - [0, - cst_r_duction_loyer_solidarit, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bK4_], - _bK6_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bK5_], - _bK7_= - [0, - [0,cst_colocation,caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bK6_], - _bK8_= - [0, - [0, - cst_logement_est_chambre, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bK7_], - _bK9_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bK8_]; - return [7, - _k8_, - [0, - [0, - cst_loyer_principal, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bK9_]]} - var LogementFoyer=[0]; - function embed_logement_foyer(x) - {var - _bKZ_= - [0, - [0, - cst_construit_application_loi_, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - 0], - _bK0_= - [0, - [0, - cst_remplit_conditions_r832_21, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bKZ_], - _bK1_=[0,[0,cst_location,embed_location(x[3])],_bK0_], - _bK2_= - [0, - [0, - cst_date_conventionnement, - caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bK1_]; - return [7,_k9_,[0,[0,cst_type,embed_type_logement_foyer(x[1])],_bK2_]]} - var InformationsCalculAPL=[0]; - function embed_informations_calcul_a_p_$2(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bKY_=[0,cst_InfosLocatif,embed_informations_calcul_a_p_$1(x$0)]; - break; - case 1: - var - x$1=x[1], - _bKY_=[0,cst_InfosLogementFoyer,embed_informations_calcul_a_p_(x$1)]; - break; - default: - var - x$2=x[1], - _bKY_= - [0, - cst_InfosAccessionPropri_t, - embed_informations_calcul_a_p_$0(x$2)]} - return [6,_k__,_bKY_]} - var ModeOccupation=[0]; - function embed_mode_occupation(x) - {switch(x[0]) - {case 0:var x$0=x[1],_bKX_=[0,cst_Locataire,embed_location(x$0)];break; - case 1: - var - x$1=x[1], - _bKX_=[0,cst_R_sidentLogementFoyer,embed_logement_foyer(x$1)]; - break; - case 2: - var - x$2=x[1], - _bKX_=[0,cst_AccessionPropri_t_LocalUsa,embed_proprietaire(x$2)]; - break; - case 3: - var x$3=x[1],_bKX_=[0,cst_SousLocataire,embed_location(x$3)];break; - default: - var x$4=x[1],_bKX_=[0,cst_LocationAccession,embed_proprietaire(x$4)]} - return [6,_k$_,_bKX_]} - var Logement=[0]; - function embed_logement(x) - {var - _bKN_=[0,[0,cst_zone,embed_zone_d_habitation(x[11])],0], - _bKO_= - [0, - [0, - cst_situ_commune_d_s_quilibre_, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bKN_], - _bKP_= - [0, - [0,cst_est_ancien_l831_2,caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bKO_], - _bKQ_= - [0, - [0,cst_surface_m_carr_s,caml_call1(Runtime_ocaml_Runtime[14],x[8])], - _bKP_], - _bKR_= - [0, - [0, - cst_logement_decent_l89_462, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bKQ_], - _bKS_=[0,[0,cst_usufruit,embed_parent_ou_autre(x[6])],_bKR_], - _bKT_= - [0, - [0, - cst_lou_ou_sous_lou_des_tiers, - embed_loue_ou_sous_loue_a_des_(x[5])], - _bKS_], - _bKU_=[0,[0,cst_propri_taire,embed_parent_ou_autre(x[4])],_bKT_], - _bKV_=[0,[0,cst_mode_occupation,embed_mode_occupation(x[3])],_bKU_], - _bKW_= - [0, - [0, - cst_est_ehpad_ou_maison_autono, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bKV_]; - return [7, - _la_, - [0, - [0, - cst_r_sidence_principale, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bKW_]]} - var Menage=[0]; - function embed_menage(x) - {var - _bKF_= - [0, - [0, - cst_date_naissance_troisi_me_e, - embed_date_naissance_troisieme(x[9])], - 0], - _bKG_= - [0, - [0, - cst_enfant_na_tre_apr_s_quatri, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bKF_], - _bKH_= - [0, - [0, - cst_nombre_enfants_na_tre_apr_, - caml_call1(Runtime_ocaml_Runtime[14],x[7])], - _bKG_], - _bKI_= - [0, - [0, - cst_condition_rattach_foyer_fi, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bKH_], - _bKJ_= - [0,[0,cst_situation_familiale,embed_situation_familiale(x[5])],_bKI_], - _bKK_= - [0, - [0, - cst_nombre_autres_occupants_lo, - caml_call1(Runtime_ocaml_Runtime[14],x[4])], - _bKJ_], - _bKL_= - [0, - [0, - cst_personnes_charge, - caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[3])], - _bKK_], - _bKM_=[0,[0,cst_logement,embed_logement(x[2])],_bKL_]; - return [7, - _lb_, - [0, - [0, - cst_prestations_re_ues, - caml_call2 - (Runtime_ocaml_Runtime[18],embed_prestation_recue,x[1])], - _bKM_]]} - var EligibiliteAidesPersonnelleLog=[0]; - function embed_eligibilite_aides_person(x) - {var - _bKB_= - [0, - [0, - cst_condition_2_r823_4_out, - caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bKC_= - [0, - [0, - cst_coefficents_enfants_garde_, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - _bKB_], - _bKD_= - [0, - [0, - cst_nombre_personnes_charge_pr, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bKC_], - _bKE_= - [0, - [0,cst_ligibilit_out,caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bKD_]; - return [7, - _lc_, - [0, - [0, - cst_date_courante_out, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bKE_]]} - var EligibiliteAidesPersonnelleLog$0=[0]; - function embed_eligibilite_aides_person$0(x) - {var - _bKx_= - [0, - [0, - cst_condition_logement_surface, - caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bKy_= - [0, - [0, - cst_condition_logement_r_siden, - caml_call1(Runtime_ocaml_Runtime[10],x[4])], - _bKx_], - _bKz_= - [0, - [0,cst_date_courante_in$3,caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bKy_], - _bKA_=[0,[0,cst_demandeur_in,embed_demandeur(x[2])],_bKz_]; - return [7,_ld_,[0,[0,cst_m_nage_in,embed_menage(x[1])],_bKA_]]} - var EligibiliteAidePersonnaliseeLo=[0]; - function embed_eligibilite_aide_personn(x) - {var - _bKu_= - [0, - [0, - cst_coefficents_enfants_garde_$0, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - 0], - _bKv_= - [0, - [0, - cst_nombre_personnes_charge_pr$0, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bKu_], - _bKw_= - [0, - [0,cst_ligibilit_out$0,caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bKv_]; - return [7, - _le_, - [0, - [0, - cst_date_courante_out$0, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bKw_]]} - var EligibiliteAidePersonnaliseeLo$0=[0]; - function embed_eligibilite_aide_personn$0(x) - {var - _bKs_= - [0, - [0,cst_date_courante_in$4,caml_call1(Runtime_ocaml_Runtime[16],x[3])], - 0], - _bKt_=[0,[0,cst_demandeur_in$0,embed_demandeur(x[2])],_bKs_]; - return [7,_lf_,[0,[0,cst_m_nage_in$0,embed_menage(x[1])],_bKt_]]} - var EligibiliteAllocationLogementO=[0]; - function embed_eligibilite_allocation_l$0(x) - {var - _bKq_= - [0, - [0, - cst_coefficents_enfants_garde_$1, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[3])], - 0], - _bKr_= - [0, - [0, - cst_nombre_personnes_charge_pr$1, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bKq_]; - return [7, - _lg_, - [0, - [0, - cst_ligibilit_avec_condition_l, - embed_eligibilite_allocation_l(x[1])], - _bKr_]]} - var EligibiliteAllocationLogementI=[0]; - function embed_eligibilite_allocation_l$1(x) - {var - _bKm_= - [0, - [0,cst_informations_calcul_in,embed_informations_calcul_a_p_$2(x[5])], - 0], - _bKn_= - [0, - [0, - cst_b_n_ficie_aide_personnalis, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bKm_], - _bKo_=[0,[0,cst_demandeur_in$1,embed_demandeur(x[3])],_bKn_], - _bKp_=[0,[0,cst_m_nage_in$1,embed_menage(x[2])],_bKo_]; - return [7, - _lh_, - [0, - [0, - cst_date_courante_in$5, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bKp_]]} - var EligibilitePrimeDeDemenagement=[0]; - function embed_eligibilite_prime_de_dem(x) - {return [7, - _li_, - [0, - [0, - cst_montant_prime_d_m_nagement, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var EligibilitePrimeDeDemenagement$0=[0]; - function embed_eligibilite_prime_de_dem$0(x) - {var - _bKi_= - [0, - [0, - cst_d_penses_justifi_es_r_elle, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - 0], - _bKj_= - [0, - [0,cst_date_courante_in$6,caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bKi_], - _bKk_=[0,[0,cst_demandeur_in$2,embed_demandeur(x[3])],_bKj_], - _bKl_=[0,[0,cst_m_nage_in$2,embed_menage(x[2])],_bKk_]; - return [7, - _lj_, - [0, - [0, - cst_date_emm_nagement_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bKl_]]} - var RessourcesAidesPersonnelleLoge=[0]; - function embed_ressources_aides_personn(x) - {return [7, - _lk_, - [0, - [0, - cst_ressources_prises_en_compt, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var RessourcesAidesPersonnelleLoge$0=[0]; - function embed_ressources_aides_personn$0(x) - {var - _bJ8_= - [0, - [0, - cst_ressources_m_nage_arrondie, - caml_call1(Runtime_ocaml_Runtime[13],x[13])], - 0], - _bJ9_= - [0, - [0, - cst_paiement_logement_distinct, - embed_paiement_logement_distin(x[12])], - _bJ8_], - _bJ__= - [0, - [0, - cst_date_demande_ou_reexamen_d, - caml_call1(Runtime_ocaml_Runtime[16],x[11])], - _bJ9_], - _bJ$_= - [0, - [0, - cst_demandeur_poursuit_des_tud, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bJ__], - _bKa_= - [0, - [0, - cst_condition_ge_bourse_enseig, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bJ$_], - _bKb_=[0,[0,cst_mode_occupation_in,embed_mode_occupation(x[8])],_bKa_], - _bKc_= - [0, - [0,cst_situation_familiale_in,embed_situation_familiale(x[7])], - _bKb_], - _bKd_= - [0, - [0, - cst_personnes_charge_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[6])], - _bKc_], - _bKe_= - [0, - [0, - cst_conjoint_exerce_activit_r_, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bKd_], - _bKf_= - [0, - [0, - cst_demandeur_exerce_activit_r, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bKe_], - _bKg_= - [0, - [0, - cst_personnes_vivant_habituell, - caml_call2 - (Runtime_ocaml_Runtime[18],embed_personne_vivant_habituel,x[3])], - _bKf_], - _bKh_= - [0, - [0, - cst_ressources_conjoint_in, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bKg_]; - return [7, - _ll_, - [0, - [0, - cst_ressources_demandeur_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bKh_]]} - var ContributionsSocialesAidesPers=[0]; - function embed_contributions_sociales_a(x) - {return [7, - _lm_, - [0, - [0, - cst_montant_out$0, - caml_call1(Runtime_ocaml_Runtime[10],x[1])], - 0]]} - var ContributionsSocialesAidesPers$0=[0]; - function embed_contributions_sociales_a$0(x) - {return [7, - _ln_, - [0, - [0, - cst_date_courante_in$7, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var CalculAidePersonnaliseeLogemen=[0]; - function embed_calcul_aide_personnalise(x) - {var - _bJ2_= - [0, - [0, - cst_traitement_aide_finale_mon, - caml_call1(Runtime_ocaml_Runtime[10],x[7])], - 0], - _bJ3_= - [0, - [0, - cst_aide_finale_formule_out, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bJ2_], - _bJ4_= - [0, - [0, - cst_participation_personnelle_, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bJ3_], - _bJ5_= - [0, - [0, - cst_taux_composition_familiale, - caml_call1(Runtime_ocaml_Runtime[15],x[4])], - _bJ4_], - _bJ6_= - [0, - [0, - cst_participation_minimale_out, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bJ5_], - _bJ7_= - [0, - [0, - cst_plafond_loyer_d823_16_2_ou, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJ6_]; - return [7, - _lo_, - [0, - [0, - cst_montant_forfaitaire_charge, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJ7_]]} - var CalculAidePersonnaliseeLogemen$0=[0]; - function embed_calcul_aide_personnalise$0(x) - {var - _bJR_= - [0, - [0, - cst_r_duction_loyer_solidarit_, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - 0], - _bJS_= - [0, - [0,cst_colocation_in,caml_call1(Runtime_ocaml_Runtime[12],x[11])], - _bJR_], - _bJT_= - [0,[0,cst_type_aide_in,embed_type_aides_personnelle_l(x[10])],_bJS_], - _bJU_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h$0, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bJT_], - _bJV_= - [0, - [0, - cst_logement_est_chambre_in, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bJU_], - _bJW_=[0,[0,cst_zone_in,embed_zone_d_habitation(x[7])],_bJV_], - _bJX_= - [0, - [0, - cst_situation_familiale_calcul, - embed_situation_familiale_calc(x[6])], - _bJW_], - _bJY_= - [0, - [0, - cst_nombre_personnes_charge_in, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bJX_], - _bJZ_= - [0, - [0,cst_date_courante_in$8,caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bJY_], - _bJ0_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o$0, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bJZ_], - _bJ1_= - [0, - [0, - cst_ressources_m_nage_arrondie$0, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJ0_]; - return [7, - _lp_, - [0, - [0, - cst_loyer_principal_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJ1_]]} - var CalculEquivalenceLoyerMinimale=[0]; - function embed_calcul_equivalence_loyer(x) - {return [7, - _lq_, - [0, - [0, - cst_montant_out$1, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var CalculEquivalenceLoyerMinimale$0=[0]; - function embed_calcul_equivalence_loyer$0(x) - {var - _bJP_= - [0, - [0, - cst_n_nombre_parts_d832_25_in, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - 0], - _bJQ_= - [0, - [0, - cst_condition_2_du_832_25_in, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bJP_]; - return [7, - _lr_, - [0, - [0, - cst_ressources_m_nage_arrondie$1, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJQ_]]} - var CalculNombrePartLogementFoyerO=[0]; - function embed_calcul_nombre_part_logem(x) - {return [7, - _ls_, - [0, - [0, - cst_n_nombre_parts_d832_25_out, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - 0]]} - var CalculNombrePartLogementFoyerI=[0]; - function embed_calcul_nombre_part_logem$0(x) - {var - _bJN_= - [0, - [0, - cst_situation_familiale_calcul$0, - embed_situation_familiale_calc(x[3])], - 0], - _bJO_= - [0, - [0, - cst_nombre_personnes_charge_in$0, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bJN_]; - return [7, - _lt_, - [0, - [0, - cst_condition_2_du_832_25_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bJO_]]} - var CalculAidePersonnaliseeLogemen$1=[0]; - function embed_calcul_aide_personnalise$1(x) - {var - _bJF_= - [0, - [0, - cst_traitement_aide_finale_mon$0, - caml_call1(Runtime_ocaml_Runtime[10],x[9])], - 0], - _bJG_= - [0, - [0, - cst_aide_finale_formule_out$0, - caml_call1(Runtime_ocaml_Runtime[13],x[8])], - _bJF_], - _bJH_= - [0, - [0, - cst_coefficient_prise_en_charg, - caml_call1(Runtime_ocaml_Runtime[15],x[7])], - _bJG_], - _bJI_= - [0, - [0, - cst_quivalence_loyer_minimale_, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bJH_], - _bJJ_= - [0, - [0, - cst_plafond_quivalence_loyer_l, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bJI_], - _bJK_= - [0, - [0, - cst_quivalence_loyer_ligible_o, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bJJ_], - _bJL_= - [0, - [0, - cst_n_nombre_parts_d832_25_out$0, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - _bJK_], - _bJM_= - [0, - [0, - cst_coefficient_r_d832_25_out, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJL_]; - return [7, - _lu_, - [0, - [0, - cst_coefficient_multiplicateur, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJM_]]} - var CalculAidePersonnaliseeLogemen$2=[0]; - function embed_calcul_aide_personnalise$2(x) - {var - _bJx_= - [0, - [0, - cst_n_nombre_parts_d832_25_in$0, - caml_call1(Runtime_ocaml_Runtime[10],x[9])], - 0], - _bJy_= - [0, - [0, - cst_condition_2_du_832_25_in$1, - caml_call1(Runtime_ocaml_Runtime[10],x[8])], - _bJx_], - _bJz_= - [0, - [0,cst_redevance_in,caml_call1(Runtime_ocaml_Runtime[13],x[7])], - _bJy_], - _bJA_= - [0, - [0,cst_date_courante_in$9,caml_call1(Runtime_ocaml_Runtime[16],x[6])], - _bJz_], - _bJB_=[0,[0,cst_zone_in$0,embed_zone_d_habitation(x[5])],_bJA_], - _bJC_= - [0, - [0, - cst_situation_familiale_calcul$1, - embed_situation_familiale_calc(x[4])], - _bJB_], - _bJD_= - [0, - [0, - cst_nombre_personnes_charge_in$1, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bJC_], - _bJE_= - [0, - [0, - cst_ressources_m_nage_arrondie$2, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJD_]; - return [7, - _lv_, - [0, - [0,cst_mode_occupation_in$0,embed_mode_occupation(x[1])], - _bJE_]]} - var CalculNombrePartsAccessionProp=[0]; - function embed_calcul_nombre_parts_acce(x) - {return [7, - _lw_, - [0, - [0, - cst_n_nombre_parts_d832_11_out, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - 0]]} - var CalculNombrePartsAccessionProp$0=[0]; - function embed_calcul_nombre_parts_acce$0(x) - {var - _bJw_= - [0, - [0, - cst_situation_familiale_calcul$2, - embed_situation_familiale_calc(x[2])], - 0]; - return [7, - _lx_, - [0, - [0, - cst_nombre_personnes_charge_in$2, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bJw_]]} - var CalculAidePersonnaliseeLogemen$3=[0]; - function embed_calcul_aide_personnalise$3(x) - {var - _bJs_= - [0, - [0, - cst_traitement_aide_finale_mon$1, - caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bJt_= - [0, - [0, - cst_aide_finale_formule_out$1, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bJs_], - _bJu_= - [0, - [0, - cst_coefficient_prise_en_charg$0, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - _bJt_], - _bJv_= - [0, - [0, - cst_mensualit_minimale_out, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJu_]; - return [7, - _ly_, - [0, - [0, - cst_mensualit_ligible_out, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJv_]]} - var CalculAidePersonnaliseeLogemen$4=[0]; - function embed_calcul_aide_personnalise$4(x) - {var - _bJf_= - [0, - [0, - cst_date_courante_in$10, - caml_call1(Runtime_ocaml_Runtime[16],x[14])], - 0], - _bJg_= - [0,[0,cst_anciennet_logement_in,embed_neuf_ou_ancien(x[13])],_bJf_], - _bJh_=[0,[0,cst_type_pr_t_in,embed_type_pret(x[12])],_bJg_], - _bJi_=[0,[0,cst_zone_in$1,embed_zone_d_habitation(x[11])],_bJh_], - _bJj_= - [0, - [0, - cst_situation_r822_11_13_17_in, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bJi_], - _bJk_= - [0, - [0,cst_copropri_t_in,caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bJj_], - _bJl_= - [0, - [0, - cst_date_entr_e_logement_in, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - _bJk_], - _bJm_= - [0, - [0, - cst_local_habit_premi_re_fois_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bJl_], - _bJn_= - [0, - [0, - cst_date_signature_pr_t_in, - caml_call1(Runtime_ocaml_Runtime[16],x[6])], - _bJm_], - _bJo_= - [0, - [0,cst_type_travaux_logement_in,embed_type_travaux_logement_d8(x[5])], - _bJn_], - _bJp_= - [0, - [0, - cst_situation_familiale_calcul$3, - embed_situation_familiale_calc(x[4])], - _bJo_], - _bJq_= - [0, - [0, - cst_nombre_personnes_charge_in$3, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bJp_], - _bJr_= - [0, - [0, - cst_ressources_m_nage_arrondie$3, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bJq_]; - return [7, - _lz_, - [0, - [0, - cst_mensualit_principale_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJr_]]} - var CalculAidePersonnaliseeLogemen$5=[0]; - function embed_calcul_aide_personnalise$5(x) - {var - _bJe_= - [0, - [0, - cst_traitement_aide_finale_out, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lA_, - [0, - [0, - cst_aide_finale_formule_out$2, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bJe_]]} - var CalculAidePersonnaliseeLogemen$6=[0]; - function embed_calcul_aide_personnalise$6(x) - {var - _bI9_= - [0, - [0, - cst_date_courante_in$11, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - 0], - _bI__=[0,[0,cst_zone_in$2,embed_zone_d_habitation(x[7])],_bI9_], - _bI$_= - [0, - [0, - cst_nombre_personnes_charge_in$4, - caml_call1(Runtime_ocaml_Runtime[14],x[6])], - _bI__], - _bJa_= - [0, - [0,cst_situation_familiale_in$0,embed_situation_familiale(x[5])], - _bI$_], - _bJb_= - [0, - [0, - cst_ressources_m_nage_sans_arr, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bJa_], - _bJc_= - [0, - [0, - cst_informations_calcul_in$0, - embed_informations_calcul_a_p_$2(x[3])], - _bJb_], - _bJd_= - [0,[0,cst_type_aide_in$0,embed_type_aides_personnelle_l(x[2])],_bJc_]; - return [7, - _lB_, - [0, - [0,cst_mode_occupation_in$1,embed_mode_occupation(x[1])], - _bJd_]]} - var CalculAllocationLogementLocati=[0]; - function embed_calcul_allocation_logeme(x) - {var - _bI8_= - [0, - [0, - cst_traitement_aide_finale_out$0, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lC_, - [0, - [0, - cst_aide_finale_formule_out$3, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bI8_]]} - var CalculAllocationLogementLocati$0=[0]; - function embed_calcul_allocation_logeme$0(x) - {var - _bIV_= - [0, - [0, - cst_changement_logement_d842_4$0, - embed_changement_logement_d842(x[14])], - 0], - _bIW_= - [0, - [0, - cst_logement_meubl_d842_2_in, - caml_call1(Runtime_ocaml_Runtime[12],x[13])], - _bIV_], - _bIX_= - [0, - [0, - cst_r_duction_loyer_solidarit_$0, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - _bIW_], - _bIY_= - [0, - [0,cst_colocation_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[11])], - _bIX_], - _bIZ_= - [0,[0,cst_type_aide_in$1,embed_type_aides_personnelle_l(x[10])],_bIY_], - _bI0_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h$1, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bIZ_], - _bI1_= - [0, - [0, - cst_logement_est_chambre_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bI0_], - _bI2_=[0,[0,cst_zone_in$3,embed_zone_d_habitation(x[7])],_bI1_], - _bI3_= - [0, - [0, - cst_situation_familiale_calcul$4, - embed_situation_familiale_calc(x[6])], - _bI2_], - _bI4_= - [0, - [0, - cst_nombre_personnes_charge_in$5, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bI3_], - _bI5_= - [0, - [0, - cst_date_courante_in$12, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bI4_], - _bI6_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o$1, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bI5_], - _bI7_= - [0, - [0, - cst_ressources_m_nage_arrondie$4, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bI6_]; - return [7, - _lD_, - [0, - [0, - cst_loyer_principal_in$0, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bI7_]]} - var CalculAllocationLogementAccess=[0]; - function embed_calcul_allocation_logeme$1(x) - {var - _bIU_= - [0, - [0, - cst_traitement_aide_finale_mon$2, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lE_, - [0, - [0, - cst_aide_finale_formule_out$4, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bIU_]]} - var CalculAllocationLogementAccess$0=[0]; - function embed_calcul_allocation_logeme$2(x) - {var - _bII_= - [0, - [0,cst_copropri_t_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[13])], - 0], - _bIJ_= - [0, - [0, - cst_charges_mensuelles_pr_t_in, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - _bII_], - _bIK_= - [0, - [0, - cst_date_entr_e_logement_in$0, - caml_call1(Runtime_ocaml_Runtime[16],x[11])], - _bIJ_], - _bIL_= - [0, - [0, - cst_local_habit_premi_re_fois_$1, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bIK_], - _bIM_= - [0, - [0, - cst_type_travaux_logement_in$0, - embed_type_travaux_logement_r8(x[9])], - _bIL_], - _bIN_= - [0, - [0, - cst_date_signature_pr_t_in$0, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - _bIM_], - _bIO_= - [0, - [0, - cst_situation_r822_11_13_17_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bIN_], - _bIP_= - [0, - [0, - cst_mensualit_principale_in$0, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bIO_], - _bIQ_= - [0, - [0, - cst_date_courante_in$13, - caml_call1(Runtime_ocaml_Runtime[16],x[5])], - _bIP_], - _bIR_=[0,[0,cst_zone_in$4,embed_zone_d_habitation(x[4])],_bIQ_], - _bIS_= - [0, - [0, - cst_situation_familiale_calcul$5, - embed_situation_familiale_calc(x[3])], - _bIR_], - _bIT_= - [0, - [0, - cst_nombre_personnes_charge_in$6, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bIS_]; - return [7, - _lF_, - [0, - [0, - cst_ressources_m_nage_arrondie$5, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bIT_]]} - var CalculAllocationLogementFoyerO=[0]; - function embed_calcul_allocation_logeme$3(x) - {var - _bID_= - [0, - [0, - cst_traitement_aide_finale_mon$3, - caml_call1(Runtime_ocaml_Runtime[10],x[6])], - 0], - _bIE_= - [0, - [0, - cst_aide_finale_formule_out$5, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bID_], - _bIF_= - [0, - [0,cst_loyer_minimal_out,caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bIE_], - _bIG_= - [0, - [0, - cst_montant_forfaitaire_charge$0, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bIF_], - _bIH_= - [0, - [0, - cst_quivalence_loyer_out, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bIG_]; - return [7, - _lG_, - [0, - [0, - cst_coefficient_prise_en_charg$1, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - _bIH_]]} - var CalculAllocationLogementFoyerI=[0]; - function embed_calcul_allocation_logeme$4(x) - {var - _bIw_= - [0, - [0, - cst_cat_gorie_quivalence_loyer$0, - embed_categorie_equivalence_lo(x[8])], - 0], - _bIx_= - [0, - [0, - cst_date_courante_in$14, - caml_call1(Runtime_ocaml_Runtime[16],x[7])], - _bIw_], - _bIy_=[0,[0,cst_zone_in$5,embed_zone_d_habitation(x[6])],_bIx_], - _bIz_= - [0, - [0, - cst_situation_familiale_calcul$6, - embed_situation_familiale_calc(x[5])], - _bIy_], - _bIA_= - [0, - [0, - cst_nombre_personnes_charge_in$7, - caml_call1(Runtime_ocaml_Runtime[14],x[4])], - _bIz_], - _bIB_= - [0, - [0, - cst_ressources_m_nage_arrondie$6, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bIA_], - _bIC_= - [0,[0,cst_mode_occupation_in$2,embed_mode_occupation(x[2])],_bIB_]; - return [7, - _lH_, - [0, - [0, - cst_redevance_in$0, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bIC_]]} - var CalculAllocationLogementOut=[0]; - function embed_calcul_allocation_logeme$5(x) - {var - _bIv_= - [0, - [0, - cst_traitement_aide_finale_out$1, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lI_, - [0, - [0, - cst_aide_finale_formule_out$6, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bIv_]]} - var CalculAllocationLogementIn=[0]; - function embed_calcul_allocation_logeme$6(x) - {var - _bIo_=[0,[0,cst_type_aide_in$2,embed_type_aides_personnelle_l(x[8])],0], - _bIp_= - [0, - [0, - cst_date_courante_in$15, - caml_call1(Runtime_ocaml_Runtime[16],x[7])], - _bIo_], - _bIq_=[0,[0,cst_zone_in$6,embed_zone_d_habitation(x[6])],_bIp_], - _bIr_= - [0, - [0, - cst_nombre_personnes_charge_in$8, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bIq_], - _bIs_= - [0, - [0,cst_situation_familiale_in$1,embed_situation_familiale(x[4])], - _bIr_], - _bIt_= - [0, - [0, - cst_ressources_m_nage_sans_arr$0, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bIs_], - _bIu_= - [0, - [0, - cst_informations_calcul_in$1, - embed_informations_calcul_a_p_$2(x[2])], - _bIt_]; - return [7, - _lJ_, - [0, - [0,cst_mode_occupation_in$3,embed_mode_occupation(x[1])], - _bIu_]]} - var OuvertureDroitsRetraiteOut=[0]; - function embed_ouverture_droits_retrait(x) - {return [7, - _lK_, - [0, - [0, - cst_ge_ouverture_droit_out, - caml_call1(Runtime_ocaml_Runtime[17],x[1])], - 0]]} - var OuvertureDroitsRetraiteIn=[0]; - function embed_ouverture_droits_retrait$0(x) - {return [7, - _lL_, - [0, - [0, - cst_date_naissance_assur_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var ImpayeDepenseLogementOut=[0]; - function embed_impaye_depense_logement_(x) - {return [7, - _lM_, - [0, - [0, - cst_montant_impay_out, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var ImpayeDepenseLogementIn=[0]; - function embed_impaye_depense_logement_$0(x) - {var - _bIj_= - [0, - [0,cst_montant_dette_in,caml_call1(Runtime_ocaml_Runtime[13],x[6])], - 0], - _bIk_= - [0,[0,cst_d_pense_logement_in,embed_depense_logement(x[5])],_bIj_], - _bIl_= - [0, - [0,cst_montant_charges_in,caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bIk_], - _bIm_= - [0, - [0,cst_montant_apl_in,caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bIl_], - _bIn_=[0,[0,cst_aide_vers_e_in,embed_versement_a(x[2])],_bIm_]; - return [7, - _lN_, - [0, - [0,cst_mode_occupation_in$4,embed_mode_occupation(x[1])], - _bIn_]]} - var CalculetteAidesAuLogementOut=[0]; - function embed_calculette_aides_au_loge(x) - {var - _bIg_= - [0, - [0, - cst_coefficents_enfants_garde_$2, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - 0], - _bIh_= - [0, - [0, - cst_traitement_aide_finale_out$2, - caml_call1(Runtime_ocaml_Runtime[10],x[3])], - _bIg_], - _bIi_= - [0, - [0, - cst_aide_finale_formule_out$7, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bIh_]; - return [7, - _lO_, - [0, - [0, - cst_ligibilit_out$1, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bIi_]]} - var CalculetteAidesAuLogementIn=[0]; - function embed_calculette_aides_au_loge$0(x) - {var - _bIc_= - [0, - [0, - cst_ressources_m_nage_prises_e, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - 0], - _bId_= - [0, - [0, - cst_date_courante_in$16, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bIc_], - _bIe_= - [0, - [0, - cst_informations_calcul_in$2, - embed_informations_calcul_a_p_$2(x[3])], - _bId_], - _bIf_=[0,[0,cst_demandeur_in$3,embed_demandeur(x[2])],_bIe_]; - return [7,_lP_,[0,[0,cst_m_nage_in$3,embed_menage(x[1])],_bIf_]]} - var CalculetteAidesAuLogementGarde=[0]; - function embed_calculette_aides_au_loge$1(x) - {var - _bIb_= - [0, - [0,cst_aide_finale_out,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _lQ_, - [0, - [0, - cst_ligibilit_out$2, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bIb_]]} - var CalculetteAidesAuLogementGarde$0=[0]; - function embed_calculette_aides_au_loge$2(x) - {var - _bH9_= - [0, - [0, - cst_ressources_m_nage_prises_e$0, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - 0], - _bH__= - [0, - [0, - cst_date_courante_in$17, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bH9_], - _bH$_= - [0, - [0, - cst_informations_calcul_in$3, - embed_informations_calcul_a_p_$2(x[3])], - _bH__], - _bIa_=[0,[0,cst_demandeur_in$4,embed_demandeur(x[2])],_bH$_]; - return [7,_lR_,[0,[0,cst_m_nage_in$4,embed_menage(x[1])],_bIa_]]} - var BaseMensuelleAllocationsFamili$1=[0]; - function embed_base_mensuelle_allocatio$1(x) - {return [7, - _lS_, - [0, - [0, - cst_montant_out$2, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var BaseMensuelleAllocationsFamili$2=[0]; - function embed_base_mensuelle_allocatio$2(x) - {return [7, - _lT_, - [0, - [0, - cst_date_courante_in$18, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var SmicOut$0=[0]; - function embed_smic_out$0(x) - {return [7, - _lU_, - [0, - [0, - cst_brut_horaire_out$0, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var SmicIn$0=[0]; - function embed_smic_in$0(x) - {var _bH8_=[0,[0,cst_r_sidence_in$2,embed_collectivite$0(x[2])],0]; - return [7, - _lV_, - [0, - [0, - cst_date_courante_in$19, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bH8_]]} - var EligibilitePrestationsFamilial=[0]; - function embed_eligibilite_prestations_(x) - {var - _bH5_= - [0, - [0, - cst_r_gime_outre_mer_l751_1_ou$0, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _bH6_= - [0, - [0,cst_ge_l512_3_2_out$0,caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bH5_], - _bH7_= - [0, - [0, - cst_conditions_hors_ge_out$0, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - _bH6_]; - return [7, - _lW_, - [0, - [0, - cst_droit_ouvert_out$0, - caml_call1(Runtime_ocaml_Runtime[10],x[1])], - _bH7_]]} - var EligibilitePrestationsFamilial$0=[0]; - function embed_eligibilite_prestations_$0(x) - {var - _bH3_=[0,[0,cst_r_sidence_in$3,embed_collectivite$0(x[3])],0], - _bH4_= - [0, - [0, - cst_prestation_courante_in$0, - embed_element_prestations_fami$0(x[2])], - _bH3_]; - return [7, - _lX_, - [0, - [0, - cst_date_courante_in$20, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bH4_]]} - function contributions_sociales_aides_p(contributions_sociales_aides_p) - {var date_courante=contributions_sociales_aides_p[1]; - try - {var - _bHJ_=function(param){return 0}, - _bHK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_lZ_,1)}, - _bHL_= - [0, - function(param) - {function _bH1_(param){return 1} - function _bH2_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_l0_,1)} - return caml_call4(Runtime_ocaml_Runtime[62],_l1_,[0],_bH2_,_bH1_)}], - _bHM_=caml_call4(Runtime_ocaml_Runtime[62],_l2_,_bHL_,_bHK_,_bHJ_)} - catch(_bH0_) - {_bH0_ = caml_wrap_exception(_bH0_); - if(_bH0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_lY_]; - throw _bH0_} - var - exonere_csg= - caml_call3 - (Runtime_ocaml_Runtime[28],_l3_,Runtime_ocaml_Runtime[12],_bHM_); - try - {var - _bHN_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_005)}, - _bHO_= - function(param) - {var - _bHY_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bHZ_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bHY_); - return caml_call2(Runtime_ocaml_Runtime[29],_l5_,_bHZ_)}, - _bHP_=caml_call4(Runtime_ocaml_Runtime[62],_l6_,[0],_bHO_,_bHN_)} - catch(_bHX_) - {_bHX_ = caml_wrap_exception(_bHX_); - if(_bHX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_l4_]; - throw _bHX_} - var - taux_crds= - caml_call3 - (Runtime_ocaml_Runtime[28],_l7_,Runtime_ocaml_Runtime[15],_bHP_); - function _bHQ_(param) - {try - {var - _bHR_= - function(param$0) - {return caml_call2(Runtime_ocaml_Runtime[65],param,taux_crds)}, - _bHS_= - function(param) - {var - _bHV_=caml_call3(Runtime_ocaml_Runtime[56],2018,9,1), - _bHW_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bHV_); - return caml_call2(Runtime_ocaml_Runtime[29],_l9_,_bHW_)}, - _bHT_=caml_call4(Runtime_ocaml_Runtime[62],_l__,[0],_bHS_,_bHR_); - return _bHT_} - catch(_bHU_) - {_bHU_ = caml_wrap_exception(_bHU_); - if(_bHU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_l8_]; - throw _bHU_}} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_l$_,Runtime_ocaml_Runtime[10],_bHQ_); - if(exonere_csg)return [0,montant]; - throw [0,Runtime_ocaml_Runtime[3],_ma_]} - function calcul_equivalence_loyer_minim(calcul_equivalence_loyer_minim) - {var - ressources_menage_arrondies=calcul_equivalence_loyer_minim[1], - condition_2_du_832_25=calcul_equivalence_loyer_minim[2], - n_nombre_parts_d832_25=calcul_equivalence_loyer_minim[3]; - try - {var - _bF2_= - function(param) - {return condition_2_du_832_25 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_7632) - :caml_call1(Runtime_ocaml_Runtime[31],cst_4557)}, - _bF3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mc_,1)}, - _bF4_=caml_call4(Runtime_ocaml_Runtime[62],_md_,[0],_bF3_,_bF2_)} - catch(_bHI_) - {_bHI_ = caml_wrap_exception(_bHI_); - if(_bHI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mb_]; - throw _bHI_} - var - montant_forfaitaire_d832_26= - caml_call3 - (Runtime_ocaml_Runtime[28],_me_,Runtime_ocaml_Runtime[13],_bF4_); - try - {var - _bF5_= - function(param) - {var - _bHs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_48), - _bHt_= - [0,_mg_,caml_call1(Runtime_ocaml_Runtime[31],cst_633129),_bHs_], - _bHu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$1), - _bHv_=caml_call1(Runtime_ocaml_Runtime[31],cst_535744), - _bHw_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_633129$0)], - _bHv_, - _bHu_], - _bHx_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_264), - _bHy_=caml_call1(Runtime_ocaml_Runtime[31],cst_389618), - _bHz_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_535744$0)], - _bHy_, - _bHx_], - _bHA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_216), - _bHB_=caml_call1(Runtime_ocaml_Runtime[31],cst_267871), - _bHC_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_389618$0)], - _bHB_, - _bHA_], - _bHD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_104), - _bHE_=caml_call1(Runtime_ocaml_Runtime[31],cst_194810), - _bHF_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_267871$0)], - _bHE_, - _bHD_], - _bHG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04$0), - _bHH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$69); - return [0, - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_194810$0)], - _bHH_, - _bHG_], - _bHF_, - _bHC_, - _bHz_, - _bHw_, - _bHt_]}, - _bF6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mh_,1)}, - _bF7_= - [0, - function(param) - {function _bHd_(param) - {var - _bHf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_328), - _bHg_= - [0, - _mi_, - caml_call1(Runtime_ocaml_Runtime[31],cst_409505), - _bHf_], - _bHh_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232$0), - _bHi_=caml_call1(Runtime_ocaml_Runtime[31],cst_262985), - _bHj_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_409505$0)], - _bHi_, - _bHh_], - _bHk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_208), - _bHl_=caml_call1(Runtime_ocaml_Runtime[31],cst_204761), - _bHm_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_262985$0)], - _bHl_, - _bHk_], - _bHn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_024), - _bHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_142303), - _bHp_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_204761$0)], - _bHo_, - _bHn_], - _bHq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$70), - _bHr_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$71); - return [0, - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_142303$0)], - _bHr_, - _bHq_], - _bHp_, - _bHm_, - _bHj_, - _bHg_]} - function _bHe_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_mj_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[62],_mk_,[0],_bHe_,_bHd_)}], - _bF8_=caml_call4(Runtime_ocaml_Runtime[62],_ml_,_bF7_,_bF6_,_bF5_)} - catch(_bHc_) - {_bHc_ = caml_wrap_exception(_bHc_); - if(_bHc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mf_]; - throw _bHc_} - var - _bF9_=caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu), - tranches_revenus_d832_26= - caml_call3(Runtime_ocaml_Runtime[28],_mm_,_bF9_,_bF8_); - try - {var - _bF__= - function(param) - {function _bG7_(tranche) - {var - _bG8_=tranche[3], - _bG9_=caml_call1(Runtime_ocaml_Runtime[45],tranche[2]), - _bG__= - caml_call2 - (Runtime_ocaml_Runtime[88],_bG9_,n_nombre_parts_d832_25), - _bG$_=tranche[1]; - if(0 === _bG$_[0]) - var - tranche_haut=_bG$_[1], - _bHa_=caml_call1(Runtime_ocaml_Runtime[45],tranche_haut), - _bHb_= - [0, - caml_call2 - (Runtime_ocaml_Runtime[88],_bHa_,n_nombre_parts_d832_25)]; - else - var _bHb_=_mo_; - return [0,_bHb_,_bG__,_bG8_]} - return caml_call2(Stdlib_Array[15],_bG7_,tranches_revenus_d832_26)}, - _bF$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mp_,1)}, - _bGa_=caml_call4(Runtime_ocaml_Runtime[62],_mq_,[0],_bF$_,_bF__)} - catch(_bG6_) - {_bG6_ = caml_wrap_exception(_bG6_); - if(_bG6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mn_]; - throw _bG6_} - var - _bGb_= - caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu_decimal), - tranches_revenus_d832_26_multi= - caml_call3(Runtime_ocaml_Runtime[28],_mr_,_bGb_,_bGa_); - try - {var - _bGc_= - function(param) - {var - _bGH_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$11), - _bGI_= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_forfaitaire_d832_26), - _bGJ_= - caml_call2 - (Runtime_ocaml_Runtime[88],_bGI_,n_nombre_parts_d832_25), - _bGK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$72); - function _bGL_(acc,tranche) - {var - _bGP_=tranche[2], - _bGQ_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[92],_bGQ_,_bGP_)) - var _bGR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$73); - else - {var _bGS_=tranche[1]; - if(0 === _bGS_[0]) - {var - tranche_haut=_bGS_[1], - _bGT_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[91],_bGT_,tranche_haut)) - var - _bGU_=tranche[3], - _bGV_= - caml_call2 - (Runtime_ocaml_Runtime[86],tranche_haut,tranche[2]), - _bGW_=caml_call2(Runtime_ocaml_Runtime[88],_bGV_,_bGU_); - else - var - _bGY_=tranche[3], - _bGZ_=tranche[2], - _bG0_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _bG1_=caml_call2(Runtime_ocaml_Runtime[86],_bG0_,_bGZ_), - _bGW_=caml_call2(Runtime_ocaml_Runtime[88],_bG1_,_bGY_); - var _bGX_=_bGW_} - else - var - _bG2_=tranche[3], - _bG3_=tranche[2], - _bG4_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _bG5_=caml_call2(Runtime_ocaml_Runtime[86],_bG4_,_bG3_), - _bGX_=caml_call2(Runtime_ocaml_Runtime[88],_bG5_,_bG2_); - var _bGR_=_bGX_} - return caml_call2(Runtime_ocaml_Runtime[85],acc,_bGR_)} - var - _bGM_= - caml_call3 - (Stdlib_Array[17],_bGL_,_bGK_,tranches_revenus_d832_26_multi), - _bGN_=caml_call2(Runtime_ocaml_Runtime[85],_bGM_,_bGJ_), - _bGO_=caml_call2(Runtime_ocaml_Runtime[89],_bGN_,_bGH_); - return caml_call1(Runtime_ocaml_Runtime[33],_bGO_)}, - _bGd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mt_,1)}, - _bGe_= - [0, - function(param) - {function _bGh_(param) - {var - _bGj_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$12), - _bGk_= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_forfaitaire_d832_26), - _bGl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$74); - function _bGm_(acc,tranche) - {var - _bGq_=tranche[2], - _bGr_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[92],_bGr_,_bGq_)) - var _bGs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$75); - else - {var _bGt_=tranche[1]; - if(0 === _bGt_[0]) - {var - tranche_haut=_bGt_[1], - _bGu_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[91],_bGu_,tranche_haut)) - var - _bGv_=tranche[3], - _bGw_= - caml_call2 - (Runtime_ocaml_Runtime[86],tranche_haut,tranche[2]), - _bGx_=caml_call2(Runtime_ocaml_Runtime[88],_bGw_,_bGv_); - else - var - _bGz_=tranche[3], - _bGA_=tranche[2], - _bGB_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _bGC_=caml_call2(Runtime_ocaml_Runtime[86],_bGB_,_bGA_), - _bGx_=caml_call2(Runtime_ocaml_Runtime[88],_bGC_,_bGz_); - var _bGy_=_bGx_} - else - var - _bGD_=tranche[3], - _bGE_=tranche[2], - _bGF_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _bGG_=caml_call2(Runtime_ocaml_Runtime[86],_bGF_,_bGE_), - _bGy_=caml_call2(Runtime_ocaml_Runtime[88],_bGG_,_bGD_); - var _bGs_=_bGy_} - return caml_call2(Runtime_ocaml_Runtime[85],acc,_bGs_)} - var - _bGn_= - caml_call3 - (Stdlib_Array[17], - _bGm_, - _bGl_, - tranches_revenus_d832_26_multi), - _bGo_=caml_call2(Runtime_ocaml_Runtime[85],_bGn_,_bGk_), - _bGp_=caml_call2(Runtime_ocaml_Runtime[89],_bGo_,_bGj_); - return caml_call1(Runtime_ocaml_Runtime[33],_bGp_)} - function _bGi_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_mu_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[62],_mv_,[0],_bGi_,_bGh_)}], - _bGf_=caml_call4(Runtime_ocaml_Runtime[62],_mw_,_bGe_,_bGd_,_bGc_)} - catch(_bGg_) - {_bGg_ = caml_wrap_exception(_bGg_); - if(_bGg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ms_]; - throw _bGg_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_mx_,Runtime_ocaml_Runtime[13],_bGf_); - return [0,montant]} - function calcul_nombre_part_logement_fo(calcul_nombre_part_logement_fo) - {var - condition_2_du_832_25=calcul_nombre_part_logement_fo[1], - nombre_personnes_a_charge=calcul_nombre_part_logement_fo[2], - situation_familiale_calcul_apl=calcul_nombre_part_logement_fo[3]; - try - {var - _bFJ_= - function(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$76))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$29))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$17))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$3); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$4))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3); - var - _bFW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$0), - _bFX_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFW_), - _bFY_=caml_call1(Runtime_ocaml_Runtime[41],_bFX_), - _bFZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$1), - _bF0_=caml_call2(Runtime_ocaml_Runtime[88],_bFZ_,_bFY_), - _bF1_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$0); - return caml_call2(Runtime_ocaml_Runtime[85],_bF1_,_bF0_)}, - _bFK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mz_,1)}, - _bFL_= - [0, - function(param) - {function _bFO_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$77))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_2) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_5); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$30))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$18))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$5); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$6))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$1))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$1); - var - _bFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$2), - _bFR_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFQ_), - _bFS_=caml_call1(Runtime_ocaml_Runtime[41],_bFR_), - _bFT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$2), - _bFU_=caml_call2(Runtime_ocaml_Runtime[88],_bFT_,_bFS_), - _bFV_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$2); - return caml_call2(Runtime_ocaml_Runtime[85],_bFV_,_bFU_)} - function _bFP_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_mA_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[62],_mB_,[0],_bFP_,_bFO_)}], - _bFM_=caml_call4(Runtime_ocaml_Runtime[62],_mC_,_bFL_,_bFK_,_bFJ_)} - catch(_bFN_) - {_bFN_ = caml_wrap_exception(_bFN_); - if(_bFN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_my_]; - throw _bFN_} - var - n_nombre_parts_d832_25= - caml_call3 - (Runtime_ocaml_Runtime[28],_mD_,Runtime_ocaml_Runtime[15],_bFM_); - return [0,n_nombre_parts_d832_25]} - function calcul_nombre_parts_accession_(calcul_nombre_parts_accession_) - {var - nombre_personnes_a_charge=calcul_nombre_parts_accession_[1], - situation_familiale_calcul_apl=calcul_nombre_parts_accession_[2]; - try - {var - _bFz_= - function(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$78))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$31))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$1); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$19))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$7); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$8))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$1); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$3))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$3); - var - _bFD_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$4), - _bFE_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFD_), - _bFF_=caml_call1(Runtime_ocaml_Runtime[41],_bFE_), - _bFG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$3), - _bFH_=caml_call2(Runtime_ocaml_Runtime[88],_bFG_,_bFF_), - _bFI_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$4); - return caml_call2(Runtime_ocaml_Runtime[85],_bFI_,_bFH_)}, - _bFA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mF_,1)}, - _bFB_=caml_call4(Runtime_ocaml_Runtime[62],_mG_,[0],_bFA_,_bFz_)} - catch(_bFC_) - {_bFC_ = caml_wrap_exception(_bFC_); - if(_bFC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mE_]; - throw _bFC_} - var - n_nombre_parts_d832_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_mH_,Runtime_ocaml_Runtime[15],_bFB_); - return [0,n_nombre_parts_d832_11]} - function ouverture_droits_retraite(ouverture_droits_retraite_in) - {var date_naissance_assure=ouverture_droits_retraite_in[1]; - try - {var - _bET_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bEU_=function(param){return 0}, - _bEV_= - function(param) - {function _bFt_(param) - {var - _bFx_=caml_call3(Runtime_ocaml_Runtime[59],0,7,0), - _bFy_=caml_call3(Runtime_ocaml_Runtime[59],61,0,0); - return caml_call2(Runtime_ocaml_Runtime[102],_bFy_,_bFx_)} - function _bFu_(param) - {var - _bFv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1954), - _bFw_= - caml_equal - (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure), - _bFv_); - return caml_call2(Runtime_ocaml_Runtime[29],_mJ_,_bFw_)} - return caml_call4(Runtime_ocaml_Runtime[62],_mK_,[0],_bFu_,_bFt_)}, - _bEW_= - function(param) - {function _bFn_(param) - {var - _bFr_=caml_call3(Runtime_ocaml_Runtime[59],0,2,0), - _bFs_=caml_call3(Runtime_ocaml_Runtime[59],61,0,0); - return caml_call2(Runtime_ocaml_Runtime[102],_bFs_,_bFr_)} - function _bFo_(param) - {var - _bFp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1953), - _bFq_= - caml_equal - (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure), - _bFp_); - return caml_call2(Runtime_ocaml_Runtime[29],_mL_,_bFq_)} - return caml_call4(Runtime_ocaml_Runtime[62],_mM_,[0],_bFo_,_bFn_)}, - _bEX_= - function(param) - {function _bFh_(param) - {var - _bFl_=caml_call3(Runtime_ocaml_Runtime[59],0,9,0), - _bFm_=caml_call3(Runtime_ocaml_Runtime[59],60,0,0); - return caml_call2(Runtime_ocaml_Runtime[102],_bFm_,_bFl_)} - function _bFi_(param) - {var - _bFj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1952), - _bFk_= - caml_equal - (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure), - _bFj_); - return caml_call2(Runtime_ocaml_Runtime[29],_mN_,_bFk_)} - return caml_call4(Runtime_ocaml_Runtime[62],_mO_,[0],_bFi_,_bFh_)}, - _bEY_= - function(param) - {function _bE$_(param) - {var - _bFf_=caml_call3(Runtime_ocaml_Runtime[59],0,4,0), - _bFg_=caml_call3(Runtime_ocaml_Runtime[59],60,0,0); - return caml_call2(Runtime_ocaml_Runtime[102],_bFg_,_bFf_)} - function _bFa_(param) - {var - _bFb_=caml_call3(Runtime_ocaml_Runtime[56],1951,7,1), - _bFc_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_naissance_assure,_bFb_); - if(_bFc_) - var - _bFd_=caml_call3(Runtime_ocaml_Runtime[56],1951,12,31), - _bFe_= - caml_call2 - (Runtime_ocaml_Runtime[99],date_naissance_assure,_bFd_); - else - var _bFe_=_bFc_; - return caml_call2(Runtime_ocaml_Runtime[29],_mP_,_bFe_)} - return caml_call4(Runtime_ocaml_Runtime[62],_mQ_,[0],_bFa_,_bE$_)}, - _bEZ_= - function(param) - {function _bE7_(param) - {return caml_call3(Runtime_ocaml_Runtime[59],60,0,0)} - function _bE8_(param) - {var - _bE9_=caml_call3(Runtime_ocaml_Runtime[56],1951,7,1), - _bE__= - caml_call2 - (Runtime_ocaml_Runtime[101],date_naissance_assure,_bE9_); - return caml_call2(Runtime_ocaml_Runtime[29],_mR_,_bE__)} - return caml_call4(Runtime_ocaml_Runtime[62],_mS_,[0],_bE8_,_bE7_)}, - _bE0_= - [0, - function(param) - {function _bE3_(param) - {return caml_call3(Runtime_ocaml_Runtime[59],62,0,0)} - function _bE4_(param) - {var - _bE5_=caml_call3(Runtime_ocaml_Runtime[56],1955,1,1), - _bE6_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_naissance_assure,_bE5_); - return caml_call2(Runtime_ocaml_Runtime[29],_mT_,_bE6_)} - return caml_call4(Runtime_ocaml_Runtime[62],_mU_,[0],_bE4_,_bE3_)}, - _bEZ_, - _bEY_, - _bEX_, - _bEW_, - _bEV_], - _bE1_=caml_call4(Runtime_ocaml_Runtime[62],_mV_,_bE0_,_bEU_,_bET_)} - catch(_bE2_) - {_bE2_ = caml_wrap_exception(_bE2_); - if(_bE2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mI_]; - throw _bE2_} - var - age_ouverture_droit= - caml_call3 - (Runtime_ocaml_Runtime[28],_mW_,Runtime_ocaml_Runtime[17],_bE1_); - return [0,age_ouverture_droit]} - function impaye_depense_logement(impaye_depense_logement_in) - {var - mode_occupation=impaye_depense_logement_in[1], - aide_versee=impaye_depense_logement_in[2], - montant_apl=impaye_depense_logement_in[3], - montant_charges=impaye_depense_logement_in[4], - depense_logement=impaye_depense_logement_in[5], - montant_dette=impaye_depense_logement_in[6]; - try - {var - _bDF_= - function(param) - {switch(mode_occupation[0]) - {case 0:return _mY_; - case 1:return _mZ_; - case 2:return _m0_; - case 3:return _m1_; - default:return _m2_}}, - _bDG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_m3_,1)}, - _bDH_=caml_call4(Runtime_ocaml_Runtime[62],_m4_,[0],_bDG_,_bDF_)} - catch(_bES_) - {_bES_ = caml_wrap_exception(_bES_); - if(_bES_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mX_]; - throw _bES_} - var - mode_occupation_impaye= - caml_call3 - (Runtime_ocaml_Runtime[28],_m5_,embed_mode_occupation_impaye,_bDH_); - try - {var - _bDI_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bDJ_=function(param){return 0}, - _bDK_= - [0, - function(param) - {function _bEL_(param){return depense_logement} - function _bEM_(param) - {var _bER_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_m7_,_bER_)} - var - _bEN_= - [0, - function(param) - {function _bEO_(param){return depense_logement} - function _bEP_(param) - {var _bEQ_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_m8_,_bEQ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_m9_,[0],_bEP_,_bEO_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_m__,_bEN_,_bEM_,_bEL_)}], - _bDL_=caml_call4(Runtime_ocaml_Runtime[62],_m$_,_bDK_,_bDJ_,_bDI_)} - catch(_bEK_) - {_bEK_ = caml_wrap_exception(_bEK_); - if(_bEK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_m6_]; - throw _bEK_} - var - depense_logement_brute= - caml_call3 - (Runtime_ocaml_Runtime[28],_na_,embed_depense_logement,_bDL_); - try - {var - _bDM_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bDN_=function(param){return 0}, - _bDO_= - function(param) - {function _bEF_(param) - {switch(depense_logement[0]) - {case 0: - var - total_echeances=depense_logement[1], - _bEI_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$13), - _bEJ_= - caml_call2(Runtime_ocaml_Runtime[65],montant_apl,_bEI_); - return [0, - caml_call2(Runtime_ocaml_Runtime[68],total_echeances,_bEJ_)]; - case 1: - var mensualite=depense_logement[1]; - return [1, - caml_call2(Runtime_ocaml_Runtime[68],mensualite,montant_apl)]; - default:var loyer=depense_logement[1];return [2,loyer]}} - function _bEG_(param) - {var _bEH_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_nc_,_bEH_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nd_,[0],_bEG_,_bEF_)}, - _bDP_= - [0, - function(param) - {function _bEC_(param) - {switch(depense_logement_brute[0]) - {case 0:var total=depense_logement_brute[1];return [0,total]; - case 1: - var mensualite=depense_logement_brute[1]; - return [1,mensualite]; - default: - var montant_loyer=depense_logement_brute[1]; - return [2, - caml_call2 - (Runtime_ocaml_Runtime[68],montant_loyer,montant_apl)]}} - function _bED_(param) - {var _bEE_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_ne_,_bEE_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nf_,[0],_bED_,_bEC_)}, - _bDO_], - _bDQ_=caml_call4(Runtime_ocaml_Runtime[62],_ng_,_bDP_,_bDN_,_bDM_)} - catch(_bEB_) - {_bEB_ = caml_wrap_exception(_bEB_); - if(_bEB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nb_]; - throw _bEB_} - var - depense_logement_nette= - caml_call3 - (Runtime_ocaml_Runtime[28],_nh_,embed_depense_logement,_bDQ_); - try - {var - _bDR_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bDS_=function(param){return 0}, - _bDT_= - function(param) - {function _bEk_(param) - {switch(depense_logement_brute[0]) - {case 0: - var - echeance_pret_brute=depense_logement_brute[1], - _bEx_=caml_call1(Runtime_ocaml_Runtime[39],cst_6), - _bEy_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$32), - _bEz_=caml_call2(Runtime_ocaml_Runtime[89],_bEy_,_bEx_); - return caml_call2 - (Runtime_ocaml_Runtime[65],echeance_pret_brute,_bEz_); - case 1: - var - mensualite_brute=depense_logement_brute[1], - _bEA_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$20); - return caml_call2 - (Runtime_ocaml_Runtime[65],mensualite_brute,_bEA_); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$79)}} - function _bEl_(param) - {var _bEv_=0 === mode_occupation_impaye[0]?0:1; - if(_bEv_) - switch(aide_versee[0]) - {case 0:var _bEw_=0;break; - case 1:var _bEw_=1;break; - default:var _bEw_=0} - else - var _bEw_=_bEv_; - return caml_call2(Runtime_ocaml_Runtime[29],_nj_,_bEw_)} - var - _bEm_= - [0, - function(param) - {function _bEn_(param) - {switch(depense_logement_nette[0]) - {case 0: - var - echeance_pret_nette=depense_logement_nette[1], - _bEr_=caml_call1(Runtime_ocaml_Runtime[39],cst_6$0), - _bEs_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$33), - _bEt_=caml_call2(Runtime_ocaml_Runtime[89],_bEs_,_bEr_); - return caml_call2 - (Runtime_ocaml_Runtime[65],echeance_pret_nette,_bEt_); - case 1: - var - mensualite_nette=depense_logement_nette[1], - _bEu_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$21); - return caml_call2 - (Runtime_ocaml_Runtime[65],mensualite_nette,_bEu_); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$80)}} - function _bEo_(param) - {var _bEp_=0 === mode_occupation_impaye[0]?0:1; - if(_bEp_) - switch(aide_versee[0]) - {case 0:var _bEq_=0;break; - case 1:var _bEq_=0;break; - default:var _bEq_=1} - else - var _bEq_=_bEp_; - return caml_call2(Runtime_ocaml_Runtime[29],_nk_,_bEq_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_nl_,[0],_bEo_,_bEn_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_nm_,_bEm_,_bEl_,_bEk_)}, - _bDU_= - [0, - function(param) - {function _bD9_(param) - {switch(depense_logement_brute[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$81); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$82); - default: - var - loyer_brut=depense_logement_brute[1], - _bEi_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$22), - _bEj_= - caml_call2 - (Runtime_ocaml_Runtime[67],loyer_brut,montant_charges); - return caml_call2(Runtime_ocaml_Runtime[65],_bEj_,_bEi_)}} - function _bD__(param) - {var _bEg_=0 === mode_occupation_impaye[0]?1:0; - if(_bEg_) - switch(aide_versee[0]) - {case 0:var _bEh_=0;break; - case 1:var _bEh_=1;break; - default:var _bEh_=0} - else - var _bEh_=_bEg_; - return caml_call2(Runtime_ocaml_Runtime[29],_nn_,_bEh_)} - var - _bD$_= - [0, - function(param) - {function _bEa_(param) - {switch(depense_logement_nette[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$83); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$84); - default: - var - loyer_net=depense_logement_nette[1], - _bEe_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$23), - _bEf_= - caml_call2 - (Runtime_ocaml_Runtime[67],loyer_net,montant_charges); - return caml_call2(Runtime_ocaml_Runtime[65],_bEf_,_bEe_)}} - function _bEb_(param) - {var _bEc_=0 === mode_occupation_impaye[0]?1:0; - if(_bEc_) - switch(aide_versee[0]) - {case 0:var _bEd_=1;break; - case 1:var _bEd_=0;break; - default:var _bEd_=0} - else - var _bEd_=_bEc_; - return caml_call2(Runtime_ocaml_Runtime[29],_no_,_bEd_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_np_,[0],_bEb_,_bEa_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_nq_,_bD$_,_bD__,_bD9_)}, - _bDT_], - _bDV_=caml_call4(Runtime_ocaml_Runtime[62],_nr_,_bDU_,_bDS_,_bDR_)} - catch(_bD8_) - {_bD8_ = caml_wrap_exception(_bD8_); - if(_bD8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ni_]; - throw _bD8_} - var - seuil_impaye_depense_de_logeme= - caml_call3 - (Runtime_ocaml_Runtime[28],_ns_,Runtime_ocaml_Runtime[13],_bDV_); - try - {var - _bDW_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bDX_=function(param){return 0}, - _bDY_= - [0, - function(param) - {function _bD1_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[72], - montant_dette, - seuil_impaye_depense_de_logeme) - ?montant_dette - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$85)} - function _bD2_(param) - {var _bD7_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_nu_,_bD7_)} - var - _bD3_= - [0, - function(param) - {function _bD4_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[72], - montant_dette, - seuil_impaye_depense_de_logeme) - ?montant_dette - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$86)} - function _bD5_(param) - {var _bD6_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_nv_,_bD6_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_nw_,[0],_bD5_,_bD4_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_nx_,_bD3_,_bD2_,_bD1_)}], - _bDZ_=caml_call4(Runtime_ocaml_Runtime[62],_ny_,_bDY_,_bDX_,_bDW_)} - catch(_bD0_) - {_bD0_ = caml_wrap_exception(_bD0_); - if(_bD0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nt_]; - throw _bD0_} - var - montant_impaye= - caml_call3 - (Runtime_ocaml_Runtime[28],_nz_,Runtime_ocaml_Runtime[13],_bDZ_); - return [0,montant_impaye]} - function base_mensuelle_allocations_fam$5(base_mensuelle_allocations_fam) - {var date_courante=base_mensuelle_allocations_fam[1]; - try - {var - _bC$_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bDa_=function(param){return 0}, - _bDb_= - function(param) - {function _bDz_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228$0)} - function _bDA_(param) - {var - _bDB_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1), - _bDC_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDB_); - if(_bDC_) - var - _bDD_=caml_call3(Runtime_ocaml_Runtime[56],2023,4,1), - _bDE_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDD_); - else - var _bDE_=_bDC_; - return caml_call2(Runtime_ocaml_Runtime[29],_nB_,_bDE_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nC_,[0],_bDA_,_bDz_)}, - _bDc_= - function(param) - {function _bDt_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481$0)} - function _bDu_(param) - {var - _bDv_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1), - _bDw_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDv_); - if(_bDw_) - var - _bDx_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1), - _bDy_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDx_); - else - var _bDy_=_bDw_; - return caml_call2(Runtime_ocaml_Runtime[29],_nD_,_bDy_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nE_,[0],_bDu_,_bDt_)}, - _bDd_= - function(param) - {function _bDn_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440$0)} - function _bDo_(param) - {var - _bDp_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1), - _bDq_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDp_); - if(_bDq_) - var - _bDr_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1), - _bDs_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDr_); - else - var _bDs_=_bDq_; - return caml_call2(Runtime_ocaml_Runtime[29],_nF_,_bDs_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nG_,[0],_bDo_,_bDn_)}, - _bDe_= - [0, - function(param) - {function _bDh_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316$0)} - function _bDi_(param) - {var - _bDj_=caml_call3(Runtime_ocaml_Runtime[56],2019,4,1), - _bDk_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDj_); - if(_bDk_) - var - _bDl_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1), - _bDm_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDl_); - else - var _bDm_=_bDk_; - return caml_call2(Runtime_ocaml_Runtime[29],_nH_,_bDm_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nI_,[0],_bDi_,_bDh_)}, - _bDd_, - _bDc_, - _bDb_], - _bDf_=caml_call4(Runtime_ocaml_Runtime[62],_nJ_,_bDe_,_bDa_,_bC$_)} - catch(_bDg_) - {_bDg_ = caml_wrap_exception(_bDg_); - if(_bDg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nA_]; - throw _bDg_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_nK_,Runtime_ocaml_Runtime[13],_bDf_); - return [0,montant]} - function smic$1(smic_in) - {var date_courante=smic_in[1],residence=smic_in[2]; - try - {var - _bBi_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bBj_=function(param){return 0}, - _bBk_= - function(param) - {function _bC4_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_819$0)} - function _bC5_(param) - {var - _bC6_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1), - _bC7_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bC6_); - if(_bC7_) - var - _bC8_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31), - _bC9_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bC8_), - _bC__=_bC9_?caml_equal(residence,_nM_):_bC9_; - else - var _bC__=_bC7_; - return caml_call2(Runtime_ocaml_Runtime[29],_nN_,_bC__)} - return caml_call4(Runtime_ocaml_Runtime[62],_nO_,[0],_bC5_,_bC4_)}, - _bBl_= - function(param) - {function _bCQ_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085$0)} - function _bCR_(param) - {var - _bCS_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1), - _bCT_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCS_); - if(_bCT_) - {var - _bCU_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31), - _bCV_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCU_); - if(_bCV_) - {var _bCW_=caml_equal(residence,_nP_); - if(_bCW_) - var _bCX_=_bCW_; - else - {var _bCY_=caml_equal(residence,_nR_); - if(_bCY_) - var _bCX_=_bCY_; - else - {var _bCZ_=caml_equal(residence,_nS_); - if(_bCZ_) - var _bCX_=_bCZ_; - else - {var _bC0_=caml_equal(residence,_nT_); - if(_bC0_) - var _bCX_=_bC0_; - else - {var _bC1_=caml_equal(residence,_nU_); - if(_bC1_) - var _bCX_=_bC1_; - else - {var _bC2_=caml_equal(residence,_nV_); - if(_bC2_) - var _bCX_=_bC2_; - else - var - _bC3_=caml_equal(residence,_nW_), - _bCX_=_bC3_ || caml_equal(residence,_nX_)}}}}}} - else - var _bCX_=_bCV_} - else - var _bCX_=_bCT_; - return caml_call2(Runtime_ocaml_Runtime[29],_nQ_,_bCX_)} - return caml_call4(Runtime_ocaml_Runtime[62],_nY_,[0],_bCR_,_bCQ_)}, - _bBm_= - function(param) - {function _bCJ_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_798$0)} - function _bCK_(param) - {var - _bCL_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _bCM_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCL_); - if(_bCM_) - var - _bCN_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30), - _bCO_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCN_), - _bCP_=_bCO_?caml_equal(residence,_nZ_):_bCO_; - else - var _bCP_=_bCM_; - return caml_call2(Runtime_ocaml_Runtime[29],_n0_,_bCP_)} - return caml_call4(Runtime_ocaml_Runtime[62],_n1_,[0],_bCK_,_bCJ_)}, - _bBn_= - function(param) - {function _bCv_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057$0)} - function _bCw_(param) - {var - _bCx_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _bCy_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCx_); - if(_bCy_) - {var - _bCz_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30), - _bCA_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCz_); - if(_bCA_) - {var _bCB_=caml_equal(residence,_n2_); - if(_bCB_) - var _bCC_=_bCB_; - else - {var _bCD_=caml_equal(residence,_n4_); - if(_bCD_) - var _bCC_=_bCD_; - else - {var _bCE_=caml_equal(residence,_n5_); - if(_bCE_) - var _bCC_=_bCE_; - else - {var _bCF_=caml_equal(residence,_n6_); - if(_bCF_) - var _bCC_=_bCF_; - else - {var _bCG_=caml_equal(residence,_n7_); - if(_bCG_) - var _bCC_=_bCG_; - else - {var _bCH_=caml_equal(residence,_n8_); - if(_bCH_) - var _bCC_=_bCH_; - else - var - _bCI_=caml_equal(residence,_n9_), - _bCC_=_bCI_ || caml_equal(residence,_n__)}}}}}} - else - var _bCC_=_bCA_} - else - var _bCC_=_bCy_; - return caml_call2(Runtime_ocaml_Runtime[29],_n3_,_bCC_)} - return caml_call4(Runtime_ocaml_Runtime[62],_n$_,[0],_bCw_,_bCv_)}, - _bBo_= - function(param) - {function _bCo_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_774$0)} - function _bCp_(param) - {var - _bCq_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _bCr_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCq_); - if(_bCr_) - var - _bCs_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _bCt_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCs_), - _bCu_=_bCt_?caml_equal(residence,_oa_):_bCt_; - else - var _bCu_=_bCr_; - return caml_call2(Runtime_ocaml_Runtime[29],_ob_,_bCu_)} - return caml_call4(Runtime_ocaml_Runtime[62],_oc_,[0],_bCp_,_bCo_)}, - _bBp_= - function(param) - {function _bCa_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025$0)} - function _bCb_(param) - {var - _bCc_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _bCd_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCc_); - if(_bCd_) - {var - _bCe_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31), - _bCf_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCe_); - if(_bCf_) - {var _bCg_=caml_equal(residence,_od_); - if(_bCg_) - var _bCh_=_bCg_; - else - {var _bCi_=caml_equal(residence,_of_); - if(_bCi_) - var _bCh_=_bCi_; - else - {var _bCj_=caml_equal(residence,_og_); - if(_bCj_) - var _bCh_=_bCj_; - else - {var _bCk_=caml_equal(residence,_oh_); - if(_bCk_) - var _bCh_=_bCk_; - else - {var _bCl_=caml_equal(residence,_oi_); - if(_bCl_) - var _bCh_=_bCl_; - else - {var _bCm_=caml_equal(residence,_oj_); - if(_bCm_) - var _bCh_=_bCm_; - else - var - _bCn_=caml_equal(residence,_ok_), - _bCh_=_bCn_ || caml_equal(residence,_ol_)}}}}}} - else - var _bCh_=_bCf_} - else - var _bCh_=_bCd_; - return caml_call2(Runtime_ocaml_Runtime[29],_oe_,_bCh_)} - return caml_call4(Runtime_ocaml_Runtime[62],_om_,[0],_bCb_,_bCa_)}, - _bBq_= - function(param) - {function _bB5_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_766$0)} - function _bB6_(param) - {var - _bB7_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bB8_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bB7_); - if(_bB8_) - var - _bB9_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _bB__= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bB9_), - _bB$_=_bB__?caml_equal(residence,_on_):_bB__; - else - var _bB$_=_bB8_; - return caml_call2(Runtime_ocaml_Runtime[29],_oo_,_bB$_)} - return caml_call4(Runtime_ocaml_Runtime[62],_op_,[0],_bB6_,_bB5_)}, - _bBr_= - function(param) - {function _bBR_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015$0)} - function _bBS_(param) - {var - _bBT_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bBU_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBT_); - if(_bBU_) - {var - _bBV_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31), - _bBW_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBV_); - if(_bBW_) - {var _bBX_=caml_equal(residence,_oq_); - if(_bBX_) - var _bBY_=_bBX_; - else - {var _bBZ_=caml_equal(residence,_os_); - if(_bBZ_) - var _bBY_=_bBZ_; - else - {var _bB0_=caml_equal(residence,_ot_); - if(_bB0_) - var _bBY_=_bB0_; - else - {var _bB1_=caml_equal(residence,_ou_); - if(_bB1_) - var _bBY_=_bB1_; - else - {var _bB2_=caml_equal(residence,_ov_); - if(_bB2_) - var _bBY_=_bB2_; - else - {var _bB3_=caml_equal(residence,_ow_); - if(_bB3_) - var _bBY_=_bB3_; - else - var - _bB4_=caml_equal(residence,_ox_), - _bBY_=_bB4_ || caml_equal(residence,_oy_)}}}}}} - else - var _bBY_=_bBW_} - else - var _bBY_=_bBU_; - return caml_call2(Runtime_ocaml_Runtime[29],_or_,_bBY_)} - return caml_call4(Runtime_ocaml_Runtime[62],_oz_,[0],_bBS_,_bBR_)}, - _bBs_= - function(param) - {function _bBK_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_757$0)} - function _bBL_(param) - {var - _bBM_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _bBN_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBM_); - if(_bBN_) - var - _bBO_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _bBP_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBO_), - _bBQ_=_bBP_?caml_equal(residence,_oA_):_bBP_; - else - var _bBQ_=_bBN_; - return caml_call2(Runtime_ocaml_Runtime[29],_oB_,_bBQ_)} - return caml_call4(Runtime_ocaml_Runtime[62],_oC_,[0],_bBL_,_bBK_)}, - _bBt_= - [0, - function(param) - {function _bBw_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003$0)} - function _bBx_(param) - {var - _bBy_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _bBz_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBy_); - if(_bBz_) - {var - _bBA_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31), - _bBB_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBA_); - if(_bBB_) - {var _bBC_=caml_equal(residence,_oD_); - if(_bBC_) - var _bBD_=_bBC_; - else - {var _bBE_=caml_equal(residence,_oF_); - if(_bBE_) - var _bBD_=_bBE_; - else - {var _bBF_=caml_equal(residence,_oG_); - if(_bBF_) - var _bBD_=_bBF_; - else - {var _bBG_=caml_equal(residence,_oH_); - if(_bBG_) - var _bBD_=_bBG_; - else - {var _bBH_=caml_equal(residence,_oI_); - if(_bBH_) - var _bBD_=_bBH_; - else - {var _bBI_=caml_equal(residence,_oJ_); - if(_bBI_) - var _bBD_=_bBI_; - else - var - _bBJ_=caml_equal(residence,_oK_), - _bBD_=_bBJ_ || caml_equal(residence,_oL_)}}}}}} - else - var _bBD_=_bBB_} - else - var _bBD_=_bBz_; - return caml_call2(Runtime_ocaml_Runtime[29],_oE_,_bBD_)} - return caml_call4(Runtime_ocaml_Runtime[62],_oM_,[0],_bBx_,_bBw_)}, - _bBs_, - _bBr_, - _bBq_, - _bBp_, - _bBo_, - _bBn_, - _bBm_, - _bBl_, - _bBk_], - _bBu_=caml_call4(Runtime_ocaml_Runtime[62],_oN_,_bBt_,_bBj_,_bBi_)} - catch(_bBv_) - {_bBv_ = caml_wrap_exception(_bBv_); - if(_bBv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nL_]; - throw _bBv_} - var - brut_horaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_oO_,Runtime_ocaml_Runtime[13],_bBu_); - return [0,brut_horaire]} - function calcul_aide_personnalisee_loge(calcul_aide_personnalisee_loge) - {var - loyer_principal=calcul_aide_personnalisee_loge[1], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], - beneficiaire_aide_adulte_ou_en=calcul_aide_personnalisee_loge[3], - date_courante=calcul_aide_personnalisee_loge[4], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[5], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[6], - zone=calcul_aide_personnalisee_loge[7], - logement_est_chambre=calcul_aide_personnalisee_loge[8], - agees_ou_handicap_adultes_hebe=calcul_aide_personnalisee_loge[9], - type_aide=calcul_aide_personnalisee_loge[10], - colocation=calcul_aide_personnalisee_loge[11], - reduction_loyer_solidarite=calcul_aide_personnalisee_loge[12]; - try - {var - _brl_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_98)}, - _brm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oQ_,1)}, - _brn_=caml_call4(Runtime_ocaml_Runtime[62],_oR_,[0],_brm_,_brl_)} - catch(_bBh_) - {_bBh_ = caml_wrap_exception(_bBh_); - if(_bBh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_oP_]; - throw _bBh_} - var - fraction_l832_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_oS_,Runtime_ocaml_Runtime[15],_brn_); - try - {var - _bro_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500)}, - _brp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oU_,1)}, - _brq_=caml_call4(Runtime_ocaml_Runtime[62],_oV_,[0],_brp_,_bro_)} - catch(_bBg_) - {_bBg_ = caml_wrap_exception(_bBg_); - if(_bBg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_oT_]; - throw _bBg_} - var - montant_forfaitaire_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_oW_,Runtime_ocaml_Runtime[13],_brq_); - try - {var - _brr_=function(param){return date_courante}, - _brs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oY_,1)}, - _brt_=caml_call4(Runtime_ocaml_Runtime[62],_oZ_,[0],_brs_,_brr_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_o0_,Runtime_ocaml_Runtime[16],_brt_)} - catch(_bBf_) - {_bBf_ = caml_wrap_exception(_bBf_); - if(_bBf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_oX_]; - throw _bBf_} - var - _bru_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_o1_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_o2_,_bru_), - contributions_sociales_dot_mon=result[1]; - try - {var - _brv_=function(param){throw Runtime_ocaml_Runtime[2]}, - _brw_=function(param){return 0}, - _brx_= - [0, - function(param) - {function _bAU_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$87))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$34))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$24))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$9))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$5))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_6$1))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173); - var - _bA$_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$2), - _bBa_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bA$_), - _bBb_=caml_call1(Runtime_ocaml_Runtime[41],_bBa_), - _bBc_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006), - _bBd_=caml_call2(Runtime_ocaml_Runtime[88],_bBc_,_bBb_), - _bBe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$0); - return caml_call2(Runtime_ocaml_Runtime[86],_bBe_,_bBd_)} - function _bAV_(param) - {var - _bA9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bA__= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bA9_); - return caml_call2(Runtime_ocaml_Runtime[29],_o4_,_bA__)} - var - _bAW_= - [0, - function(param) - {function _bAX_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$88))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$35))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$25))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$10))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$6))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$0))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_6$3))) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$1); - var - _bA3_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$4), - _bA4_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bA3_), - _bA5_=caml_call1(Runtime_ocaml_Runtime[41],_bA4_), - _bA6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$0), - _bA7_=caml_call2(Runtime_ocaml_Runtime[88],_bA6_,_bA5_), - _bA8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$2); - return caml_call2(Runtime_ocaml_Runtime[86],_bA8_,_bA7_)} - function _bAY_(param) - {var - _bAZ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bA0_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAZ_); - if(_bA0_) - var - _bA1_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bA2_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bA1_); - else - var _bA2_=_bA0_; - return caml_call2(Runtime_ocaml_Runtime[29],_o5_,_bA2_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_o6_,[0],_bAY_,_bAX_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_o7_,_bAW_,_bAV_,_bAU_)}], - _bry_=caml_call4(Runtime_ocaml_Runtime[62],_o8_,_brx_,_brw_,_brv_)} - catch(_bAT_) - {_bAT_ = caml_wrap_exception(_bAT_); - if(_bAT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_o3_]; - throw _bAT_} - var - taux_composition_familiale= - caml_call3 - (Runtime_ocaml_Runtime[28],_o9_,Runtime_ocaml_Runtime[15],_bry_); - try - {var - _brz_=function(param){throw Runtime_ocaml_Runtime[2]}, - _brA_=function(param){return 0}, - _brB_= - function(param) - {function _bAH_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$89))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_458800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_657200); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$36))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_783900); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$26))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_801500); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$11))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_832200); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$7))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_863100); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$1))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_893800); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_6$5))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_924600); - var - _bAN_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$6), - _bAO_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAN_), - _bAP_=caml_call1(Runtime_ocaml_Runtime[41],_bAO_), - _bAQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500), - _bAR_=caml_call2(Runtime_ocaml_Runtime[65],_bAQ_,_bAP_), - _bAS_=caml_call1(Runtime_ocaml_Runtime[31],cst_924600$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bAS_,_bAR_)} - function _bAI_(param) - {var - _bAJ_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _bAK_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bAJ_); - if(_bAK_) - var - _bAL_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _bAM_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAL_); - else - var _bAM_=_bAK_; - return caml_call2(Runtime_ocaml_Runtime[29],_o$_,_bAM_)} - return caml_call4(Runtime_ocaml_Runtime[62],_pa_,[0],_bAI_,_bAH_)}, - _brC_= - [0, - function(param) - {function _bAx_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$90))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_468300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_670900); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$37))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_800200); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$27))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_819200); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$12))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_849500); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$8))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_881100); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$2))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_912400); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_6$7))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_943900); - var - _bAB_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$8), - _bAC_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAB_), - _bAD_=caml_call1(Runtime_ocaml_Runtime[41],_bAC_), - _bAE_=caml_call1(Runtime_ocaml_Runtime[31],cst_31100), - _bAF_=caml_call2(Runtime_ocaml_Runtime[65],_bAE_,_bAD_), - _bAG_=caml_call1(Runtime_ocaml_Runtime[31],cst_943900$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bAG_,_bAF_)} - function _bAy_(param) - {var - _bAz_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _bAA_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAz_); - return caml_call2(Runtime_ocaml_Runtime[29],_pb_,_bAA_)} - return caml_call4(Runtime_ocaml_Runtime[62],_pc_,[0],_bAy_,_bAx_)}, - _brB_], - _brD_=caml_call4(Runtime_ocaml_Runtime[62],_pd_,_brC_,_brA_,_brz_)} - catch(_bAw_) - {_bAw_ = caml_wrap_exception(_bAw_); - if(_bAw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_o__]; - throw _bAw_} - var - abattement_forfaitaire_d823_17= - caml_call3 - (Runtime_ocaml_Runtime[28],_pe_,Runtime_ocaml_Runtime[13],_brD_); - try - {var - _brE_=function(param){throw Runtime_ocaml_Runtime[2]}, - _brF_=function(param){return 0}, - _brG_= - function(param) - {function _bAk_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$91))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25869) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31664); - var - _bAq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$38), - _bAr_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAq_), - _bAs_=caml_call1(Runtime_ocaml_Runtime[41],_bAr_), - _bAt_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186), - _bAu_=caml_call2(Runtime_ocaml_Runtime[65],_bAt_,_bAs_), - _bAv_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630); - return caml_call2(Runtime_ocaml_Runtime[67],_bAv_,_bAu_)} - function _bAl_(param) - {var - _bAm_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bAn_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAm_); - if(_bAn_) - var - _bAo_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bAp_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bAo_); - else - var _bAp_=_bAn_; - return caml_call2(Runtime_ocaml_Runtime[29],_pg_,_bAp_)} - return caml_call4(Runtime_ocaml_Runtime[62],_ph_,[0],_bAl_,_bAk_)}, - _brH_= - [0, - function(param) - {function _bAa_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$92))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31797); - var - _bAe_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$39), - _bAf_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAe_), - _bAg_=caml_call1(Runtime_ocaml_Runtime[41],_bAf_), - _bAh_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208), - _bAi_=caml_call2(Runtime_ocaml_Runtime[65],_bAh_,_bAg_), - _bAj_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780); - return caml_call2(Runtime_ocaml_Runtime[67],_bAj_,_bAi_)} - function _bAb_(param) - {var - _bAc_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bAd_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAc_); - return caml_call2(Runtime_ocaml_Runtime[29],_pi_,_bAd_)} - return caml_call4(Runtime_ocaml_Runtime[62],_pj_,[0],_bAb_,_bAa_)}, - _brG_], - _brI_=caml_call4(Runtime_ocaml_Runtime[62],_pk_,_brH_,_brF_,_brE_)} - catch(_bz$_) - {_bz$_ = caml_wrap_exception(_bz$_); - if(_bz$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pf_]; - throw _bz$_} - var - loyer_reference= - caml_call3 - (Runtime_ocaml_Runtime[28],_pl_,Runtime_ocaml_Runtime[13],_brI_); - try - {var - _brJ_= - function(param) - {switch(type_aide[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$93); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$0)}}, - _brK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pn_,1)}, - _brL_=caml_call4(Runtime_ocaml_Runtime[62],_po_,[0],_brK_,_brJ_)} - catch(_bz__) - {_bz__ = caml_wrap_exception(_bz__); - if(_bz__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pm_]; - throw _bz__} - var - montant_minimal_aide_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_pp_,Runtime_ocaml_Runtime[13],_brL_); - try - {var - _brM_= - function(param) - {function _byO_(param){throw Runtime_ocaml_Runtime[2]} - function _byP_(param){return 0} - function _byQ_(param) - {function _bzK_(param) - {switch(zone[0]) - {case 0: - var - _bzS_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$40), - _bzT_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzS_), - _bzU_=caml_call1(Runtime_ocaml_Runtime[41],_bzT_), - _bzV_=caml_call1(Runtime_ocaml_Runtime[31],cst_5870), - _bzW_=caml_call2(Runtime_ocaml_Runtime[65],_bzV_,_bzU_), - _bzX_=caml_call1(Runtime_ocaml_Runtime[31],cst_40460); - return caml_call2(Runtime_ocaml_Runtime[67],_bzX_,_bzW_); - case 1: - var - _bzY_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$41), - _bzZ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzY_), - _bz0_=caml_call1(Runtime_ocaml_Runtime[41],_bzZ_), - _bz1_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186$0), - _bz2_=caml_call2(Runtime_ocaml_Runtime[65],_bz1_,_bz0_), - _bz3_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bz3_,_bz2_); - default: - var - _bz4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$42), - _bz5_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bz4_), - _bz6_=caml_call1(Runtime_ocaml_Runtime[41],_bz5_), - _bz7_=caml_call1(Runtime_ocaml_Runtime[31],cst_4723), - _bz8_=caml_call2(Runtime_ocaml_Runtime[65],_bz7_,_bz6_), - _bz9_=caml_call1(Runtime_ocaml_Runtime[31],cst_32956); - return caml_call2(Runtime_ocaml_Runtime[67],_bz9_,_bz8_)}} - function _bzL_(param) - {var - _bzM_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bzN_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzM_); - if(_bzN_) - var - _bzO_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bzP_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzO_); - else - var _bzP_=_bzN_; - if(_bzP_) - var - _bzQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$43), - _bzR_= - caml_call2 - (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bzQ_); - else - var _bzR_=_bzP_; - return caml_call2(Runtime_ocaml_Runtime[29],_pr_,_bzR_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ps_,[0],_bzL_,_bzK_)} - function _byR_(param) - {function _bzC_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_35799); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_31664$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29392)}} - function _bzD_(param) - {var - _bzE_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bzF_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzE_); - if(_bzF_) - var - _bzG_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bzH_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzG_); - else - var _bzH_=_bzF_; - if(_bzH_) - var - _bzI_=0 === situation_familiale_calcul_apl[0]?0:1, - _bzJ_= - _bzI_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$94)) - :_bzI_; - else - var _bzJ_=_bzH_; - return caml_call2(Runtime_ocaml_Runtime[29],_pt_,_bzJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pu_,[0],_bzD_,_bzC_)} - function _byS_(param) - {function _bzu_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29682); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_25859); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24246)}} - function _bzv_(param) - {var - _bzw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bzx_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzw_); - if(_bzx_) - var - _bzy_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bzz_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzy_); - else - var _bzz_=_bzx_; - if(_bzz_) - var - _bzA_=0 === situation_familiale_calcul_apl[0]?1:0, - _bzB_= - _bzA_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$95)) - :_bzA_; - else - var _bzB_=_bzz_; - return caml_call2(Runtime_ocaml_Runtime[29],_pv_,_bzB_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pw_,[0],_bzv_,_bzu_)} - function _byT_(param) - {function _by8_(param) - {switch(zone[0]) - {case 0: - var - _bzc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$44), - _bzd_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzc_), - _bze_=caml_call1(Runtime_ocaml_Runtime[41],_bzd_), - _bzf_=caml_call1(Runtime_ocaml_Runtime[31],cst_5895), - _bzg_=caml_call2(Runtime_ocaml_Runtime[65],_bzf_,_bze_), - _bzh_=caml_call1(Runtime_ocaml_Runtime[31],cst_40630); - return caml_call2(Runtime_ocaml_Runtime[67],_bzh_,_bzg_); - case 1: - var - _bzi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$45), - _bzj_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzi_), - _bzk_=caml_call1(Runtime_ocaml_Runtime[41],_bzj_), - _bzl_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$0), - _bzm_=caml_call2(Runtime_ocaml_Runtime[65],_bzl_,_bzk_), - _bzn_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bzn_,_bzm_); - default: - var - _bzo_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$46), - _bzp_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzo_), - _bzq_=caml_call1(Runtime_ocaml_Runtime[41],_bzp_), - _bzr_=caml_call1(Runtime_ocaml_Runtime[31],cst_4743), - _bzs_=caml_call2(Runtime_ocaml_Runtime[65],_bzr_,_bzq_), - _bzt_=caml_call1(Runtime_ocaml_Runtime[31],cst_33094); - return caml_call2(Runtime_ocaml_Runtime[67],_bzt_,_bzs_)}} - function _by9_(param) - {var - _by__=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _by$_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_by__); - if(_by$_) - var - _bza_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$47), - _bzb_= - caml_call2 - (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bza_); - else - var _bzb_=_by$_; - return caml_call2(Runtime_ocaml_Runtime[29],_px_,_bzb_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_py_,[0],_by9_,_by8_)} - function _byU_(param) - {function _by2_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_35949); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29515)}} - function _by3_(param) - {var - _by4_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _by5_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_by4_); - if(_by5_) - var - _by6_=0 === situation_familiale_calcul_apl[0]?0:1, - _by7_= - _by6_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$96)) - :_by6_; - else - var _by7_=_by5_; - return caml_call2(Runtime_ocaml_Runtime[29],_pz_,_by7_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pA_,[0],_by3_,_by2_)} - var - _byV_= - [0, - function(param) - {function _byW_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29807); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_25978$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24348)}} - function _byX_(param) - {var - _byY_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _byZ_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byY_); - if(_byZ_) - var - _by0_=0 === situation_familiale_calcul_apl[0]?1:0, - _by1_= - _by0_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$97)) - :_by0_; - else - var _by1_=_byZ_; - return caml_call2(Runtime_ocaml_Runtime[29],_pB_,_by1_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pC_,[0],_byX_,_byW_)}, - _byU_, - _byT_, - _byS_, - _byR_, - _byQ_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_pD_,_byV_,_byP_,_byO_)}, - _brN_=function(param){return 1}, - _brO_= - function(param) - {function _byj_(param) - {function _byA_(param){throw Runtime_ocaml_Runtime[2]} - function _byB_(param){return 0} - function _byC_(param) - {function _byI_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26714); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23282); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_21821)}} - function _byJ_(param) - {var - _byK_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _byL_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_byK_); - if(_byL_) - var - _byM_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _byN_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byM_), - logement_est_chambre$0=_byN_?logement_est_chambre:_byN_; - else - var logement_est_chambre$0=_byL_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_pE_,logement_est_chambre$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pF_,[0],_byJ_,_byI_)} - var - _byD_= - [0, - function(param) - {function _byE_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26826); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23380); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_21913)}} - function _byF_(param) - {var - _byG_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _byH_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byG_), - logement_est_chambre$0=_byH_?logement_est_chambre:_byH_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_pG_,logement_est_chambre$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pH_,[0],_byF_,_byE_)}, - _byC_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_pI_,_byD_,_byB_,_byA_)} - function _byk_(param){return 1} - var - _byl_= - [0, - function(param) - {function _bym_(param){throw Runtime_ocaml_Runtime[2]} - function _byn_(param){return 0} - function _byo_(param) - {function _byu_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22262); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19402); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18185)}} - function _byv_(param) - {var - _byw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _byx_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_byw_); - if(_byx_) - var - _byy_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _byz_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byy_), - logement_est_chambre$0=_byz_?logement_est_chambre:_byz_; - else - var logement_est_chambre$0=_byx_; - var - agees_ou_handicap_adultes_hebe$0= - logement_est_chambre$0 - ?agees_ou_handicap_adultes_hebe - :logement_est_chambre$0; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _pJ_, - agees_ou_handicap_adultes_hebe$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pK_,[0],_byv_,_byu_)} - var - _byp_= - [0, - function(param) - {function _byq_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22355); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19484); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18261)}} - function _byr_(param) - {var - _bys_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _byt_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bys_), - logement_est_chambre$0=_byt_?logement_est_chambre:_byt_, - agees_ou_handicap_adultes_hebe$0= - logement_est_chambre$0 - ?agees_ou_handicap_adultes_hebe - :logement_est_chambre$0; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _pL_, - agees_ou_handicap_adultes_hebe$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pM_,[0],_byr_,_byq_)}, - _byo_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_pN_,_byp_,_byn_,_bym_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_pO_,_byl_,_byk_,_byj_)}, - _brP_= - [0, - function(param) - {function _bwZ_(param){throw Runtime_ocaml_Runtime[2]} - function _bw0_(param){return 0} - function _bw1_(param) - {function _bxV_(param) - {switch(zone[0]) - {case 0: - var - _bx3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$48), - _bx4_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bx3_), - _bx5_=caml_call1(Runtime_ocaml_Runtime[41],_bx4_), - _bx6_=caml_call1(Runtime_ocaml_Runtime[31],cst_4403), - _bx7_=caml_call2(Runtime_ocaml_Runtime[65],_bx6_,_bx5_), - _bx8_=caml_call1(Runtime_ocaml_Runtime[31],cst_30345); - return caml_call2(Runtime_ocaml_Runtime[67],_bx8_,_bx7_); - case 1: - var - _bx9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$49), - _bx__= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bx9_), - _bx$_=caml_call1(Runtime_ocaml_Runtime[41],_bx__), - _bya_=caml_call1(Runtime_ocaml_Runtime[31],cst_3890), - _byb_=caml_call2(Runtime_ocaml_Runtime[65],_bya_,_bx$_), - _byc_=caml_call1(Runtime_ocaml_Runtime[31],cst_26723); - return caml_call2(Runtime_ocaml_Runtime[67],_byc_,_byb_); - default: - var - _byd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$50), - _bye_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_byd_), - _byf_=caml_call1(Runtime_ocaml_Runtime[41],_bye_), - _byg_=caml_call1(Runtime_ocaml_Runtime[31],cst_3542), - _byh_=caml_call2(Runtime_ocaml_Runtime[65],_byg_,_byf_), - _byi_=caml_call1(Runtime_ocaml_Runtime[31],cst_24717); - return caml_call2(Runtime_ocaml_Runtime[67],_byi_,_byh_)}} - function _bxW_(param) - {var - _bxX_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bxY_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxX_); - if(_bxY_) - var - _bxZ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bx0_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxZ_), - colocation$0=_bx0_?colocation:_bx0_; - else - var colocation$0=_bxY_; - if(colocation$0) - var - _bx1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$51), - _bx2_= - caml_call2 - (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bx1_); - else - var _bx2_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pP_,_bx2_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pQ_,[0],_bxW_,_bxV_)} - function _bw2_(param) - {function _bxN_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26849); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23748); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22044)}} - function _bxO_(param) - {var - _bxP_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bxQ_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxP_); - if(_bxQ_) - var - _bxR_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bxS_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxR_), - colocation$0=_bxS_?colocation:_bxS_; - else - var colocation$0=_bxQ_; - if(colocation$0) - var - _bxT_=0 === situation_familiale_calcul_apl[0]?0:1, - _bxU_= - _bxT_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$98)) - :_bxT_; - else - var _bxU_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pR_,_bxU_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pS_,[0],_bxO_,_bxN_)} - function _bw3_(param) - {function _bxF_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22262$0); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19402$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18185$0)}} - function _bxG_(param) - {var - _bxH_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bxI_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxH_); - if(_bxI_) - var - _bxJ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bxK_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxJ_), - colocation$0=_bxK_?colocation:_bxK_; - else - var colocation$0=_bxI_; - if(colocation$0) - var - _bxL_=0 === situation_familiale_calcul_apl[0]?1:0, - _bxM_= - _bxL_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$99)) - :_bxL_; - else - var _bxM_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pT_,_bxM_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pU_,[0],_bxG_,_bxF_)} - function _bw4_(param) - {function _bxh_(param) - {switch(zone[0]) - {case 0: - var - _bxn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$52), - _bxo_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxn_), - _bxp_=caml_call1(Runtime_ocaml_Runtime[41],_bxo_), - _bxq_=caml_call1(Runtime_ocaml_Runtime[31],cst_4421), - _bxr_=caml_call2(Runtime_ocaml_Runtime[65],_bxq_,_bxp_), - _bxs_=caml_call1(Runtime_ocaml_Runtime[31],cst_30473); - return caml_call2(Runtime_ocaml_Runtime[67],_bxs_,_bxr_); - case 1: - var - _bxt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$53), - _bxu_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxt_), - _bxv_=caml_call1(Runtime_ocaml_Runtime[41],_bxu_), - _bxw_=caml_call1(Runtime_ocaml_Runtime[31],cst_3906), - _bxx_=caml_call2(Runtime_ocaml_Runtime[65],_bxw_,_bxv_), - _bxy_=caml_call1(Runtime_ocaml_Runtime[31],cst_26835); - return caml_call2(Runtime_ocaml_Runtime[67],_bxy_,_bxx_); - default: - var - _bxz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$54), - _bxA_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxz_), - _bxB_=caml_call1(Runtime_ocaml_Runtime[41],_bxA_), - _bxC_=caml_call1(Runtime_ocaml_Runtime[31],cst_3557), - _bxD_=caml_call2(Runtime_ocaml_Runtime[65],_bxC_,_bxB_), - _bxE_=caml_call1(Runtime_ocaml_Runtime[31],cst_24821); - return caml_call2(Runtime_ocaml_Runtime[67],_bxE_,_bxD_)}} - function _bxi_(param) - {var - _bxj_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bxk_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxj_), - colocation$0=_bxk_?colocation:_bxk_; - if(colocation$0) - var - _bxl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$55), - _bxm_= - caml_call2 - (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bxl_); - else - var _bxm_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pV_,_bxm_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pW_,[0],_bxi_,_bxh_)} - function _bw5_(param) - {function _bxb_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26962); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23848); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22136)}} - function _bxc_(param) - {var - _bxd_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bxe_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxd_), - colocation$0=_bxe_?colocation:_bxe_; - if(colocation$0) - var - _bxf_=0 === situation_familiale_calcul_apl[0]?0:1, - _bxg_= - _bxf_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$100)) - :_bxf_; - else - var _bxg_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pX_,_bxg_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_pY_,[0],_bxc_,_bxb_)} - var - _bw6_= - [0, - function(param) - {function _bw7_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22355$0); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19484$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18261$0)}} - function _bw8_(param) - {var - _bw9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bw__= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bw9_), - colocation$0=_bw__?colocation:_bw__; - if(colocation$0) - var - _bw$_=0 === situation_familiale_calcul_apl[0]?1:0, - _bxa_= - _bw$_ - ?caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$101)) - :_bw$_; - else - var _bxa_=colocation$0; - return caml_call2(Runtime_ocaml_Runtime[29],_pZ_,_bxa_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_p0_,[0],_bw8_,_bw7_)}, - _bw5_, - _bw4_, - _bw3_, - _bw2_, - _bw1_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_p1_,_bw6_,_bw0_,_bwZ_)}, - _brO_], - _brQ_=caml_call4(Runtime_ocaml_Runtime[62],_p2_,_brP_,_brN_,_brM_)} - catch(_bwY_) - {_bwY_ = caml_wrap_exception(_bwY_); - if(_bwY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pq_]; - throw _bwY_} - var - plafond_loyer_d823_16_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_p3_,Runtime_ocaml_Runtime[13],_brQ_); - try - {var - _brR_= - function(param) - {function _bwC_(param){throw Runtime_ocaml_Runtime[2]} - function _bwD_(param){return 0} - function _bwE_(param) - {function _bwO_(param) - {var - _bwU_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bwV_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224), - _bwW_=caml_call2(Runtime_ocaml_Runtime[65],_bwV_,_bwU_), - _bwX_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399); - return caml_call2(Runtime_ocaml_Runtime[67],_bwX_,_bwW_)} - function _bwP_(param) - {var - _bwQ_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bwR_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bwQ_); - if(_bwR_) - var - _bwS_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bwT_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwS_); - else - var _bwT_=_bwR_; - return caml_call2(Runtime_ocaml_Runtime[29],_p5_,_bwT_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_p6_,[0],_bwP_,_bwO_)} - var - _bwF_= - [0, - function(param) - {function _bwG_(param) - {var - _bwK_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bwL_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229), - _bwM_=caml_call2(Runtime_ocaml_Runtime[65],_bwL_,_bwK_), - _bwN_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422); - return caml_call2(Runtime_ocaml_Runtime[67],_bwN_,_bwM_)} - function _bwH_(param) - {var - _bwI_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bwJ_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwI_); - return caml_call2(Runtime_ocaml_Runtime[29],_p7_,_bwJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_p8_,[0],_bwH_,_bwG_)}, - _bwE_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_p9_,_bwF_,_bwD_,_bwC_)}, - _brS_=function(param){return 1}, - _brT_= - [0, - function(param) - {function _bwg_(param){throw Runtime_ocaml_Runtime[2]} - function _bwh_(param){return 0} - function _bwi_(param) - {function _bws_(param) - {var - _bwy_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bwz_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$0), - _bwA_=caml_call2(Runtime_ocaml_Runtime[65],_bwz_,_bwy_), - _bwB_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bwB_,_bwA_)} - function _bwt_(param) - {var - _bwu_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bwv_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bwu_); - if(_bwv_) - var - _bww_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bwx_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bww_), - colocation$0=_bwx_?colocation:_bwx_; - else - var colocation$0=_bwv_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_p__,colocation$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_p$_,[0],_bwt_,_bws_)} - var - _bwj_= - [0, - function(param) - {function _bwk_(param) - {var - _bwo_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bwp_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$0), - _bwq_=caml_call2(Runtime_ocaml_Runtime[65],_bwp_,_bwo_), - _bwr_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$0); - return caml_call2(Runtime_ocaml_Runtime[67],_bwr_,_bwq_)} - function _bwl_(param) - {var - _bwm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bwn_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwm_), - colocation$0=_bwn_?colocation:_bwn_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_qa_,colocation$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_qb_,[0],_bwl_,_bwk_)}, - _bwi_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_qc_,_bwj_,_bwh_,_bwg_)}], - _brU_=caml_call4(Runtime_ocaml_Runtime[62],_qd_,_brT_,_brS_,_brR_)} - catch(_bwf_) - {_bwf_ = caml_wrap_exception(_bwf_); - if(_bwf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_p4_]; - throw _bwf_} - var - montant_forfaitaire_charges_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_qe_,Runtime_ocaml_Runtime[13],_brU_); - try - {var - _brV_= - function(param) - {switch(zone[0]) - {case 0: - var _bwc_=caml_call1(Runtime_ocaml_Runtime[39],cst_4$9); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwc_); - case 1: - var _bwd_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwd_); - default: - var _bwe_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1$0); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwe_)}}, - _brW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qg_,1)}, - _brX_=caml_call4(Runtime_ocaml_Runtime[62],_qh_,[0],_brW_,_brV_)} - catch(_bwb_) - {_bwb_ = caml_wrap_exception(_bwb_); - if(_bwb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qf_]; - throw _bwb_} - var - plafond_suppression_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_qi_,Runtime_ocaml_Runtime[13],_brX_); - try - {var - _brY_= - function(param) - {switch(zone[0]) - {case 0: - var _bv__=caml_call1(Runtime_ocaml_Runtime[39],cst_3_4); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bv__); - case 1: - var _bv$_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$2); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bv$_); - default: - var _bwa_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$3); - return caml_call2 - (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwa_)}}, - _brZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qk_,1)}, - _br0_=caml_call4(Runtime_ocaml_Runtime[62],_ql_,[0],_brZ_,_brY_)} - catch(_bv9_) - {_bv9_ = caml_wrap_exception(_bv9_); - if(_bv9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qj_]; - throw _bv9_} - var - plafond_degressivite_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_qm_,Runtime_ocaml_Runtime[13],_br0_); - try - {var - _br1_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[74], - loyer_principal, - plafond_loyer_d823_16_2) - ?plafond_loyer_d823_16_2 - :loyer_principal}, - _br2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qo_,1)}, - _br3_=caml_call4(Runtime_ocaml_Runtime[62],_qp_,[0],_br2_,_br1_)} - catch(_bv8_) - {_bv8_ = caml_wrap_exception(_bv8_); - if(_bv8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qn_]; - throw _bv8_} - var - loyer_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_qq_,Runtime_ocaml_Runtime[13],_br3_); - function _br4_(param) - {try - {var - _bvX_= - function(param$0) - {if - (caml_call2 - (Runtime_ocaml_Runtime[74], - loyer_principal, - plafond_suppression_d823_16)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$102); - if - (caml_call2 - (Runtime_ocaml_Runtime[74], - loyer_principal, - plafond_degressivite_d823_16)) - {var - _bv4_= - caml_call2 - (Runtime_ocaml_Runtime[68], - plafond_suppression_d823_16, - plafond_degressivite_d823_16), - _bv5_= - caml_call2 - (Runtime_ocaml_Runtime[68], - loyer_principal, - plafond_degressivite_d823_16), - _bv6_=caml_call2(Runtime_ocaml_Runtime[66],_bv5_,_bv4_), - _bv7_=caml_call2(Runtime_ocaml_Runtime[65],param,_bv6_); - return caml_call2(Runtime_ocaml_Runtime[68],param,_bv7_)} - return param}, - _bvY_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_qs_,1)}, - _bvZ_= - [0, - function(param$0) - {function _bv2_(param$0){return param} - function _bv3_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _qt_, - beneficiaire_aide_adulte_ou_en)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_qu_,[0],_bv3_,_bv2_)}], - _bv0_=caml_call4(Runtime_ocaml_Runtime[62],_qv_,_bvZ_,_bvY_,_bvX_); - return _bv0_} - catch(_bv1_) - {_bv1_ = caml_wrap_exception(_bv1_); - if(_bv1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qr_]; - throw _bv1_}} - var - traitement_aide_finale_diminue= - caml_call3 - (Runtime_ocaml_Runtime[28],_qw_,Runtime_ocaml_Runtime[10],_br4_); - try - {var - _br5_=function(param){throw Runtime_ocaml_Runtime[2]}, - _br6_=function(param){return 0}, - _br7_= - function(param) - {function _bvL_(param) - {var - _bvR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3524), - _bvS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085), - _bvT_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bvU_=caml_call2(Runtime_ocaml_Runtime[65],_bvT_,_bvS_); - if(caml_call2(Runtime_ocaml_Runtime[72],_bvU_,_bvR_)) - {var - _bvV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), - _bvW_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[65],_bvW_,_bvV_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)} - function _bvM_(param) - {var - _bvN_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bvO_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bvN_); - if(_bvO_) - var - _bvP_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bvQ_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvP_); - else - var _bvQ_=_bvO_; - return caml_call2(Runtime_ocaml_Runtime[29],_qy_,_bvQ_)} - return caml_call4(Runtime_ocaml_Runtime[62],_qz_,[0],_bvM_,_bvL_)}, - _br8_= - [0, - function(param) - {function _bvB_(param) - {var - _bvF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3539), - _bvG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$1), - _bvH_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bvI_=caml_call2(Runtime_ocaml_Runtime[65],_bvH_,_bvG_); - if(caml_call2(Runtime_ocaml_Runtime[72],_bvI_,_bvF_)) - {var - _bvJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), - _bvK_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[65],_bvK_,_bvJ_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)} - function _bvC_(param) - {var - _bvD_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bvE_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvD_); - return caml_call2(Runtime_ocaml_Runtime[29],_qA_,_bvE_)} - return caml_call4(Runtime_ocaml_Runtime[62],_qB_,[0],_bvC_,_bvB_)}, - _br7_], - _br9_=caml_call4(Runtime_ocaml_Runtime[62],_qC_,_br8_,_br6_,_br5_)} - catch(_bvA_) - {_bvA_ = caml_wrap_exception(_bvA_); - if(_bvA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qx_]; - throw _bvA_} - var - participation_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_qD_,Runtime_ocaml_Runtime[13],_br9_); - try - {var - _br__=function(param){throw Runtime_ocaml_Runtime[2]}, - _br$_=function(param){return 0}, - _bsa_= - [0, - function(param) - {function _bvf_(param) - {var - _bvv_=caml_call1(Runtime_ocaml_Runtime[39],cst_100), - _bvw_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$0), - _bvx_= - caml_call2 - (Runtime_ocaml_Runtime[66],loyer_eligible,loyer_reference), - _bvy_=caml_call2(Runtime_ocaml_Runtime[88],_bvx_,_bvw_), - _bvz_=caml_call1(Runtime_ocaml_Runtime[44],_bvy_); - return caml_call2(Runtime_ocaml_Runtime[89],_bvz_,_bvv_)} - function _bvg_(param) - {var - _bvt_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bvu_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvt_); - return caml_call2(Runtime_ocaml_Runtime[29],_qF_,_bvu_)} - var - _bvh_= - [0, - function(param) - {function _bvi_(param) - {var - _bvo_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$1), - _bvp_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$2), - _bvq_= - caml_call2 - (Runtime_ocaml_Runtime[66],loyer_eligible,loyer_reference), - _bvr_=caml_call2(Runtime_ocaml_Runtime[88],_bvq_,_bvp_), - _bvs_=caml_call1(Runtime_ocaml_Runtime[44],_bvr_); - return caml_call2(Runtime_ocaml_Runtime[89],_bvs_,_bvo_)} - function _bvj_(param) - {var - _bvk_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bvl_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvk_); - if(_bvl_) - var - _bvm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bvn_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bvm_); - else - var _bvn_=_bvl_; - return caml_call2(Runtime_ocaml_Runtime[29],_qG_,_bvn_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_qH_,[0],_bvj_,_bvi_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_qI_,_bvh_,_bvg_,_bvf_)}], - _bsb_=caml_call4(Runtime_ocaml_Runtime[62],_qJ_,_bsa_,_br$_,_br__)} - catch(_bve_) - {_bve_ = caml_wrap_exception(_bve_); - if(_bve_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qE_]; - throw _bve_} - var - rapport_loyers= - caml_call3 - (Runtime_ocaml_Runtime[28],_qK_,Runtime_ocaml_Runtime[15],_bsb_); - function _bsc_(param) - {try - {var - _bu2_= - function(param$0) - {var - _bu6_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$103), - _bu7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _qM_, - Runtime_ocaml_Runtime[13], - param), - _bu8_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _qN_, - traitement_aide_finale_diminue), - _bu7_), - _bu9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _qO_, - Runtime_ocaml_Runtime[13], - _bu8_), - _bu__=caml_call2(Runtime_ocaml_Runtime[27],_qP_,_bu9_), - _bu$_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bu__,montant_forfaitaire_d823_16); - if(caml_call2(Runtime_ocaml_Runtime[72],_bu$_,_bu6_)) - {var - _bva_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _qQ_, - Runtime_ocaml_Runtime[13], - param), - _bvb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _qR_, - traitement_aide_finale_diminue), - _bva_), - _bvc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _qS_, - Runtime_ocaml_Runtime[13], - _bvb_), - _bvd_=caml_call2(Runtime_ocaml_Runtime[27],_qT_,_bvc_); - return caml_call2 - (Runtime_ocaml_Runtime[68], - _bvd_, - montant_forfaitaire_d823_16)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$104)}, - _bu3_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_qU_,1)}, - _bu4_=caml_call4(Runtime_ocaml_Runtime[62],_qV_,[0],_bu3_,_bu2_); - return _bu4_} - catch(_bu5_) - {_bu5_ = caml_wrap_exception(_bu5_); - if(_bu5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qL_]; - throw _bu5_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_qW_,Runtime_ocaml_Runtime[10],_bsc_); - try - {var - _bsd_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bse_=function(param){return 0}, - _bsf_= - [0, - function(param) - {function _bup_(param) - {var _buO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45); - if(caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buO_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$105); - var _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0); - if(caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buP_)) - {var _buQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75); - if - (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buQ_)) - {var - _buR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045), - _buS_= - caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buR_), - _buT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0); - return caml_call2(Runtime_ocaml_Runtime[88],_buT_,_buS_)}} - var _buU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0); - if(caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buU_)) - {var - _buV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), - _buW_= - caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buV_), - _buX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), - _buY_=caml_call2(Runtime_ocaml_Runtime[88],_buX_,_buW_), - _buZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), - _bu0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), - _bu1_=caml_call2(Runtime_ocaml_Runtime[88],_bu0_,_buZ_); - return caml_call2(Runtime_ocaml_Runtime[85],_bu1_,_buY_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$106)} - function _buq_(param) - {var - _buM_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _buN_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_buM_); - return caml_call2(Runtime_ocaml_Runtime[29],_qY_,_buN_)} - var - _bur_= - [0, - function(param) - {function _bus_(param) - {var _buy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$1); - if - (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buy_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$107); - var _buz_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2); - if - (caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buz_)) - {var _buA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$2); - if - (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buA_)) - {var - _buB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$2), - _buC_= - caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buB_), - _buD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$3); - return caml_call2(Runtime_ocaml_Runtime[88],_buD_,_buC_)}} - var _buE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3); - if - (caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buE_)) - {var - _buF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), - _buG_= - caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buF_), - _buH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), - _buI_=caml_call2(Runtime_ocaml_Runtime[88],_buH_,_buG_), - _buJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), - _buK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), - _buL_=caml_call2(Runtime_ocaml_Runtime[88],_buK_,_buJ_); - return caml_call2(Runtime_ocaml_Runtime[85],_buL_,_buI_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$108)} - function _but_(param) - {var - _buu_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _buv_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_buu_); - if(_buv_) - var - _buw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bux_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_buw_); - else - var _bux_=_buv_; - return caml_call2(Runtime_ocaml_Runtime[29],_qZ_,_bux_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_q0_,[0],_but_,_bus_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_q1_,_bur_,_buq_,_bup_)}], - _bsg_=caml_call4(Runtime_ocaml_Runtime[62],_q2_,_bsf_,_bse_,_bsd_)} - catch(_buo_) - {_buo_ = caml_wrap_exception(_buo_); - if(_buo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qX_]; - throw _buo_} - var - taux_loyer_eligible_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_q3_,Runtime_ocaml_Runtime[15],_bsg_); - function _bsh_(param) - {try - {var - _bty_= - function(param$0) - {var - _btC_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$109), - _btD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _q5_, - Runtime_ocaml_Runtime[13], - param), - _btE_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _q6_, - traitement_aide_finale_minorat), - _btD_), - _btF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _q7_, - Runtime_ocaml_Runtime[13], - _btE_), - _btG_=caml_call2(Runtime_ocaml_Runtime[27],_q8_,_btF_), - _btH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _q9_, - Runtime_ocaml_Runtime[13], - _btG_), - _btI_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _q__, - contributions_sociales_dot_mon), - _btH_), - _btJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _q$_, - Runtime_ocaml_Runtime[13], - _btI_), - _btK_=caml_call2(Runtime_ocaml_Runtime[27],_ra_,_btJ_), - _btL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50), - _btM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rb_, - Runtime_ocaml_Runtime[13], - param), - _btN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rc_, - traitement_aide_finale_minorat), - _btM_), - _btO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rd_, - Runtime_ocaml_Runtime[13], - _btN_), - _btP_=caml_call2(Runtime_ocaml_Runtime[27],_re_,_btO_), - _btQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rf_, - Runtime_ocaml_Runtime[13], - _btP_), - _btR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rg_, - contributions_sociales_dot_mon), - _btQ_), - _btS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rh_, - Runtime_ocaml_Runtime[13], - _btR_), - _btT_=caml_call2(Runtime_ocaml_Runtime[27],_ri_,_btS_), - _btU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rj_, - Runtime_ocaml_Runtime[13], - param), - _btV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rk_, - traitement_aide_finale_minorat), - _btU_), - _btW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rl_, - Runtime_ocaml_Runtime[13], - _btV_), - _btX_=caml_call2(Runtime_ocaml_Runtime[27],_rm_,_btW_), - _btY_=caml_call2(Runtime_ocaml_Runtime[68],_btX_,_btT_), - _btZ_=caml_call2(Runtime_ocaml_Runtime[68],_btY_,_btL_), - _bt0_=caml_call1(Runtime_ocaml_Runtime[38],_btZ_), - _bt1_=caml_call2(Runtime_ocaml_Runtime[67],_bt0_,_btK_); - if(caml_call2(Runtime_ocaml_Runtime[72],_bt1_,_btC_)) - {var - _bt2_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rn_, - Runtime_ocaml_Runtime[13], - param), - _bt3_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ro_, - traitement_aide_finale_minorat), - _bt2_), - _bt4_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rp_, - Runtime_ocaml_Runtime[13], - _bt3_), - _bt5_=caml_call2(Runtime_ocaml_Runtime[27],_rq_,_bt4_), - _bt6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rr_, - Runtime_ocaml_Runtime[13], - _bt5_), - _bt7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rs_, - contributions_sociales_dot_mon), - _bt6_), - _bt8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rt_, - Runtime_ocaml_Runtime[13], - _bt7_), - _bt9_=caml_call2(Runtime_ocaml_Runtime[27],_ru_,_bt8_), - _bt__=caml_call1(Runtime_ocaml_Runtime[31],cst_50$0), - _bt$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rv_, - Runtime_ocaml_Runtime[13], - param), - _bua_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rw_, - traitement_aide_finale_minorat), - _bt$_), - _bub_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rx_, - Runtime_ocaml_Runtime[13], - _bua_), - _buc_=caml_call2(Runtime_ocaml_Runtime[27],_ry_,_bub_), - _bud_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rz_, - Runtime_ocaml_Runtime[13], - _buc_), - _bue_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rA_, - contributions_sociales_dot_mon), - _bud_), - _buf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rB_, - Runtime_ocaml_Runtime[13], - _bue_), - _bug_=caml_call2(Runtime_ocaml_Runtime[27],_rC_,_buf_), - _buh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rD_, - Runtime_ocaml_Runtime[13], - param), - _bui_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rE_, - traitement_aide_finale_minorat), - _buh_), - _buj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rF_, - Runtime_ocaml_Runtime[13], - _bui_), - _buk_=caml_call2(Runtime_ocaml_Runtime[27],_rG_,_buj_), - _bul_=caml_call2(Runtime_ocaml_Runtime[68],_buk_,_bug_), - _bum_=caml_call2(Runtime_ocaml_Runtime[68],_bul_,_bt__), - _bun_=caml_call1(Runtime_ocaml_Runtime[38],_bum_); - return caml_call2(Runtime_ocaml_Runtime[67],_bun_,_bt9_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$110)}, - _btz_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_rH_,1)}, - _btA_=caml_call4(Runtime_ocaml_Runtime[62],_rI_,[0],_btz_,_bty_); - return _btA_} - catch(_btB_) - {_btB_ = caml_wrap_exception(_btB_); - if(_btB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_q4_]; - throw _btB_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_rJ_,Runtime_ocaml_Runtime[10],_bsh_); - try - {var - _bsi_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bsj_=function(param){return 0}, - _bsk_= - [0, - function(param) - {function _btf_(param) - {var - _btu_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000), - _btv_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$0), - _btw_= - caml_call2 - (Runtime_ocaml_Runtime[88], - taux_loyer_eligible_formule, - _btv_), - _btx_=caml_call1(Runtime_ocaml_Runtime[44],_btw_); - return caml_call2(Runtime_ocaml_Runtime[89],_btx_,_btu_)} - function _btg_(param) - {var - _bts_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _btt_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bts_); - return caml_call2(Runtime_ocaml_Runtime[29],_rL_,_btt_)} - var - _bth_= - [0, - function(param) - {function _bti_(param) - {var - _bto_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$1), - _btp_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$2), - _btq_= - caml_call2 - (Runtime_ocaml_Runtime[88], - taux_loyer_eligible_formule, - _btp_), - _btr_=caml_call1(Runtime_ocaml_Runtime[44],_btq_); - return caml_call2(Runtime_ocaml_Runtime[89],_btr_,_bto_)} - function _btj_(param) - {var - _btk_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _btl_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_btk_); - if(_btl_) - var - _btm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _btn_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_btm_); - else - var _btn_=_btl_; - return caml_call2(Runtime_ocaml_Runtime[29],_rM_,_btn_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_rN_,[0],_btj_,_bti_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_rO_,_bth_,_btg_,_btf_)}], - _bsl_=caml_call4(Runtime_ocaml_Runtime[62],_rP_,_bsk_,_bsj_,_bsi_)} - catch(_bte_) - {_bte_ = caml_wrap_exception(_bte_); - if(_bte_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rK_]; - throw _bte_} - var - taux_loyer_eligible_arrondi= - caml_call3 - (Runtime_ocaml_Runtime[28],_rQ_,Runtime_ocaml_Runtime[15],_bsl_); - function _bsm_(param) - {try - {var - _bs0_= - function(param$0) - {var - _bs4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$111), - _bs5_= - caml_call2 - (Runtime_ocaml_Runtime[65], - reduction_loyer_solidarite, - fraction_l832_3), - _bs6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rS_, - Runtime_ocaml_Runtime[13], - param), - _bs7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rT_, - traitement_aide_finale_contrib), - _bs6_), - _bs8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rU_, - Runtime_ocaml_Runtime[13], - _bs7_), - _bs9_=caml_call2(Runtime_ocaml_Runtime[27],_rV_,_bs8_), - _bs__=caml_call2(Runtime_ocaml_Runtime[68],_bs9_,_bs5_); - if(caml_call2(Runtime_ocaml_Runtime[72],_bs__,_bs4_)) - {var - _bs$_= - caml_call2 - (Runtime_ocaml_Runtime[65], - reduction_loyer_solidarite, - fraction_l832_3), - _bta_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rW_, - Runtime_ocaml_Runtime[13], - param), - _btb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _rX_, - traitement_aide_finale_contrib), - _bta_), - _btc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _rY_, - Runtime_ocaml_Runtime[13], - _btb_), - _btd_=caml_call2(Runtime_ocaml_Runtime[27],_rZ_,_btc_); - return caml_call2(Runtime_ocaml_Runtime[68],_btd_,_bs$_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$112)}, - _bs1_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_r0_,1)}, - _bs2_=caml_call4(Runtime_ocaml_Runtime[62],_r1_,[0],_bs1_,_bs0_); - return _bs2_} - catch(_bs3_) - {_bs3_ = caml_wrap_exception(_bs3_); - if(_bs3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rR_]; - throw _bs3_}} - var - traitement_aide_finale_reducti= - caml_call3 - (Runtime_ocaml_Runtime[28],_r2_,Runtime_ocaml_Runtime[10],_bsm_); - try - {var - _bsn_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[85], - taux_composition_familiale, - taux_loyer_eligible_arrondi)}, - _bso_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_r4_,1)}, - _bsp_=caml_call4(Runtime_ocaml_Runtime[62],_r5_,[0],_bso_,_bsn_)} - catch(_bsZ_) - {_bsZ_ = caml_wrap_exception(_bsZ_); - if(_bsZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_r3_]; - throw _bsZ_} - var - taux_prise_compte_ressources= - caml_call3 - (Runtime_ocaml_Runtime[28],_r6_,Runtime_ocaml_Runtime[15],_bsp_); - function _bsq_(param) - {try - {var - _bsO_= - function(param$0) - {var - _bsS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _r8_, - Runtime_ocaml_Runtime[13], - param), - _bsT_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _r9_, - traitement_aide_finale_reducti), - _bsS_), - _bsU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _r__, - Runtime_ocaml_Runtime[13], - _bsT_), - _bsV_=caml_call2(Runtime_ocaml_Runtime[27],_r$_,_bsU_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _bsV_, - montant_minimal_aide_d823_16)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$113); - var - _bsW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sa_, - Runtime_ocaml_Runtime[13], - param), - _bsX_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _sb_, - traitement_aide_finale_reducti), - _bsW_), - _bsY_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sc_, - Runtime_ocaml_Runtime[13], - _bsX_); - return caml_call2(Runtime_ocaml_Runtime[27],_sd_,_bsY_)}, - _bsP_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_se_,1)}, - _bsQ_=caml_call4(Runtime_ocaml_Runtime[62],_sf_,[0],_bsP_,_bsO_); - return _bsQ_} - catch(_bsR_) - {_bsR_ = caml_wrap_exception(_bsR_); - if(_bsR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_r7_]; - throw _bsR_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_sg_,Runtime_ocaml_Runtime[10],_bsq_); - try - {var - _bsr_= - function(param) - {var - _bsM_= - caml_call2 - (Runtime_ocaml_Runtime[68], - ressources_menage_arrondies, - abattement_forfaitaire_d823_17), - _bsN_= - caml_call2 - (Runtime_ocaml_Runtime[65],_bsM_,taux_prise_compte_ressources); - return caml_call2 - (Runtime_ocaml_Runtime[67],participation_minimale,_bsN_)}, - _bss_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_si_,1)}, - _bst_=caml_call4(Runtime_ocaml_Runtime[62],_sj_,[0],_bss_,_bsr_)} - catch(_bsL_) - {_bsL_ = caml_wrap_exception(_bsL_); - if(_bsL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sh_]; - throw _bsL_} - var - participation_personnelle= - caml_call3 - (Runtime_ocaml_Runtime[28],_sk_,Runtime_ocaml_Runtime[13],_bst_); - try - {var - _bsu_= - function(param) - {var - _bsH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$114), - _bsI_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bsJ_= - caml_call2 - (Runtime_ocaml_Runtime[68],_bsI_,participation_personnelle); - if(caml_call2(Runtime_ocaml_Runtime[73],_bsJ_,_bsH_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$115); - var - _bsK_= - caml_call2 - (Runtime_ocaml_Runtime[67], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2 - (Runtime_ocaml_Runtime[68],_bsK_,participation_personnelle)}, - _bsv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sm_,1)}, - _bsw_=caml_call4(Runtime_ocaml_Runtime[62],_sn_,[0],_bsv_,_bsu_)} - catch(_bsG_) - {_bsG_ = caml_wrap_exception(_bsG_); - if(_bsG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sl_]; - throw _bsG_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_so_,Runtime_ocaml_Runtime[13],_bsw_); - try - {var - _bsx_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$4), - _bsy_= - caml_call2(Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bsx_), - _bsz_= - caml_call2 - (Runtime_ocaml_Runtime[72],plafond_degressivite_d823_16,_bsy_)} - catch(_bsF_) - {_bsF_ = caml_wrap_exception(_bsF_); - if(_bsF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sp_]; - throw _bsF_} - if(_bsz_) - {try - {var - _bsA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), - _bsB_=caml_call2(Runtime_ocaml_Runtime[91],fraction_l832_3,_bsA_); - if(_bsB_) - var - _bsC_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), - _bsD_=caml_call2(Runtime_ocaml_Runtime[92],fraction_l832_3,_bsC_); - else - var _bsD_=_bsB_} - catch(_bsE_) - {_bsE_ = caml_wrap_exception(_bsE_); - if(_bsE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sq_]; - throw _bsE_} - if(_bsD_) - return [0, - montant_forfaitaire_charges_d8, - plafond_loyer_d823_16_2, - participation_minimale, - taux_composition_familiale, - participation_personnelle, - aide_finale_formule, - traitement_aide_finale_montant]; - throw [0,Runtime_ocaml_Runtime[3],_sr_]} - throw [0,Runtime_ocaml_Runtime[3],_ss_]} - function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge) - {var - mode_occupation=calcul_aide_personnalisee_loge[1], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4], - zone=calcul_aide_personnalisee_loge[5], - date_courante=calcul_aide_personnalisee_loge[6], - redevance=calcul_aide_personnalisee_loge[7], - condition_2_du_832_25=calcul_aide_personnalisee_loge[8], - n_nombre_parts_d832_25=calcul_aide_personnalisee_loge[9]; - try - {var - _bmE_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_121726)}, - _bmF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_su_,1)}, - _bmG_=caml_call4(Runtime_ocaml_Runtime[62],_sv_,[0],_bmF_,_bmE_)} - catch(_brk_) - {_brk_ = caml_wrap_exception(_brk_); - if(_brk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_st_]; - throw _brk_} - var - coefficient_r_d832_25= - caml_call3 - (Runtime_ocaml_Runtime[28],_sw_,Runtime_ocaml_Runtime[13],_bmG_); - try - {var - _bmH_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$0)}, - _bmI_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sy_,1)}, - _bmJ_=caml_call4(Runtime_ocaml_Runtime[62],_sz_,[0],_bmI_,_bmH_)} - catch(_brj_) - {_brj_ = caml_wrap_exception(_brj_); - if(_brj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sx_]; - throw _brj_} - var - montant_forfaitaire_d832_24= - caml_call3 - (Runtime_ocaml_Runtime[28],_sA_,Runtime_ocaml_Runtime[13],_bmJ_); - try - {var - _bmK_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$1)}, - _bmL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sC_,1)}, - _bmM_=caml_call4(Runtime_ocaml_Runtime[62],_sD_,[0],_bmL_,_bmK_)} - catch(_bri_) - {_bri_ = caml_wrap_exception(_bri_); - if(_bri_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sB_]; - throw _bri_} - var - montant_minimal_aide_d823_24= - caml_call3 - (Runtime_ocaml_Runtime[28],_sE_,Runtime_ocaml_Runtime[13],_bmM_); - try - {var - _bmN_= - function(param) - {function _bre_(param) - {switch(mode_occupation[0]) - {case 0:return 0; - case 1: - var logement_foyer=mode_occupation[1]; - switch(logement_foyer[1][0]) - {case 0:return 0; - case 1: - var _brg_=caml_call3(Runtime_ocaml_Runtime[56],1994,12,31); - return caml_call2 - (Runtime_ocaml_Runtime[98],logement_foyer[2],_brg_); - case 2: - var _brh_=caml_call3(Runtime_ocaml_Runtime[56],1990,9,30); - return caml_call2 - (Runtime_ocaml_Runtime[98],logement_foyer[2],_brh_); - default:return 0} - case 2:return 0; - case 3:return 0; - default:return 0}} - function _brf_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_sG_,1)} - return caml_call4(Runtime_ocaml_Runtime[62],_sH_,[0],_brf_,_bre_)}, - _bmO_=function(param){return 1}, - _bmP_=[0,function(param){return caml_call1(condition_2_du_832_25,0)}], - _bmQ_=caml_call4(Runtime_ocaml_Runtime[62],_sI_,_bmP_,_bmO_,_bmN_)} - catch(_brd_) - {_brd_ = caml_wrap_exception(_brd_); - if(_brd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sF_]; - throw _brd_} - var - condition_2_du_832_25$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_sJ_,Runtime_ocaml_Runtime[12],_bmQ_); - try - {var - _bmR_=function(param){return date_courante}, - _bmS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sL_,1)}, - _bmT_=caml_call4(Runtime_ocaml_Runtime[62],_sM_,[0],_bmS_,_bmR_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_sN_,Runtime_ocaml_Runtime[16],_bmT_)} - catch(_brc_) - {_brc_ = caml_wrap_exception(_brc_); - if(_brc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sK_]; - throw _brc_} - var - _bmU_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_sO_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_sP_,_bmU_), - contributions_sociales_dot_mon=result[1]; - try - {var - _bmV_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bmW_=function(param){return 0}, - _bmX_= - function(param) - {function _bqQ_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$116))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_44443) - :caml_call1(Runtime_ocaml_Runtime[31],cst_52101); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$56))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_55555); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$28))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_59454); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$13))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_63369); - var - _bqW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$10), - _bqX_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqW_), - _bqY_=caml_call1(Runtime_ocaml_Runtime[41],_bqX_), - _bqZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_7089), - _bq0_=caml_call2(Runtime_ocaml_Runtime[65],_bqZ_,_bqY_), - _bq1_=caml_call1(Runtime_ocaml_Runtime[31],cst_68350); - return caml_call2(Runtime_ocaml_Runtime[67],_bq1_,_bq0_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$117))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_40643) - :caml_call1(Runtime_ocaml_Runtime[31],cst_47433); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$57))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50575); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$29))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54138); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$14))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_57687); - var - _bq2_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$11), - _bq3_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bq2_), - _bq4_=caml_call1(Runtime_ocaml_Runtime[41],_bq3_), - _bq5_=caml_call1(Runtime_ocaml_Runtime[31],cst_6407), - _bq6_=caml_call2(Runtime_ocaml_Runtime[65],_bq5_,_bq4_), - _bq7_=caml_call1(Runtime_ocaml_Runtime[31],cst_61469); - return caml_call2(Runtime_ocaml_Runtime[67],_bq7_,_bq6_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$118))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_38578) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44869); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$58))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_47602); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$30))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50744); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$15))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_53884); - var - _bq8_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$12), - _bq9_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bq8_), - _bq__=caml_call1(Runtime_ocaml_Runtime[41],_bq9_), - _bq$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5946), - _bra_=caml_call2(Runtime_ocaml_Runtime[65],_bq$_,_bq__), - _brb_=caml_call1(Runtime_ocaml_Runtime[31],cst_57416); - return caml_call2(Runtime_ocaml_Runtime[67],_brb_,_bra_)}} - function _bqR_(param) - {var - _bqS_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bqT_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bqS_); - if(_bqT_) - var - _bqU_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bqV_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bqU_); - else - var _bqV_=_bqT_; - return caml_call2(Runtime_ocaml_Runtime[29],_sR_,_bqV_)} - return caml_call4(Runtime_ocaml_Runtime[62],_sS_,[0],_bqR_,_bqQ_)}, - _bmY_= - [0, - function(param) - {function _bqu_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$119))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_44630) - :caml_call1(Runtime_ocaml_Runtime[31],cst_52321); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$59))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_55788); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$31))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_59704); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$16))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_63635); - var - _bqy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$13), - _bqz_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqy_), - _bqA_=caml_call1(Runtime_ocaml_Runtime[41],_bqz_), - _bqB_=caml_call1(Runtime_ocaml_Runtime[31],cst_7119), - _bqC_=caml_call2(Runtime_ocaml_Runtime[65],_bqB_,_bqA_), - _bqD_=caml_call1(Runtime_ocaml_Runtime[31],cst_68637); - return caml_call2(Runtime_ocaml_Runtime[67],_bqD_,_bqC_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$120))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_40814) - :caml_call1(Runtime_ocaml_Runtime[31],cst_47632); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$60))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50787); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$32))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54365); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$17))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_57929); - var - _bqE_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$14), - _bqF_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqE_), - _bqG_=caml_call1(Runtime_ocaml_Runtime[41],_bqF_), - _bqH_=caml_call1(Runtime_ocaml_Runtime[31],cst_6434), - _bqI_=caml_call2(Runtime_ocaml_Runtime[65],_bqH_,_bqG_), - _bqJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_61727); - return caml_call2(Runtime_ocaml_Runtime[67],_bqJ_,_bqI_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$121))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_38740) - :caml_call1(Runtime_ocaml_Runtime[31],cst_45057); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$61))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_47802); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$33))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50957); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$18))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54110); - var - _bqK_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$15), - _bqL_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqK_), - _bqM_=caml_call1(Runtime_ocaml_Runtime[41],_bqL_), - _bqN_=caml_call1(Runtime_ocaml_Runtime[31],cst_5971), - _bqO_=caml_call2(Runtime_ocaml_Runtime[65],_bqN_,_bqM_), - _bqP_=caml_call1(Runtime_ocaml_Runtime[31],cst_57657); - return caml_call2(Runtime_ocaml_Runtime[67],_bqP_,_bqO_)}} - function _bqv_(param) - {var - _bqw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bqx_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bqw_); - return caml_call2(Runtime_ocaml_Runtime[29],_sT_,_bqx_)} - return caml_call4(Runtime_ocaml_Runtime[62],_sU_,[0],_bqv_,_bqu_)}, - _bmX_], - _bmZ_=caml_call4(Runtime_ocaml_Runtime[62],_sV_,_bmY_,_bmW_,_bmV_)} - catch(_bqt_) - {_bqt_ = caml_wrap_exception(_bqt_); - if(_bqt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sQ_]; - throw _bqt_} - var - plafond_equivalence_loyer_elig= - caml_call3 - (Runtime_ocaml_Runtime[28],_sW_,Runtime_ocaml_Runtime[13],_bmZ_); - function _bm0_(param) - {try - {var - _bqn_= - function(param$0) - {var - _bqr_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$122), - _bqs_= - caml_call2 - (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d832_24); - return caml_call2(Runtime_ocaml_Runtime[72],_bqs_,_bqr_) - ?caml_call2 - (Runtime_ocaml_Runtime[68], - param, - montant_forfaitaire_d832_24) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$123)}, - _bqo_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_sY_,1)}, - _bqp_=caml_call4(Runtime_ocaml_Runtime[62],_sZ_,[0],_bqo_,_bqn_); - return _bqp_} - catch(_bqq_) - {_bqq_ = caml_wrap_exception(_bqq_); - if(_bqq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sX_]; - throw _bqq_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_s0_,Runtime_ocaml_Runtime[10],_bm0_); - try - {var - _bm1_=function(param){return condition_2_du_832_25$0}, - _bm2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s2_,1)}, - _bm3_=caml_call4(Runtime_ocaml_Runtime[62],_s3_,[0],_bm2_,_bm1_), - calcul_nombre_parts_dot_condit= - caml_call3 - (Runtime_ocaml_Runtime[28],_s4_,Runtime_ocaml_Runtime[12],_bm3_)} - catch(_bqm_) - {_bqm_ = caml_wrap_exception(_bqm_); - if(_bqm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s1_]; - throw _bqm_} - try - {var - _bm4_=function(param){return nombre_personnes_a_charge}, - _bm5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s6_,1)}, - _bm6_=caml_call4(Runtime_ocaml_Runtime[62],_s7_,[0],_bm5_,_bm4_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_s8_,Runtime_ocaml_Runtime[14],_bm6_)} - catch(_bql_) - {_bql_ = caml_wrap_exception(_bql_); - if(_bql_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s5_]; - throw _bql_} - try - {var - _bm7_=function(param){return situation_familiale_calcul_apl}, - _bm8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s__,1)}, - _bm9_=caml_call4(Runtime_ocaml_Runtime[62],_s$_,[0],_bm8_,_bm7_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ta_, - embed_situation_familiale_calc, - _bm9_)} - catch(_bqk_) - {_bqk_ = caml_wrap_exception(_bqk_); - if(_bqk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s9_]; - throw _bqk_} - var - _bm__= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_tb_,calcul_nombre_part_logement_fo), - [0, - calcul_nombre_parts_dot_condit, - calcul_nombre_parts_dot_nombre, - calcul_nombre_parts_dot_situat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_tc_,_bm__), - calcul_nombre_parts_dot_n_nomb=result$0[1]; - try - {var - _bm$_= - function(param) - {return condition_2_du_832_25$0 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_1500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_2668)}, - _bna_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_te_,1)}, - _bnb_=caml_call4(Runtime_ocaml_Runtime[62],_tf_,[0],_bna_,_bm$_)} - catch(_bqj_) - {_bqj_ = caml_wrap_exception(_bqj_); - if(_bqj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_td_]; - throw _bqj_} - var - montant_forfaitaire_d832_27= - caml_call3 - (Runtime_ocaml_Runtime[28],_tg_,Runtime_ocaml_Runtime[13],_bnb_); - try - {var - _bnc_= - function(param) - {return condition_2_du_832_25$0 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2142091) - :caml_call1(Runtime_ocaml_Runtime[31],cst_1339340)}, - _bnd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ti_,1)}, - _bne_=caml_call4(Runtime_ocaml_Runtime[62],_tj_,[0],_bnd_,_bnc_)} - catch(_bqi_) - {_bqi_ = caml_wrap_exception(_bqi_); - if(_bqi_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_th_]; - throw _bqi_} - var - coefficient_multiplicateur_d83= - caml_call3 - (Runtime_ocaml_Runtime[28],_tk_,Runtime_ocaml_Runtime[13],_bne_); - try - {var - _bnf_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[72], - redevance, - plafond_equivalence_loyer_elig) - ?plafond_equivalence_loyer_elig - :redevance}, - _bng_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tm_,1)}, - _bnh_=caml_call4(Runtime_ocaml_Runtime[62],_tn_,[0],_bng_,_bnf_)} - catch(_bqh_) - {_bqh_ = caml_wrap_exception(_bqh_); - if(_bqh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tl_]; - throw _bqh_} - var - equivalence_loyer_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_to_,Runtime_ocaml_Runtime[13],_bnh_); - try - {var - _bni_= - function(param) - {function _bqf_(param){return calcul_nombre_parts_dot_n_nomb} - function _bqg_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_tq_,1)} - return caml_call4(Runtime_ocaml_Runtime[62],_tr_,[0],_bqg_,_bqf_)}, - _bnj_=function(param){return 1}, - _bnk_= - [0,function(param){return caml_call1(n_nombre_parts_d832_25,0)}], - _bnl_=caml_call4(Runtime_ocaml_Runtime[62],_ts_,_bnk_,_bnj_,_bni_)} - catch(_bqe_) - {_bqe_ = caml_wrap_exception(_bqe_); - if(_bqe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tp_]; - throw _bqe_} - var - n_nombre_parts_d832_25$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_tt_,Runtime_ocaml_Runtime[15],_bnl_); - function _bnm_(param) - {try - {var - _bqa_= - function(param$0) - {return caml_call2 - (Runtime_ocaml_Runtime[68],equivalence_loyer_eligible,param)}, - _bqb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_tv_,1)}, - _bqc_=caml_call4(Runtime_ocaml_Runtime[62],_tw_,[0],_bqb_,_bqa_); - return _bqc_} - catch(_bqd_) - {_bqd_ = caml_wrap_exception(_bqd_); - if(_bqd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tu_]; - throw _bqd_}} - var - depense_nette_minimale_d832_27= - caml_call3 - (Runtime_ocaml_Runtime[28],_tx_,Runtime_ocaml_Runtime[10],_bnm_); - try - {var - _bnn_=function(param){return ressources_menage_arrondies}, - _bno_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tz_,1)}, - _bnp_=caml_call4(Runtime_ocaml_Runtime[62],_tA_,[0],_bno_,_bnn_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_tB_,Runtime_ocaml_Runtime[13],_bnp_)} - catch(_bp$_) - {_bp$_ = caml_wrap_exception(_bp$_); - if(_bp$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ty_]; - throw _bp$_} - try - {var - _bnq_=function(param){return condition_2_du_832_25$0}, - _bnr_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tD_,1)}, - _bns_=caml_call4(Runtime_ocaml_Runtime[62],_tE_,[0],_bnr_,_bnq_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_tF_,Runtime_ocaml_Runtime[12],_bns_)} - catch(_bp__) - {_bp__ = caml_wrap_exception(_bp__); - if(_bp__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tC_]; - throw _bp__} - try - {var - _bnt_=function(param){return n_nombre_parts_d832_25$0}, - _bnu_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tH_,1)}, - _bnv_=caml_call4(Runtime_ocaml_Runtime[62],_tI_,[0],_bnu_,_bnt_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_tJ_,Runtime_ocaml_Runtime[15],_bnv_)} - catch(_bp9_) - {_bp9_ = caml_wrap_exception(_bp9_); - if(_bp9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tG_]; - throw _bp9_} - var - _bnw_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_tK_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_tL_,_bnw_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _bnx_= - function(param) - {var - _bp4_= - caml_call2 - (Runtime_ocaml_Runtime[65], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_25$0), - _bp5_= - caml_call2 - (Runtime_ocaml_Runtime[65], - coefficient_r_d832_25, - n_nombre_parts_d832_25$0), - _bp6_= - caml_call2 - (Runtime_ocaml_Runtime[68],ressources_menage_arrondies,_bp5_), - _bp7_=caml_call2(Runtime_ocaml_Runtime[66],_bp6_,_bp4_), - _bp8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95); - return caml_call2(Runtime_ocaml_Runtime[86],_bp8_,_bp7_)}, - _bny_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tN_,1)}, - _bnz_= - [0, - function(param) - {function _bpZ_(param) - {var - _bp1_= - caml_call2 - (Runtime_ocaml_Runtime[65], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_25$0), - _bp2_= - caml_call2 - (Runtime_ocaml_Runtime[66], - ressources_menage_arrondies, - _bp1_), - _bp3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$0); - return caml_call2(Runtime_ocaml_Runtime[86],_bp3_,_bp2_)} - function _bp0_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_tO_,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_tP_,[0],_bp0_,_bpZ_)}], - _bnA_=caml_call4(Runtime_ocaml_Runtime[62],_tQ_,_bnz_,_bny_,_bnx_)} - catch(_bpY_) - {_bpY_ = caml_wrap_exception(_bpY_); - if(_bpY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tM_]; - throw _bpY_} - var - coefficient_prise_en_charge_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_tR_,Runtime_ocaml_Runtime[15],_bnA_); - function _bnB_(param) - {try - {var - _bpM_= - function(param$0) - {var - _bpQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _tT_, - Runtime_ocaml_Runtime[13], - param), - _bpR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _tU_, - depense_nette_minimale_d832_27), - _bpQ_), - _bpS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _tV_, - Runtime_ocaml_Runtime[13], - _bpR_), - _bpT_=caml_call2(Runtime_ocaml_Runtime[27],_tW_,_bpS_); - if - (caml_call2 - (Runtime_ocaml_Runtime[71],_bpT_,montant_forfaitaire_d832_27)) - {var - _bpU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _tX_, - Runtime_ocaml_Runtime[13], - param), - _bpV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _tY_, - depense_nette_minimale_d832_27), - _bpU_), - _bpW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _tZ_, - Runtime_ocaml_Runtime[13], - _bpV_), - _bpX_=caml_call2(Runtime_ocaml_Runtime[27],_t0_,_bpW_); - return caml_call2 - (Runtime_ocaml_Runtime[68], - montant_forfaitaire_d832_27, - _bpX_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$124)}, - _bpN_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_t1_,1)}, - _bpO_=caml_call4(Runtime_ocaml_Runtime[62],_t2_,[0],_bpN_,_bpM_); - return _bpO_} - catch(_bpP_) - {_bpP_ = caml_wrap_exception(_bpP_); - if(_bpP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tS_]; - throw _bpP_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_t3_,Runtime_ocaml_Runtime[10],_bnB_); - try - {var - _bnC_=function(param){return calcul_equivalence_loyer_minim$3}, - _bnD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t5_,1)}, - _bnE_=caml_call4(Runtime_ocaml_Runtime[62],_t6_,[0],_bnD_,_bnC_)} - catch(_bpL_) - {_bpL_ = caml_wrap_exception(_bpL_); - if(_bpL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_t4_]; - throw _bpL_} - var - equivalence_loyer_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_t7_,Runtime_ocaml_Runtime[13],_bnE_); - try - {var - _bnF_= - function(param) - {var - _bpF_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$3), - _bpG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$4), - _bpH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$0), - _bpI_= - caml_call2 - (Runtime_ocaml_Runtime[86], - coefficient_prise_en_charge_d8, - _bpH_), - _bpJ_=caml_call2(Runtime_ocaml_Runtime[88],_bpI_,_bpG_), - _bpK_=caml_call1(Runtime_ocaml_Runtime[44],_bpJ_); - return caml_call2(Runtime_ocaml_Runtime[89],_bpK_,_bpF_)}, - _bnG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t9_,1)}, - _bnH_= - [0, - function(param) - {function _bpx_(param) - {var - _bpz_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$5), - _bpA_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$6), - _bpB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$1), - _bpC_= - caml_call2 - (Runtime_ocaml_Runtime[86], - coefficient_prise_en_charge_d8, - _bpB_), - _bpD_=caml_call2(Runtime_ocaml_Runtime[88],_bpC_,_bpA_), - _bpE_=caml_call1(Runtime_ocaml_Runtime[44],_bpD_); - return caml_call2(Runtime_ocaml_Runtime[89],_bpE_,_bpz_)} - function _bpy_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_t__,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_t$_,[0],_bpy_,_bpx_)}], - _bnI_=caml_call4(Runtime_ocaml_Runtime[62],_ua_,_bnH_,_bnG_,_bnF_)} - catch(_bpw_) - {_bpw_ = caml_wrap_exception(_bpw_); - if(_bpw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_t8_]; - throw _bpw_} - var - coefficient_prise_en_charge_d8$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_ub_,Runtime_ocaml_Runtime[15],_bnI_); - function _bnJ_(param) - {try - {var - _bo4_= - function(param$0) - {var - _bo8_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$125), - _bo9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ud_, - Runtime_ocaml_Runtime[13], - param), - _bo__= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ue_, - traitement_aide_finale_minorat), - _bo9_), - _bo$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uf_, - Runtime_ocaml_Runtime[13], - _bo__), - _bpa_=caml_call2(Runtime_ocaml_Runtime[27],_ug_,_bo$_), - _bpb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uh_, - Runtime_ocaml_Runtime[13], - _bpa_), - _bpc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ui_, - abattement_depense_nette_minim), - _bpb_), - _bpd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uj_, - Runtime_ocaml_Runtime[13], - _bpc_), - _bpe_=caml_call2(Runtime_ocaml_Runtime[27],_uk_,_bpd_), - _bpf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ul_, - Runtime_ocaml_Runtime[13], - param), - _bpg_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _um_, - traitement_aide_finale_minorat), - _bpf_), - _bph_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _un_, - Runtime_ocaml_Runtime[13], - _bpg_), - _bpi_=caml_call2(Runtime_ocaml_Runtime[27],_uo_,_bph_), - _bpj_=caml_call2(Runtime_ocaml_Runtime[68],_bpi_,_bpe_); - if(caml_call2(Runtime_ocaml_Runtime[72],_bpj_,_bo8_)) - {var - _bpk_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _up_, - Runtime_ocaml_Runtime[13], - param), - _bpl_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uq_, - traitement_aide_finale_minorat), - _bpk_), - _bpm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ur_, - Runtime_ocaml_Runtime[13], - _bpl_), - _bpn_=caml_call2(Runtime_ocaml_Runtime[27],_us_,_bpm_), - _bpo_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ut_, - Runtime_ocaml_Runtime[13], - _bpn_), - _bpp_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uu_, - abattement_depense_nette_minim), - _bpo_), - _bpq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uv_, - Runtime_ocaml_Runtime[13], - _bpp_), - _bpr_=caml_call2(Runtime_ocaml_Runtime[27],_uw_,_bpq_), - _bps_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ux_, - Runtime_ocaml_Runtime[13], - param), - _bpt_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uy_, - traitement_aide_finale_minorat), - _bps_), - _bpu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uz_, - Runtime_ocaml_Runtime[13], - _bpt_), - _bpv_=caml_call2(Runtime_ocaml_Runtime[27],_uA_,_bpu_); - return caml_call2(Runtime_ocaml_Runtime[68],_bpv_,_bpr_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$126)}, - _bo5_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_uB_,1)}, - _bo6_=caml_call4(Runtime_ocaml_Runtime[62],_uC_,[0],_bo5_,_bo4_); - return _bo6_} - catch(_bo7_) - {_bo7_ = caml_wrap_exception(_bo7_); - if(_bo7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uc_]; - throw _bo7_}} - var - traitement_aide_finale_abattem= - caml_call3 - (Runtime_ocaml_Runtime[28],_uD_,Runtime_ocaml_Runtime[10],_bnJ_); - try - {var - _bnK_= - function(param) - {var _bo3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$0); - return caml_call2 - (Runtime_ocaml_Runtime[91], - coefficient_prise_en_charge_d8$0, - _bo3_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$1) - :coefficient_prise_en_charge_d8$0}, - _bnL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uF_,1)}, - _bnM_= - [0, - function(param) - {function _bo0_(param) - {var _bo2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$1); - return caml_call2 - (Runtime_ocaml_Runtime[91], - coefficient_prise_en_charge_d8$0, - _bo2_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$2) - :coefficient_prise_en_charge_d8$0} - function _bo1_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_uG_,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_uH_,[0],_bo1_,_bo0_)}], - _bnN_=caml_call4(Runtime_ocaml_Runtime[62],_uI_,_bnM_,_bnL_,_bnK_)} - catch(_boZ_) - {_boZ_ = caml_wrap_exception(_boZ_); - if(_boZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uE_]; - throw _boZ_} - var - coefficient_prise_en_charge_d8$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_uJ_,Runtime_ocaml_Runtime[15],_bnN_); - function _bnO_(param) - {try - {var - _bn9_= - function(param$0) - {var - _bob_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$127), - _boc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uL_, - Runtime_ocaml_Runtime[13], - param), - _bod_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uM_, - traitement_aide_finale_abattem), - _boc_), - _boe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uN_, - Runtime_ocaml_Runtime[13], - _bod_), - _bof_=caml_call2(Runtime_ocaml_Runtime[27],_uO_,_boe_), - _bog_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uP_, - Runtime_ocaml_Runtime[13], - _bof_), - _boh_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uQ_, - contributions_sociales_dot_mon), - _bog_), - _boi_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uR_, - Runtime_ocaml_Runtime[13], - _boh_), - _boj_=caml_call2(Runtime_ocaml_Runtime[27],_uS_,_boi_), - _bok_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$1), - _bol_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uT_, - Runtime_ocaml_Runtime[13], - param), - _bom_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uU_, - traitement_aide_finale_abattem), - _bol_), - _bon_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uV_, - Runtime_ocaml_Runtime[13], - _bom_), - _boo_=caml_call2(Runtime_ocaml_Runtime[27],_uW_,_bon_), - _bop_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uX_, - Runtime_ocaml_Runtime[13], - _boo_), - _boq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uY_, - contributions_sociales_dot_mon), - _bop_), - _bor_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uZ_, - Runtime_ocaml_Runtime[13], - _boq_), - _bos_=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_bor_), - _bot_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u1_, - Runtime_ocaml_Runtime[13], - param), - _bou_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _u2_, - traitement_aide_finale_abattem), - _bot_), - _bov_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u3_, - Runtime_ocaml_Runtime[13], - _bou_), - _bow_=caml_call2(Runtime_ocaml_Runtime[27],_u4_,_bov_), - _box_=caml_call2(Runtime_ocaml_Runtime[68],_bow_,_bos_), - _boy_=caml_call2(Runtime_ocaml_Runtime[68],_box_,_bok_), - _boz_=caml_call1(Runtime_ocaml_Runtime[38],_boy_), - _boA_=caml_call2(Runtime_ocaml_Runtime[67],_boz_,_boj_); - if(caml_call2(Runtime_ocaml_Runtime[72],_boA_,_bob_)) - {var - _boB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u5_, - Runtime_ocaml_Runtime[13], - param), - _boC_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _u6_, - traitement_aide_finale_abattem), - _boB_), - _boD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u7_, - Runtime_ocaml_Runtime[13], - _boC_), - _boE_=caml_call2(Runtime_ocaml_Runtime[27],_u8_,_boD_), - _boF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u9_, - Runtime_ocaml_Runtime[13], - _boE_), - _boG_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _u__, - contributions_sociales_dot_mon), - _boF_), - _boH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u$_, - Runtime_ocaml_Runtime[13], - _boG_), - _boI_=caml_call2(Runtime_ocaml_Runtime[27],_va_,_boH_), - _boJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$2), - _boK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vb_, - Runtime_ocaml_Runtime[13], - param), - _boL_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vc_, - traitement_aide_finale_abattem), - _boK_), - _boM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vd_, - Runtime_ocaml_Runtime[13], - _boL_), - _boN_=caml_call2(Runtime_ocaml_Runtime[27],_ve_,_boM_), - _boO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vf_, - Runtime_ocaml_Runtime[13], - _boN_), - _boP_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vg_, - contributions_sociales_dot_mon), - _boO_), - _boQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vh_, - Runtime_ocaml_Runtime[13], - _boP_), - _boR_=caml_call2(Runtime_ocaml_Runtime[27],_vi_,_boQ_), - _boS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vj_, - Runtime_ocaml_Runtime[13], - param), - _boT_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vk_, - traitement_aide_finale_abattem), - _boS_), - _boU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vl_, - Runtime_ocaml_Runtime[13], - _boT_), - _boV_=caml_call2(Runtime_ocaml_Runtime[27],_vm_,_boU_), - _boW_=caml_call2(Runtime_ocaml_Runtime[68],_boV_,_boR_), - _boX_=caml_call2(Runtime_ocaml_Runtime[68],_boW_,_boJ_), - _boY_=caml_call1(Runtime_ocaml_Runtime[38],_boX_); - return caml_call2(Runtime_ocaml_Runtime[67],_boY_,_boI_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$128)}, - _bn__= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_vn_,1)}, - _bn$_=caml_call4(Runtime_ocaml_Runtime[62],_vo_,[0],_bn__,_bn9_); - return _bn$_} - catch(_boa_) - {_boa_ = caml_wrap_exception(_boa_); - if(_boa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uK_]; - throw _boa_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_vp_,Runtime_ocaml_Runtime[10],_bnO_); - try - {var - _bnP_= - function(param) - {var - _bn5_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$129), - _bn6_= - caml_call2 - (Runtime_ocaml_Runtime[68], - equivalence_loyer_eligible, - equivalence_loyer_minimale), - _bn7_= - caml_call2 - (Runtime_ocaml_Runtime[65], - _bn6_, - coefficient_prise_en_charge_d8$1); - if(caml_call2(Runtime_ocaml_Runtime[73],_bn7_,_bn5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$130); - var - _bn8_= - caml_call2 - (Runtime_ocaml_Runtime[68], - equivalence_loyer_eligible, - equivalence_loyer_minimale); - return caml_call2 - (Runtime_ocaml_Runtime[65], - _bn8_, - coefficient_prise_en_charge_d8$1)}, - _bnQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vr_,1)}, - _bnR_=caml_call4(Runtime_ocaml_Runtime[62],_vs_,[0],_bnQ_,_bnP_)} - catch(_bn4_) - {_bn4_ = caml_wrap_exception(_bn4_); - if(_bn4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vq_]; - throw _bn4_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_vt_,Runtime_ocaml_Runtime[13],_bnR_); - function _bnS_(param) - {try - {var - _bnT_= - function(param$0) - {var - _bnX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vv_, - Runtime_ocaml_Runtime[13], - param), - _bnY_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vw_, - traitement_aide_finale_contrib), - _bnX_), - _bnZ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vx_, - Runtime_ocaml_Runtime[13], - _bnY_), - _bn0_=caml_call2(Runtime_ocaml_Runtime[27],_vy_,_bnZ_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _bn0_, - montant_minimal_aide_d823_24)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$131); - var - _bn1_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vz_, - Runtime_ocaml_Runtime[13], - param), - _bn2_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vA_, - traitement_aide_finale_contrib), - _bn1_), - _bn3_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vB_, - Runtime_ocaml_Runtime[13], - _bn2_); - return caml_call2(Runtime_ocaml_Runtime[27],_vC_,_bn3_)}, - _bnU_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_vD_,1)}, - _bnV_=caml_call4(Runtime_ocaml_Runtime[62],_vE_,[0],_bnU_,_bnT_); - return _bnV_} - catch(_bnW_) - {_bnW_ = caml_wrap_exception(_bnW_); - if(_bnW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vu_]; - throw _bnW_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_vF_,Runtime_ocaml_Runtime[10],_bnS_); - return [0, - coefficient_multiplicateur_d83, - coefficient_r_d832_25, - n_nombre_parts_d832_25$0, - equivalence_loyer_eligible, - plafond_equivalence_loyer_elig, - equivalence_loyer_minimale, - coefficient_prise_en_charge_d8$1, - aide_finale_formule, - traitement_aide_finale_montant]} - function calcul_aide_personnalisee_loge$1(calcul_aide_personnalisee_loge) - {var - mensualite_principale=calcul_aide_personnalisee_loge[1], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4], - type_travaux_logement=calcul_aide_personnalisee_loge[5], - date_signature_pret=calcul_aide_personnalisee_loge[6], - local_habite_premiere_fois_ben=calcul_aide_personnalisee_loge[7], - date_entree_logement=calcul_aide_personnalisee_loge[8], - copropriete=calcul_aide_personnalisee_loge[9], - situation_r822_11_13_17=calcul_aide_personnalisee_loge[10], - zone=calcul_aide_personnalisee_loge[11], - type_pret=calcul_aide_personnalisee_loge[12], - anciennete_logement=calcul_aide_personnalisee_loge[13], - date_courante=calcul_aide_personnalisee_loge[14]; - try - {var - _a0L_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$1)}, - _a0M_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vH_,1)}, - _a0N_=caml_call4(Runtime_ocaml_Runtime[62],_vI_,[0],_a0M_,_a0L_)} - catch(_bmD_) - {_bmD_ = caml_wrap_exception(_bmD_); - if(_bmD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vG_]; - throw _bmD_} - var - montant_forfaitaire_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_vJ_,Runtime_ocaml_Runtime[13],_a0N_); - try - {var - _a0O_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$2)}, - _a0P_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vL_,1)}, - _a0Q_=caml_call4(Runtime_ocaml_Runtime[62],_vM_,[0],_a0P_,_a0O_)} - catch(_bmC_) - {_bmC_ = caml_wrap_exception(_bmC_); - if(_bmC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vK_]; - throw _bmC_} - var - montant_minimal_aide_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_vN_,Runtime_ocaml_Runtime[13],_a0Q_); - try - {var - _a0R_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_2211133)}, - _a0S_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vP_,1)}, - _a0T_=caml_call4(Runtime_ocaml_Runtime[62],_vQ_,[0],_a0S_,_a0R_)} - catch(_bmB_) - {_bmB_ = caml_wrap_exception(_bmB_); - if(_bmB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vO_]; - throw _bmB_} - var - coefficient_multiplicateur_d83= - caml_call3 - (Runtime_ocaml_Runtime[28],_vR_,Runtime_ocaml_Runtime[13],_a0T_); - try - {var - _a0U_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25)}, - _a0V_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vT_,1)}, - _a0W_=caml_call4(Runtime_ocaml_Runtime[62],_vU_,[0],_a0V_,_a0U_)} - catch(_bmA_) - {_bmA_ = caml_wrap_exception(_bmA_); - if(_bmA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vS_]; - throw _bmA_} - var - coefficient_multiplicateur_d83$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_vV_,Runtime_ocaml_Runtime[15],_a0W_); - try - {var - _a0X_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_560085)}, - _a0Y_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vX_,1)}, - _a0Z_=caml_call4(Runtime_ocaml_Runtime[62],_vY_,[0],_a0Y_,_a0X_)} - catch(_bmz_) - {_bmz_ = caml_wrap_exception(_bmz_); - if(_bmz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vW_]; - throw _bmz_} - var - montant_limite_tranches_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_vZ_,Runtime_ocaml_Runtime[13],_a0Z_); - try - {var - _a00_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_208$0)}, - _a01_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v1_,1)}, - _a02_=caml_call4(Runtime_ocaml_Runtime[62],_v2_,[0],_a01_,_a00_)} - catch(_bmy_) - {_bmy_ = caml_wrap_exception(_bmy_); - if(_bmy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v0_]; - throw _bmy_} - var - taux_tranche_inferieure_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_v3_,Runtime_ocaml_Runtime[15],_a02_); - try - {var - _a03_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_416)}, - _a04_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v5_,1)}, - _a05_=caml_call4(Runtime_ocaml_Runtime[62],_v6_,[0],_a04_,_a03_)} - catch(_bmx_) - {_bmx_ = caml_wrap_exception(_bmx_); - if(_bmx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v4_]; - throw _bmx_} - var - taux_tranche_superieure_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_v7_,Runtime_ocaml_Runtime[15],_a05_); - try - {var - _a06_= - function(param) - {var - _bmv_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957), - _bmw_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$62); - return caml_call2(Runtime_ocaml_Runtime[89],_bmw_,_bmv_)}, - _a07_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v9_,1)}, - _a08_=caml_call4(Runtime_ocaml_Runtime[62],_v__,[0],_a07_,_a06_)} - catch(_bmu_) - {_bmu_ = caml_wrap_exception(_bmu_); - if(_bmu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v8_]; - throw _bmu_} - var - taux_francs_vers_euros= - caml_call3 - (Runtime_ocaml_Runtime[28],_v$_,Runtime_ocaml_Runtime[15],_a08_); - try - {var - _a09_=function(param){return nombre_personnes_a_charge}, - _a0__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wb_,1)}, - _a0$_=caml_call4(Runtime_ocaml_Runtime[62],_wc_,[0],_a0__,_a09_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_wd_,Runtime_ocaml_Runtime[14],_a0$_)} - catch(_bmt_) - {_bmt_ = caml_wrap_exception(_bmt_); - if(_bmt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wa_]; - throw _bmt_} - try - {var - _a1a_=function(param){return situation_familiale_calcul_apl}, - _a1b_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wf_,1)}, - _a1c_=caml_call4(Runtime_ocaml_Runtime[62],_wg_,[0],_a1b_,_a1a_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _wh_, - embed_situation_familiale_calc, - _a1c_)} - catch(_bms_) - {_bms_ = caml_wrap_exception(_bms_); - if(_bms_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_we_]; - throw _bms_} - var - _a1d_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_wi_,calcul_nombre_parts_accession_), - [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_wj_,_a1d_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _a1e_= - function(param) - {if(0 === anciennete_logement[0]) - {var _bmq_=caml_call3(Runtime_ocaml_Runtime[56],1998,10,1); - return caml_call2 - (Runtime_ocaml_Runtime[99],date_signature_pret,_bmq_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234)} - var ameliore_par_occupant=anciennete_logement[1]; - if(0 === ameliore_par_occupant[0]) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0172); - var _bmr_=caml_call3(Runtime_ocaml_Runtime[56],1998,10,1); - return caml_call2 - (Runtime_ocaml_Runtime[99],date_signature_pret,_bmr_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$0)}, - _a1f_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wl_,1)}, - _a1g_=caml_call4(Runtime_ocaml_Runtime[62],_wm_,[0],_a1f_,_a1e_)} - catch(_bmp_) - {_bmp_ = caml_wrap_exception(_bmp_); - if(_bmp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wk_]; - throw _bmp_} - var - coefficient_multiplicateur_d83$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_wn_,Runtime_ocaml_Runtime[15],_a1g_); - try - {var - _a1h_=function(param){return date_courante}, - _a1i_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wp_,1)}, - _a1j_=caml_call4(Runtime_ocaml_Runtime[62],_wq_,[0],_a1i_,_a1h_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_wr_,Runtime_ocaml_Runtime[16],_a1j_)} - catch(_bmo_) - {_bmo_ = caml_wrap_exception(_bmo_); - if(_bmo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wo_]; - throw _bmo_} - var - _a1k_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_ws_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_wt_,_a1k_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _a1l_= - function(param) - {function _bl4_(param){throw Runtime_ocaml_Runtime[2]} - function _bl5_(param){return 0} - function _bl6_(param) - {function _bme_(param) - {var - _bmk_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bml_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$1), - _bmm_=caml_call2(Runtime_ocaml_Runtime[65],_bml_,_bmk_), - _bmn_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399$1); - return caml_call2(Runtime_ocaml_Runtime[67],_bmn_,_bmm_)} - function _bmf_(param) - {var - _bmg_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bmh_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bmg_); - if(_bmh_) - var - _bmi_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _bmj_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bmi_); - else - var _bmj_=_bmh_; - return caml_call2(Runtime_ocaml_Runtime[29],_wv_,_bmj_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ww_,[0],_bmf_,_bme_)} - var - _bl7_= - [0, - function(param) - {function _bl8_(param) - {var - _bma_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bmb_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$1), - _bmc_=caml_call2(Runtime_ocaml_Runtime[65],_bmb_,_bma_), - _bmd_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$1); - return caml_call2(Runtime_ocaml_Runtime[67],_bmd_,_bmc_)} - function _bl9_(param) - {var - _bl__=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _bl$_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bl__); - return caml_call2(Runtime_ocaml_Runtime[29],_wx_,_bl$_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wy_,[0],_bl9_,_bl8_)}, - _bl6_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_wz_,_bl7_,_bl5_,_bl4_)}, - _a1m_=function(param){return 1}, - _a1n_= - [0, - function(param) - {function _blI_(param){throw Runtime_ocaml_Runtime[2]} - function _blJ_(param){return 0} - function _blK_(param) - {function _blU_(param) - {var - _bl0_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _bl1_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$2), - _bl2_=caml_call2(Runtime_ocaml_Runtime[65],_bl1_,_bl0_), - _bl3_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$2); - return caml_call2(Runtime_ocaml_Runtime[67],_bl3_,_bl2_)} - function _blV_(param) - {var - _blW_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _blX_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_blW_); - if(_blX_) - var - _blY_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _blZ_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_blY_); - else - var _blZ_=_blX_; - var copropriete$0=_blZ_?copropriete:_blZ_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_wA_,copropriete$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wB_,[0],_blV_,_blU_)} - var - _blL_= - [0, - function(param) - {function _blM_(param) - {var - _blQ_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _blR_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$2), - _blS_=caml_call2(Runtime_ocaml_Runtime[65],_blR_,_blQ_), - _blT_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$2); - return caml_call2(Runtime_ocaml_Runtime[67],_blT_,_blS_)} - function _blN_(param) - {var - _blO_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _blP_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_blO_), - copropriete$0=_blP_?copropriete:_blP_; - return caml_call2 - (Runtime_ocaml_Runtime[29],_wC_,copropriete$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wD_,[0],_blN_,_blM_)}, - _blK_]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_wE_,_blL_,_blJ_,_blI_)}], - _a1o_=caml_call4(Runtime_ocaml_Runtime[62],_wF_,_a1n_,_a1m_,_a1l_)} - catch(_blH_) - {_blH_ = caml_wrap_exception(_blH_); - if(_blH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wu_]; - throw _blH_} - var - montant_forfaitaire_charges_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_wG_,Runtime_ocaml_Runtime[13],_a1o_); - function _a1p_(param) - {try - {var - _blB_= - function(param$0) - {var - _blF_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$132), - _blG_= - caml_call2 - (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d832_10); - return caml_call2(Runtime_ocaml_Runtime[72],_blG_,_blF_) - ?caml_call2 - (Runtime_ocaml_Runtime[68], - param, - montant_forfaitaire_d832_10) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$133)}, - _blC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_wI_,1)}, - _blD_=caml_call4(Runtime_ocaml_Runtime[62],_wJ_,[0],_blC_,_blB_); - return _blD_} - catch(_blE_) - {_blE_ = caml_wrap_exception(_blE_); - if(_blE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wH_]; - throw _blE_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_wK_,Runtime_ocaml_Runtime[10],_a1p_); - try - {var - _a1q_= - function(param) - {var - _blA_= - caml_call2 - (Runtime_ocaml_Runtime[65], - mensualite_principale, - coefficient_multiplicateur_d83$0); - return caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage_arrondies, - _blA_) - ?caml_call2 - (Runtime_ocaml_Runtime[65], - mensualite_principale, - coefficient_multiplicateur_d83$0) - :ressources_menage_arrondies}, - _a1r_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wM_,1)}, - _a1s_= - [0, - function(param) - {function _bly_(param){return ressources_menage_arrondies} - function _blz_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_wN_,situation_r822_11_13_17)} - return caml_call4(Runtime_ocaml_Runtime[62],_wO_,[0],_blz_,_bly_)}], - _a1t_=caml_call4(Runtime_ocaml_Runtime[62],_wP_,_a1s_,_a1r_,_a1q_)} - catch(_blx_) - {_blx_ = caml_wrap_exception(_blx_); - if(_blx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wL_]; - throw _blx_} - var - ressources_menage_avec_d832_18= - caml_call3 - (Runtime_ocaml_Runtime[28],_wQ_,Runtime_ocaml_Runtime[13],_a1t_); - function _a1u_(param) - {try - {var - _a5p_=function(param){throw Runtime_ocaml_Runtime[2]}, - _a5q_=function(param){return 0}, - _a5r_= - function(param$0) - {function _bk$_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$134))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29986) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36187); - var - _blf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$63), - _blg_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_blf_), - _blh_=caml_call1(Runtime_ocaml_Runtime[41],_blg_), - _bli_=caml_call1(Runtime_ocaml_Runtime[31],cst_6201), - _blj_=caml_call2(Runtime_ocaml_Runtime[65],_bli_,_blh_), - _blk_=caml_call1(Runtime_ocaml_Runtime[31],cst_42386); - return caml_call2(Runtime_ocaml_Runtime[67],_blk_,_blj_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$135))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26730) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32193); - var - _bll_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$64), - _blm_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bll_), - _bln_=caml_call1(Runtime_ocaml_Runtime[41],_blm_), - _blo_=caml_call1(Runtime_ocaml_Runtime[31],cst_5463), - _blp_=caml_call2(Runtime_ocaml_Runtime[65],_blo_,_bln_), - _blq_=caml_call1(Runtime_ocaml_Runtime[31],cst_37656); - return caml_call2(Runtime_ocaml_Runtime[67],_blq_,_blp_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$136))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24964) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29948); - var - _blr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$65), - _bls_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_blr_), - _blt_=caml_call1(Runtime_ocaml_Runtime[41],_bls_), - _blu_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986), - _blv_=caml_call2(Runtime_ocaml_Runtime[65],_blu_,_blt_), - _blw_=caml_call1(Runtime_ocaml_Runtime[31],cst_34934); - return caml_call2(Runtime_ocaml_Runtime[67],_blw_,_blv_)}} - function _bla_(param$0) - {var - _blb_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30), - _blc_=caml_call2(Runtime_ocaml_Runtime[98],param,_blb_); - if(_blc_) - {var _bld_=0 === anciennete_logement[0]?0:1; - if(_bld_) - switch(type_pret[0]) - {case 0:var _ble_=0;break; - case 1:var _ble_=1;break; - case 2:var _ble_=0;break; - case 3:var _ble_=0;break; - default:var _ble_=0} - else - var _ble_=_bld_} - else - var _ble_=_blc_; - return caml_call2(Runtime_ocaml_Runtime[29],_wS_,_ble_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wT_,[0],_bla_,_bk$_)}, - _a5s_= - function(param$0) - {function _bkN_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$137))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_37252) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44941); - var - _bkT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$66), - _bkU_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkT_), - _bkV_=caml_call1(Runtime_ocaml_Runtime[41],_bkU_), - _bkW_=caml_call1(Runtime_ocaml_Runtime[31],cst_7687), - _bkX_=caml_call2(Runtime_ocaml_Runtime[65],_bkW_,_bkV_), - _bkY_=caml_call1(Runtime_ocaml_Runtime[31],cst_52629); - return caml_call2(Runtime_ocaml_Runtime[67],_bkY_,_bkX_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$138))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33244) - :caml_call1(Runtime_ocaml_Runtime[31],cst_40013); - var - _bkZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$67), - _bk0_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkZ_), - _bk1_=caml_call1(Runtime_ocaml_Runtime[41],_bk0_), - _bk2_=caml_call1(Runtime_ocaml_Runtime[31],cst_6768), - _bk3_=caml_call2(Runtime_ocaml_Runtime[65],_bk2_,_bk1_), - _bk4_=caml_call1(Runtime_ocaml_Runtime[31],cst_46783); - return caml_call2(Runtime_ocaml_Runtime[67],_bk4_,_bk3_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$139))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31036) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37215); - var - _bk5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$68), - _bk6_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bk5_), - _bk7_=caml_call1(Runtime_ocaml_Runtime[41],_bk6_), - _bk8_=caml_call1(Runtime_ocaml_Runtime[31],cst_6179), - _bk9_=caml_call2(Runtime_ocaml_Runtime[65],_bk8_,_bk7_), - _bk__=caml_call1(Runtime_ocaml_Runtime[31],cst_43394); - return caml_call2(Runtime_ocaml_Runtime[67],_bk__,_bk9_)}} - function _bkO_(param$0) - {var - _bkP_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30), - _bkQ_=caml_call2(Runtime_ocaml_Runtime[98],param,_bkP_); - if(_bkQ_) - {var _bkR_=0 === anciennete_logement[0]?1:0; - if(_bkR_) - switch(type_pret[0]) - {case 0:var _bkS_=0;break; - case 1:var _bkS_=1;break; - case 2:var _bkS_=0;break; - case 3:var _bkS_=0;break; - default:var _bkS_=0} - else - var _bkS_=_bkR_} - else - var _bkS_=_bkQ_; - return caml_call2(Runtime_ocaml_Runtime[29],_wU_,_bkS_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wV_,[0],_bkO_,_bkN_)}, - _a5t_= - function(param$0) - {function _bkn_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$140))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29897) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36079); - var - _bkv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$69), - _bkw_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkv_), - _bkx_=caml_call1(Runtime_ocaml_Runtime[41],_bkw_), - _bky_=caml_call1(Runtime_ocaml_Runtime[31],cst_6182), - _bkz_=caml_call2(Runtime_ocaml_Runtime[65],_bky_,_bkx_), - _bkA_=caml_call1(Runtime_ocaml_Runtime[31],cst_42260); - return caml_call2(Runtime_ocaml_Runtime[67],_bkA_,_bkz_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$141))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26650) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32097); - var - _bkB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$70), - _bkC_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkB_), - _bkD_=caml_call1(Runtime_ocaml_Runtime[41],_bkC_), - _bkE_=caml_call1(Runtime_ocaml_Runtime[31],cst_5447), - _bkF_=caml_call2(Runtime_ocaml_Runtime[65],_bkE_,_bkD_), - _bkG_=caml_call1(Runtime_ocaml_Runtime[31],cst_37543); - return caml_call2(Runtime_ocaml_Runtime[67],_bkG_,_bkF_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$142))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24889) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29858); - var - _bkH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$71), - _bkI_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkH_), - _bkJ_=caml_call1(Runtime_ocaml_Runtime[41],_bkI_), - _bkK_=caml_call1(Runtime_ocaml_Runtime[31],cst_4971), - _bkL_=caml_call2(Runtime_ocaml_Runtime[65],_bkK_,_bkJ_), - _bkM_=caml_call1(Runtime_ocaml_Runtime[31],cst_34829); - return caml_call2(Runtime_ocaml_Runtime[67],_bkM_,_bkL_)}} - function _bko_(param$0) - {var - _bkp_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30), - _bkq_=caml_call2(Runtime_ocaml_Runtime[98],param,_bkp_); - if(_bkq_) - {var - _bkr_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30), - _bks_=caml_call2(Runtime_ocaml_Runtime[101],param,_bkr_); - if(_bks_) - {var _bkt_=0 === anciennete_logement[0]?0:1; - if(_bkt_) - switch(type_pret[0]) - {case 0:var _bku_=0;break; - case 1:var _bku_=1;break; - case 2:var _bku_=0;break; - case 3:var _bku_=0;break; - default:var _bku_=0} - else - var _bku_=_bkt_} - else - var _bku_=_bks_} - else - var _bku_=_bkq_; - return caml_call2(Runtime_ocaml_Runtime[29],_wW_,_bku_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wX_,[0],_bko_,_bkn_)}, - _a5u_= - function(param$0) - {function _bjZ_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$143))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_37140) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44807); - var - _bj7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$72), - _bj8_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bj7_), - _bj9_=caml_call1(Runtime_ocaml_Runtime[41],_bj8_), - _bj__=caml_call1(Runtime_ocaml_Runtime[31],cst_7664), - _bj$_=caml_call2(Runtime_ocaml_Runtime[65],_bj__,_bj9_), - _bka_=caml_call1(Runtime_ocaml_Runtime[31],cst_52472); - return caml_call2(Runtime_ocaml_Runtime[67],_bka_,_bj$_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$144))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33145) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39893); - var - _bkb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$73), - _bkc_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkb_), - _bkd_=caml_call1(Runtime_ocaml_Runtime[41],_bkc_), - _bke_=caml_call1(Runtime_ocaml_Runtime[31],cst_6748), - _bkf_=caml_call2(Runtime_ocaml_Runtime[65],_bke_,_bkd_), - _bkg_=caml_call1(Runtime_ocaml_Runtime[31],cst_46643); - return caml_call2(Runtime_ocaml_Runtime[67],_bkg_,_bkf_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$145))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30943) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37103); - var - _bkh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$74), - _bki_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkh_), - _bkj_=caml_call1(Runtime_ocaml_Runtime[41],_bki_), - _bkk_=caml_call1(Runtime_ocaml_Runtime[31],cst_6161), - _bkl_=caml_call2(Runtime_ocaml_Runtime[65],_bkk_,_bkj_), - _bkm_=caml_call1(Runtime_ocaml_Runtime[31],cst_43264); - return caml_call2(Runtime_ocaml_Runtime[67],_bkm_,_bkl_)}} - function _bj0_(param$0) - {var - _bj1_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30), - _bj2_=caml_call2(Runtime_ocaml_Runtime[98],param,_bj1_); - if(_bj2_) - {var - _bj3_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30), - _bj4_=caml_call2(Runtime_ocaml_Runtime[101],param,_bj3_); - if(_bj4_) - {var _bj5_=0 === anciennete_logement[0]?1:0; - if(_bj5_) - switch(type_pret[0]) - {case 0:var _bj6_=0;break; - case 1:var _bj6_=1;break; - case 2:var _bj6_=0;break; - case 3:var _bj6_=0;break; - default:var _bj6_=0} - else - var _bj6_=_bj5_} - else - var _bj6_=_bj4_} - else - var _bj6_=_bj2_; - return caml_call2(Runtime_ocaml_Runtime[29],_wY_,_bj6_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_wZ_,[0],_bj0_,_bjZ_)}, - _a5v_= - function(param$0) - {function _bjz_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$146))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29674) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35810); - var - _bjH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$75), - _bjI_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjH_), - _bjJ_=caml_call1(Runtime_ocaml_Runtime[41],_bjI_), - _bjK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6136), - _bjL_=caml_call2(Runtime_ocaml_Runtime[65],_bjK_,_bjJ_), - _bjM_=caml_call1(Runtime_ocaml_Runtime[31],cst_41945); - return caml_call2(Runtime_ocaml_Runtime[67],_bjM_,_bjL_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$147))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26452) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31858); - var - _bjN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$76), - _bjO_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjN_), - _bjP_=caml_call1(Runtime_ocaml_Runtime[41],_bjO_), - _bjQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5406), - _bjR_=caml_call2(Runtime_ocaml_Runtime[65],_bjQ_,_bjP_), - _bjS_=caml_call1(Runtime_ocaml_Runtime[31],cst_37264); - return caml_call2(Runtime_ocaml_Runtime[67],_bjS_,_bjR_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$148))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24704) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29636); - var - _bjT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$77), - _bjU_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjT_), - _bjV_=caml_call1(Runtime_ocaml_Runtime[41],_bjU_), - _bjW_=caml_call1(Runtime_ocaml_Runtime[31],cst_4934), - _bjX_=caml_call2(Runtime_ocaml_Runtime[65],_bjW_,_bjV_), - _bjY_=caml_call1(Runtime_ocaml_Runtime[31],cst_34570); - return caml_call2(Runtime_ocaml_Runtime[67],_bjY_,_bjX_)}} - function _bjA_(param$0) - {var - _bjB_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30), - _bjC_=caml_call2(Runtime_ocaml_Runtime[98],param,_bjB_); - if(_bjC_) - {var - _bjD_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30), - _bjE_=caml_call2(Runtime_ocaml_Runtime[101],param,_bjD_); - if(_bjE_) - {var _bjF_=0 === anciennete_logement[0]?0:1; - if(_bjF_) - switch(type_pret[0]) - {case 0:var _bjG_=0;break; - case 1:var _bjG_=1;break; - case 2:var _bjG_=0;break; - case 3:var _bjG_=0;break; - default:var _bjG_=0} - else - var _bjG_=_bjF_} - else - var _bjG_=_bjE_} - else - var _bjG_=_bjC_; - return caml_call2(Runtime_ocaml_Runtime[29],_w0_,_bjG_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w1_,[0],_bjA_,_bjz_)}, - _a5w_= - function(param$0) - {function _bi$_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$149))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36864) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44473); - var - _bjh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$78), - _bji_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjh_), - _bjj_=caml_call1(Runtime_ocaml_Runtime[41],_bji_), - _bjk_=caml_call1(Runtime_ocaml_Runtime[31],cst_7607), - _bjl_=caml_call2(Runtime_ocaml_Runtime[65],_bjk_,_bjj_), - _bjm_=caml_call1(Runtime_ocaml_Runtime[31],cst_52081); - return caml_call2(Runtime_ocaml_Runtime[67],_bjm_,_bjl_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$150))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32898) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39596); - var - _bjn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$79), - _bjo_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjn_), - _bjp_=caml_call1(Runtime_ocaml_Runtime[41],_bjo_), - _bjq_=caml_call1(Runtime_ocaml_Runtime[31],cst_6698), - _bjr_=caml_call2(Runtime_ocaml_Runtime[65],_bjq_,_bjp_), - _bjs_=caml_call1(Runtime_ocaml_Runtime[31],cst_46296); - return caml_call2(Runtime_ocaml_Runtime[67],_bjs_,_bjr_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$151))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30713) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36827); - var - _bjt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$80), - _bju_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjt_), - _bjv_=caml_call1(Runtime_ocaml_Runtime[41],_bju_), - _bjw_=caml_call1(Runtime_ocaml_Runtime[31],cst_6115), - _bjx_=caml_call2(Runtime_ocaml_Runtime[65],_bjw_,_bjv_), - _bjy_=caml_call1(Runtime_ocaml_Runtime[31],cst_42942); - return caml_call2(Runtime_ocaml_Runtime[67],_bjy_,_bjx_)}} - function _bja_(param$0) - {var - _bjb_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30), - _bjc_=caml_call2(Runtime_ocaml_Runtime[98],param,_bjb_); - if(_bjc_) - {var - _bjd_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30), - _bje_=caml_call2(Runtime_ocaml_Runtime[101],param,_bjd_); - if(_bje_) - {var _bjf_=0 === anciennete_logement[0]?1:0; - if(_bjf_) - switch(type_pret[0]) - {case 0:var _bjg_=0;break; - case 1:var _bjg_=1;break; - case 2:var _bjg_=0;break; - case 3:var _bjg_=0;break; - default:var _bjg_=0} - else - var _bjg_=_bjf_} - else - var _bjg_=_bje_} - else - var _bjg_=_bjc_; - return caml_call2(Runtime_ocaml_Runtime[29],_w2_,_bjg_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w3_,[0],_bja_,_bi$_)}, - _a5x_= - function(param$0) - {function _biL_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$152))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29650) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35781); - var - _biT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$81), - _biU_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biT_), - _biV_=caml_call1(Runtime_ocaml_Runtime[41],_biU_), - _biW_=caml_call1(Runtime_ocaml_Runtime[31],cst_6131), - _biX_=caml_call2(Runtime_ocaml_Runtime[65],_biW_,_biV_), - _biY_=caml_call1(Runtime_ocaml_Runtime[31],cst_41911); - return caml_call2(Runtime_ocaml_Runtime[67],_biY_,_biX_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$153))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26431) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31833); - var - _biZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$82), - _bi0_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biZ_), - _bi1_=caml_call1(Runtime_ocaml_Runtime[41],_bi0_), - _bi2_=caml_call1(Runtime_ocaml_Runtime[31],cst_5402), - _bi3_=caml_call2(Runtime_ocaml_Runtime[65],_bi2_,_bi1_), - _bi4_=caml_call1(Runtime_ocaml_Runtime[31],cst_37234); - return caml_call2(Runtime_ocaml_Runtime[67],_bi4_,_bi3_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$154))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24684) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29612); - var - _bi5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$83), - _bi6_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bi5_), - _bi7_=caml_call1(Runtime_ocaml_Runtime[41],_bi6_), - _bi8_=caml_call1(Runtime_ocaml_Runtime[31],cst_4930), - _bi9_=caml_call2(Runtime_ocaml_Runtime[65],_bi8_,_bi7_), - _bi__=caml_call1(Runtime_ocaml_Runtime[31],cst_34542); - return caml_call2(Runtime_ocaml_Runtime[67],_bi__,_bi9_)}} - function _biM_(param$0) - {var - _biN_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30), - _biO_=caml_call2(Runtime_ocaml_Runtime[98],param,_biN_); - if(_biO_) - {var - _biP_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30), - _biQ_=caml_call2(Runtime_ocaml_Runtime[101],param,_biP_); - if(_biQ_) - {var _biR_=0 === anciennete_logement[0]?0:1; - if(_biR_) - switch(type_pret[0]) - {case 0:var _biS_=0;break; - case 1:var _biS_=1;break; - case 2:var _biS_=0;break; - case 3:var _biS_=0;break; - default:var _biS_=0} - else - var _biS_=_biR_} - else - var _biS_=_biQ_} - else - var _biS_=_biO_; - return caml_call2(Runtime_ocaml_Runtime[29],_w4_,_biS_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w5_,[0],_biM_,_biL_)}, - _a5y_= - function(param$0) - {function _bil_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$155))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36835) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44437); - var - _bit_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$84), - _biu_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bit_), - _biv_=caml_call1(Runtime_ocaml_Runtime[41],_biu_), - _biw_=caml_call1(Runtime_ocaml_Runtime[31],cst_7601), - _bix_=caml_call2(Runtime_ocaml_Runtime[65],_biw_,_biv_), - _biy_=caml_call1(Runtime_ocaml_Runtime[31],cst_52039); - return caml_call2(Runtime_ocaml_Runtime[67],_biy_,_bix_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$156))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32872) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39564); - var - _biz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$85), - _biA_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biz_), - _biB_=caml_call1(Runtime_ocaml_Runtime[41],_biA_), - _biC_=caml_call1(Runtime_ocaml_Runtime[31],cst_6693), - _biD_=caml_call2(Runtime_ocaml_Runtime[65],_biC_,_biB_), - _biE_=caml_call1(Runtime_ocaml_Runtime[31],cst_46259); - return caml_call2(Runtime_ocaml_Runtime[67],_biE_,_biD_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$157))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30688) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36798); - var - _biF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$86), - _biG_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biF_), - _biH_=caml_call1(Runtime_ocaml_Runtime[41],_biG_), - _biI_=caml_call1(Runtime_ocaml_Runtime[31],cst_6110), - _biJ_=caml_call2(Runtime_ocaml_Runtime[65],_biI_,_biH_), - _biK_=caml_call1(Runtime_ocaml_Runtime[31],cst_42908); - return caml_call2(Runtime_ocaml_Runtime[67],_biK_,_biJ_)}} - function _bim_(param$0) - {var - _bin_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30), - _bio_=caml_call2(Runtime_ocaml_Runtime[98],param,_bin_); - if(_bio_) - {var - _bip_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30), - _biq_=caml_call2(Runtime_ocaml_Runtime[101],param,_bip_); - if(_biq_) - {var _bir_=0 === anciennete_logement[0]?1:0; - if(_bir_) - switch(type_pret[0]) - {case 0:var _bis_=0;break; - case 1:var _bis_=1;break; - case 2:var _bis_=0;break; - case 3:var _bis_=0;break; - default:var _bis_=0} - else - var _bis_=_bir_} - else - var _bis_=_biq_} - else - var _bis_=_bio_; - return caml_call2(Runtime_ocaml_Runtime[29],_w6_,_bis_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w7_,[0],_bim_,_bil_)}, - _a5z_= - function(param$0) - {function _bhX_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$158))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29482) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35578); - var - _bh5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$87), - _bh6_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bh5_), - _bh7_=caml_call1(Runtime_ocaml_Runtime[41],_bh6_), - _bh8_=caml_call1(Runtime_ocaml_Runtime[31],cst_6096), - _bh9_=caml_call2(Runtime_ocaml_Runtime[65],_bh8_,_bh7_), - _bh__=caml_call1(Runtime_ocaml_Runtime[31],cst_41673); - return caml_call2(Runtime_ocaml_Runtime[67],_bh__,_bh9_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$159))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26281) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31653); - var - _bh$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$88), - _bia_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bh$_), - _bib_=caml_call1(Runtime_ocaml_Runtime[41],_bia_), - _bic_=caml_call1(Runtime_ocaml_Runtime[31],cst_5371), - _bid_=caml_call2(Runtime_ocaml_Runtime[65],_bic_,_bib_), - _bie_=caml_call1(Runtime_ocaml_Runtime[31],cst_37023); - return caml_call2(Runtime_ocaml_Runtime[67],_bie_,_bid_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$160))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24544) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29444); - var - _bif_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$89), - _big_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bif_), - _bih_=caml_call1(Runtime_ocaml_Runtime[41],_big_), - _bii_=caml_call1(Runtime_ocaml_Runtime[31],cst_4902), - _bij_=caml_call2(Runtime_ocaml_Runtime[65],_bii_,_bih_), - _bik_=caml_call1(Runtime_ocaml_Runtime[31],cst_34346); - return caml_call2(Runtime_ocaml_Runtime[67],_bik_,_bij_)}} - function _bhY_(param$0) - {var - _bhZ_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bh0_=caml_call2(Runtime_ocaml_Runtime[98],param,_bhZ_); - if(_bh0_) - {var - _bh1_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30), - _bh2_=caml_call2(Runtime_ocaml_Runtime[101],param,_bh1_); - if(_bh2_) - {var _bh3_=0 === anciennete_logement[0]?0:1; - if(_bh3_) - switch(type_pret[0]) - {case 0:var _bh4_=0;break; - case 1:var _bh4_=1;break; - case 2:var _bh4_=0;break; - case 3:var _bh4_=0;break; - default:var _bh4_=0} - else - var _bh4_=_bh3_} - else - var _bh4_=_bh2_} - else - var _bh4_=_bh0_; - return caml_call2(Runtime_ocaml_Runtime[29],_w8_,_bh4_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w9_,[0],_bhY_,_bhX_)}, - _a5A_= - function(param$0) - {function _bhx_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$161))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36626) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44185); - var - _bhF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$90), - _bhG_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhF_), - _bhH_=caml_call1(Runtime_ocaml_Runtime[41],_bhG_), - _bhI_=caml_call1(Runtime_ocaml_Runtime[31],cst_7558), - _bhJ_=caml_call2(Runtime_ocaml_Runtime[65],_bhI_,_bhH_), - _bhK_=caml_call1(Runtime_ocaml_Runtime[31],cst_51744); - return caml_call2(Runtime_ocaml_Runtime[67],_bhK_,_bhJ_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$162))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39340); - var - _bhL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$91), - _bhM_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhL_), - _bhN_=caml_call1(Runtime_ocaml_Runtime[41],_bhM_), - _bhO_=caml_call1(Runtime_ocaml_Runtime[31],cst_6655), - _bhP_=caml_call2(Runtime_ocaml_Runtime[65],_bhO_,_bhN_), - _bhQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_45997); - return caml_call2(Runtime_ocaml_Runtime[67],_bhQ_,_bhP_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$163))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30514) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36589); - var - _bhR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$92), - _bhS_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhR_), - _bhT_=caml_call1(Runtime_ocaml_Runtime[41],_bhS_), - _bhU_=caml_call1(Runtime_ocaml_Runtime[31],cst_6075), - _bhV_=caml_call2(Runtime_ocaml_Runtime[65],_bhU_,_bhT_), - _bhW_=caml_call1(Runtime_ocaml_Runtime[31],cst_42665); - return caml_call2(Runtime_ocaml_Runtime[67],_bhW_,_bhV_)}} - function _bhy_(param$0) - {var - _bhz_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bhA_=caml_call2(Runtime_ocaml_Runtime[98],param,_bhz_); - if(_bhA_) - {var - _bhB_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30), - _bhC_=caml_call2(Runtime_ocaml_Runtime[101],param,_bhB_); - if(_bhC_) - {var _bhD_=0 === anciennete_logement[0]?1:0; - if(_bhD_) - switch(type_pret[0]) - {case 0:var _bhE_=0;break; - case 1:var _bhE_=1;break; - case 2:var _bhE_=0;break; - case 3:var _bhE_=0;break; - default:var _bhE_=0} - else - var _bhE_=_bhD_} - else - var _bhE_=_bhC_} - else - var _bhE_=_bhA_; - return caml_call2(Runtime_ocaml_Runtime[29],_w__,_bhE_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_w$_,[0],_bhy_,_bhx_)}, - _a5B_= - function(param$0) - {function _bg9_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$164))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28861) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34829$0); - var - _bhf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$93), - _bhg_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhf_), - _bhh_=caml_call1(Runtime_ocaml_Runtime[41],_bhg_), - _bhi_=caml_call1(Runtime_ocaml_Runtime[31],cst_5968), - _bhj_=caml_call2(Runtime_ocaml_Runtime[65],_bhi_,_bhh_), - _bhk_=caml_call1(Runtime_ocaml_Runtime[31],cst_40796); - return caml_call2(Runtime_ocaml_Runtime[67],_bhk_,_bhj_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$165))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30987); - var - _bhl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$94), - _bhm_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhl_), - _bhn_=caml_call1(Runtime_ocaml_Runtime[41],_bhm_), - _bho_=caml_call1(Runtime_ocaml_Runtime[31],cst_5258), - _bhp_=caml_call2(Runtime_ocaml_Runtime[65],_bho_,_bhn_), - _bhq_=caml_call1(Runtime_ocaml_Runtime[31],cst_36244); - return caml_call2(Runtime_ocaml_Runtime[67],_bhq_,_bhp_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$166))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24027) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28824); - var - _bhr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$95), - _bhs_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhr_), - _bht_=caml_call1(Runtime_ocaml_Runtime[41],_bhs_), - _bhu_=caml_call1(Runtime_ocaml_Runtime[31],cst_4799), - _bhv_=caml_call2(Runtime_ocaml_Runtime[65],_bhu_,_bht_), - _bhw_=caml_call1(Runtime_ocaml_Runtime[31],cst_33623); - return caml_call2(Runtime_ocaml_Runtime[67],_bhw_,_bhv_)}} - function _bg__(param$0) - {var - _bg$_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bha_=caml_call2(Runtime_ocaml_Runtime[98],param,_bg$_); - if(_bha_) - {var - _bhb_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bhc_=caml_call2(Runtime_ocaml_Runtime[101],param,_bhb_); - if(_bhc_) - {var _bhd_=0 === anciennete_logement[0]?0:1; - if(_bhd_) - switch(type_pret[0]) - {case 0:var _bhe_=0;break; - case 1:var _bhe_=1;break; - case 2:var _bhe_=0;break; - case 3:var _bhe_=0;break; - default:var _bhe_=0} - else - var _bhe_=_bhd_} - else - var _bhe_=_bhc_} - else - var _bhe_=_bha_; - return caml_call2(Runtime_ocaml_Runtime[29],_xa_,_bhe_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xb_,[0],_bg__,_bg9_)}, - _a5C_= - function(param$0) - {function _bgJ_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$167))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35855) - :caml_call1(Runtime_ocaml_Runtime[31],cst_43255); - var - _bgR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$96), - _bgS_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgR_), - _bgT_=caml_call1(Runtime_ocaml_Runtime[41],_bgS_), - _bgU_=caml_call1(Runtime_ocaml_Runtime[31],cst_7399), - _bgV_=caml_call2(Runtime_ocaml_Runtime[65],_bgU_,_bgT_), - _bgW_=caml_call1(Runtime_ocaml_Runtime[31],cst_50655); - return caml_call2(Runtime_ocaml_Runtime[67],_bgW_,_bgV_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$168))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31998) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38512); - var - _bgX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$97), - _bgY_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgX_), - _bgZ_=caml_call1(Runtime_ocaml_Runtime[41],_bgY_), - _bg0_=caml_call1(Runtime_ocaml_Runtime[31],cst_6515), - _bg1_=caml_call2(Runtime_ocaml_Runtime[65],_bg0_,_bgZ_), - _bg2_=caml_call1(Runtime_ocaml_Runtime[31],cst_45029); - return caml_call2(Runtime_ocaml_Runtime[67],_bg2_,_bg1_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$169))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29872) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35819); - var - _bg3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$98), - _bg4_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bg3_), - _bg5_=caml_call1(Runtime_ocaml_Runtime[41],_bg4_), - _bg6_=caml_call1(Runtime_ocaml_Runtime[31],cst_5947), - _bg7_=caml_call2(Runtime_ocaml_Runtime[65],_bg6_,_bg5_), - _bg8_=caml_call1(Runtime_ocaml_Runtime[31],cst_41767); - return caml_call2(Runtime_ocaml_Runtime[67],_bg8_,_bg7_)}} - function _bgK_(param$0) - {var - _bgL_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bgM_=caml_call2(Runtime_ocaml_Runtime[98],param,_bgL_); - if(_bgM_) - {var - _bgN_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31), - _bgO_=caml_call2(Runtime_ocaml_Runtime[101],param,_bgN_); - if(_bgO_) - {var _bgP_=0 === anciennete_logement[0]?1:0; - if(_bgP_) - switch(type_pret[0]) - {case 0:var _bgQ_=0;break; - case 1:var _bgQ_=1;break; - case 2:var _bgQ_=0;break; - case 3:var _bgQ_=0;break; - default:var _bgQ_=0} - else - var _bgQ_=_bgP_} - else - var _bgQ_=_bgO_} - else - var _bgQ_=_bgM_; - return caml_call2(Runtime_ocaml_Runtime[29],_xc_,_bgQ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xd_,[0],_bgK_,_bgJ_)}, - _a5D_= - function(param$0) - {function _bgj_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$170))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28575) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34484); - var - _bgr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$99), - _bgs_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgr_), - _bgt_=caml_call1(Runtime_ocaml_Runtime[41],_bgs_), - _bgu_=caml_call1(Runtime_ocaml_Runtime[31],cst_5909), - _bgv_=caml_call2(Runtime_ocaml_Runtime[65],_bgu_,_bgt_), - _bgw_=caml_call1(Runtime_ocaml_Runtime[31],cst_40392); - return caml_call2(Runtime_ocaml_Runtime[67],_bgw_,_bgv_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$171))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25473) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30680); - var - _bgx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$100), - _bgy_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgx_), - _bgz_=caml_call1(Runtime_ocaml_Runtime[41],_bgy_), - _bgA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5206), - _bgB_=caml_call2(Runtime_ocaml_Runtime[65],_bgA_,_bgz_), - _bgC_=caml_call1(Runtime_ocaml_Runtime[31],cst_35885); - return caml_call2(Runtime_ocaml_Runtime[67],_bgC_,_bgB_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$172))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23789) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28539); - var - _bgD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$101), - _bgE_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgD_), - _bgF_=caml_call1(Runtime_ocaml_Runtime[41],_bgE_), - _bgG_=caml_call1(Runtime_ocaml_Runtime[31],cst_4751), - _bgH_=caml_call2(Runtime_ocaml_Runtime[65],_bgG_,_bgF_), - _bgI_=caml_call1(Runtime_ocaml_Runtime[31],cst_33290); - return caml_call2(Runtime_ocaml_Runtime[67],_bgI_,_bgH_)}} - function _bgk_(param$0) - {var - _bgl_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31), - _bgm_=caml_call2(Runtime_ocaml_Runtime[98],param,_bgl_); - if(_bgm_) - {var - _bgn_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bgo_=caml_call2(Runtime_ocaml_Runtime[101],param,_bgn_); - if(_bgo_) - {var _bgp_=0 === anciennete_logement[0]?0:1; - if(_bgp_) - switch(type_pret[0]) - {case 0:var _bgq_=0;break; - case 1:var _bgq_=1;break; - case 2:var _bgq_=0;break; - case 3:var _bgq_=0;break; - default:var _bgq_=0} - else - var _bgq_=_bgp_} - else - var _bgq_=_bgo_} - else - var _bgq_=_bgm_; - return caml_call2(Runtime_ocaml_Runtime[29],_xe_,_bgq_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xf_,[0],_bgk_,_bgj_)}, - _a5E_= - function(param$0) - {function _bfV_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$173))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42827); - var - _bf3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$102), - _bf4_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bf3_), - _bf5_=caml_call1(Runtime_ocaml_Runtime[41],_bf4_), - _bf6_=caml_call1(Runtime_ocaml_Runtime[31],cst_7326), - _bf7_=caml_call2(Runtime_ocaml_Runtime[65],_bf6_,_bf5_), - _bf8_=caml_call1(Runtime_ocaml_Runtime[31],cst_50153); - return caml_call2(Runtime_ocaml_Runtime[67],_bf8_,_bf7_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$174))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31681) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38131); - var - _bf9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$103), - _bf__= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bf9_), - _bf$_=caml_call1(Runtime_ocaml_Runtime[41],_bf__), - _bga_=caml_call1(Runtime_ocaml_Runtime[31],cst_6450), - _bgb_=caml_call2(Runtime_ocaml_Runtime[65],_bga_,_bf$_), - _bgc_=caml_call1(Runtime_ocaml_Runtime[31],cst_44583); - return caml_call2(Runtime_ocaml_Runtime[67],_bgc_,_bgb_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$175))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29576) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35464); - var - _bgd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$104), - _bge_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgd_), - _bgf_=caml_call1(Runtime_ocaml_Runtime[41],_bge_), - _bgg_=caml_call1(Runtime_ocaml_Runtime[31],cst_5888), - _bgh_=caml_call2(Runtime_ocaml_Runtime[65],_bgg_,_bgf_), - _bgi_=caml_call1(Runtime_ocaml_Runtime[31],cst_41353); - return caml_call2(Runtime_ocaml_Runtime[67],_bgi_,_bgh_)}} - function _bfW_(param$0) - {var - _bfX_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31), - _bfY_=caml_call2(Runtime_ocaml_Runtime[98],param,_bfX_); - if(_bfY_) - {var - _bfZ_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31), - _bf0_=caml_call2(Runtime_ocaml_Runtime[101],param,_bfZ_); - if(_bf0_) - {var _bf1_=0 === anciennete_logement[0]?1:0; - if(_bf1_) - switch(type_pret[0]) - {case 0:var _bf2_=0;break; - case 1:var _bf2_=1;break; - case 2:var _bf2_=0;break; - case 3:var _bf2_=0;break; - default:var _bf2_=0} - else - var _bf2_=_bf1_} - else - var _bf2_=_bf0_} - else - var _bf2_=_bfY_; - return caml_call2(Runtime_ocaml_Runtime[29],_xg_,_bf2_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xh_,[0],_bfW_,_bfV_)}, - _a5F_= - function(param$0) - {function _bfv_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$176))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28264) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34109); - var - _bfD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$105), - _bfE_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfD_), - _bfF_=caml_call1(Runtime_ocaml_Runtime[41],_bfE_), - _bfG_=caml_call1(Runtime_ocaml_Runtime[31],cst_5845), - _bfH_=caml_call2(Runtime_ocaml_Runtime[65],_bfG_,_bfF_), - _bfI_=caml_call1(Runtime_ocaml_Runtime[31],cst_39953); - return caml_call2(Runtime_ocaml_Runtime[67],_bfI_,_bfH_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$177))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25196) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30346); - var - _bfJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$106), - _bfK_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfJ_), - _bfL_=caml_call1(Runtime_ocaml_Runtime[41],_bfK_), - _bfM_=caml_call1(Runtime_ocaml_Runtime[31],cst_5149), - _bfN_=caml_call2(Runtime_ocaml_Runtime[65],_bfM_,_bfL_), - _bfO_=caml_call1(Runtime_ocaml_Runtime[31],cst_35495); - return caml_call2(Runtime_ocaml_Runtime[67],_bfO_,_bfN_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$178))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23530) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28228); - var - _bfP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$107), - _bfQ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfP_), - _bfR_=caml_call1(Runtime_ocaml_Runtime[41],_bfQ_), - _bfS_=caml_call1(Runtime_ocaml_Runtime[31],cst_4699), - _bfT_=caml_call2(Runtime_ocaml_Runtime[65],_bfS_,_bfR_), - _bfU_=caml_call1(Runtime_ocaml_Runtime[31],cst_32928); - return caml_call2(Runtime_ocaml_Runtime[67],_bfU_,_bfT_)}} - function _bfw_(param$0) - {var - _bfx_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31), - _bfy_=caml_call2(Runtime_ocaml_Runtime[98],param,_bfx_); - if(_bfy_) - {var - _bfz_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31), - _bfA_=caml_call2(Runtime_ocaml_Runtime[101],param,_bfz_); - if(_bfA_) - {var _bfB_=0 === anciennete_logement[0]?0:1; - if(_bfB_) - switch(type_pret[0]) - {case 0:var _bfC_=0;break; - case 1:var _bfC_=1;break; - case 2:var _bfC_=0;break; - case 3:var _bfC_=0;break; - default:var _bfC_=0} - else - var _bfC_=_bfB_} - else - var _bfC_=_bfA_} - else - var _bfC_=_bfy_; - return caml_call2(Runtime_ocaml_Runtime[29],_xi_,_bfC_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xj_,[0],_bfw_,_bfv_)}, - _a5G_= - function(param$0) - {function _be7_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$179))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35114) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42361); - var - _bfd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$108), - _bfe_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfd_), - _bff_=caml_call1(Runtime_ocaml_Runtime[41],_bfe_), - _bfg_=caml_call1(Runtime_ocaml_Runtime[31],cst_7246), - _bfh_=caml_call2(Runtime_ocaml_Runtime[65],_bfg_,_bff_), - _bfi_=caml_call1(Runtime_ocaml_Runtime[31],cst_49607); - return caml_call2(Runtime_ocaml_Runtime[67],_bfi_,_bfh_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$180))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31336) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37716); - var - _bfj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$109), - _bfk_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfj_), - _bfl_=caml_call1(Runtime_ocaml_Runtime[41],_bfk_), - _bfm_=caml_call1(Runtime_ocaml_Runtime[31],cst_6380), - _bfn_=caml_call2(Runtime_ocaml_Runtime[65],_bfm_,_bfl_), - _bfo_=caml_call1(Runtime_ocaml_Runtime[31],cst_44098); - return caml_call2(Runtime_ocaml_Runtime[67],_bfo_,_bfn_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$181))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29254) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35078); - var - _bfp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$110), - _bfq_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfp_), - _bfr_=caml_call1(Runtime_ocaml_Runtime[41],_bfq_), - _bfs_=caml_call1(Runtime_ocaml_Runtime[31],cst_5824), - _bft_=caml_call2(Runtime_ocaml_Runtime[65],_bfs_,_bfr_), - _bfu_=caml_call1(Runtime_ocaml_Runtime[31],cst_40903); - return caml_call2(Runtime_ocaml_Runtime[67],_bfu_,_bft_)}} - function _be8_(param$0) - {var - _be9_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31), - _be__=caml_call2(Runtime_ocaml_Runtime[98],param,_be9_); - if(_be__) - {var - _be$_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31), - _bfa_=caml_call2(Runtime_ocaml_Runtime[101],param,_be$_); - if(_bfa_) - {var _bfb_=0 === anciennete_logement[0]?1:0; - if(_bfb_) - switch(type_pret[0]) - {case 0:var _bfc_=0;break; - case 1:var _bfc_=1;break; - case 2:var _bfc_=0;break; - case 3:var _bfc_=0;break; - default:var _bfc_=0} - else - var _bfc_=_bfb_} - else - var _bfc_=_bfa_} - else - var _bfc_=_be__; - return caml_call2(Runtime_ocaml_Runtime[29],_xk_,_bfc_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xl_,[0],_be8_,_be7_)}, - _a5H_= - function(param$0) - {function _beH_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$182))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28174) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34000); - var - _beP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$111), - _beQ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beP_), - _beR_=caml_call1(Runtime_ocaml_Runtime[41],_beQ_), - _beS_=caml_call1(Runtime_ocaml_Runtime[31],cst_5826), - _beT_=caml_call2(Runtime_ocaml_Runtime[65],_beS_,_beR_), - _beU_=caml_call1(Runtime_ocaml_Runtime[31],cst_39826); - return caml_call2(Runtime_ocaml_Runtime[67],_beU_,_beT_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$183))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25116) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30249); - var - _beV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$112), - _beW_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beV_), - _beX_=caml_call1(Runtime_ocaml_Runtime[41],_beW_), - _beY_=caml_call1(Runtime_ocaml_Runtime[31],cst_5133), - _beZ_=caml_call2(Runtime_ocaml_Runtime[65],_beY_,_beX_), - _be0_=caml_call1(Runtime_ocaml_Runtime[31],cst_35382); - return caml_call2(Runtime_ocaml_Runtime[67],_be0_,_beZ_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$184))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23455) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28138); - var - _be1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$113), - _be2_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_be1_), - _be3_=caml_call1(Runtime_ocaml_Runtime[41],_be2_), - _be4_=caml_call1(Runtime_ocaml_Runtime[31],cst_4684), - _be5_=caml_call2(Runtime_ocaml_Runtime[65],_be4_,_be3_), - _be6_=caml_call1(Runtime_ocaml_Runtime[31],cst_32823); - return caml_call2(Runtime_ocaml_Runtime[67],_be6_,_be5_)}} - function _beI_(param$0) - {var - _beJ_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31), - _beK_=caml_call2(Runtime_ocaml_Runtime[98],param,_beJ_); - if(_beK_) - {var - _beL_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31), - _beM_=caml_call2(Runtime_ocaml_Runtime[101],param,_beL_); - if(_beM_) - {var _beN_=0 === anciennete_logement[0]?0:1; - if(_beN_) - switch(type_pret[0]) - {case 0:var _beO_=0;break; - case 1:var _beO_=1;break; - case 2:var _beO_=0;break; - case 3:var _beO_=0;break; - default:var _beO_=0} - else - var _beO_=_beN_} - else - var _beO_=_beM_} - else - var _beO_=_beK_; - return caml_call2(Runtime_ocaml_Runtime[29],_xm_,_beO_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xn_,[0],_beI_,_beH_)}, - _a5I_= - function(param$0) - {function _beh_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$185))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35002) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42226); - var - _bep_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$114), - _beq_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bep_), - _ber_=caml_call1(Runtime_ocaml_Runtime[41],_beq_), - _bes_=caml_call1(Runtime_ocaml_Runtime[31],cst_7223), - _bet_=caml_call2(Runtime_ocaml_Runtime[65],_bes_,_ber_), - _beu_=caml_call1(Runtime_ocaml_Runtime[31],cst_49449); - return caml_call2(Runtime_ocaml_Runtime[67],_beu_,_bet_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$186))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31236) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37596); - var - _bev_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$115), - _bew_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bev_), - _bex_=caml_call1(Runtime_ocaml_Runtime[41],_bew_), - _bey_=caml_call1(Runtime_ocaml_Runtime[31],cst_6360), - _bez_=caml_call2(Runtime_ocaml_Runtime[65],_bey_,_bex_), - _beA_=caml_call1(Runtime_ocaml_Runtime[31],cst_43957); - return caml_call2(Runtime_ocaml_Runtime[67],_beA_,_bez_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$187))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29161) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34966); - var - _beB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$116), - _beC_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beB_), - _beD_=caml_call1(Runtime_ocaml_Runtime[41],_beC_), - _beE_=caml_call1(Runtime_ocaml_Runtime[31],cst_5805), - _beF_=caml_call2(Runtime_ocaml_Runtime[65],_beE_,_beD_), - _beG_=caml_call1(Runtime_ocaml_Runtime[31],cst_40773); - return caml_call2(Runtime_ocaml_Runtime[67],_beG_,_beF_)}} - function _bei_(param$0) - {var - _bej_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31), - _bek_=caml_call2(Runtime_ocaml_Runtime[98],param,_bej_); - if(_bek_) - {var - _bel_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31), - _bem_=caml_call2(Runtime_ocaml_Runtime[101],param,_bel_); - if(_bem_) - {var _ben_=0 === anciennete_logement[0]?1:0; - if(_ben_) - switch(type_pret[0]) - {case 0:var _beo_=0;break; - case 1:var _beo_=1;break; - case 2:var _beo_=0;break; - case 3:var _beo_=0;break; - default:var _beo_=0} - else - var _beo_=_ben_} - else - var _beo_=_bem_} - else - var _beo_=_bek_; - return caml_call2(Runtime_ocaml_Runtime[29],_xo_,_beo_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xp_,[0],_bei_,_beh_)}, - _a5J_= - function(param$0) - {function _bdT_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$188))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27367) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33026); - var - _bd1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$117), - _bd2_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bd1_), - _bd3_=caml_call1(Runtime_ocaml_Runtime[41],_bd2_), - _bd4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5659), - _bd5_=caml_call2(Runtime_ocaml_Runtime[65],_bd4_,_bd3_), - _bd6_=caml_call1(Runtime_ocaml_Runtime[31],cst_38685); - return caml_call2(Runtime_ocaml_Runtime[67],_bd6_,_bd5_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$189))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24396) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29382); - var - _bd7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$118), - _bd8_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bd7_), - _bd9_=caml_call1(Runtime_ocaml_Runtime[41],_bd8_), - _bd__=caml_call1(Runtime_ocaml_Runtime[31],cst_4986$0), - _bd$_=caml_call2(Runtime_ocaml_Runtime[65],_bd__,_bd9_), - _bea_=caml_call1(Runtime_ocaml_Runtime[31],cst_34368); - return caml_call2(Runtime_ocaml_Runtime[67],_bea_,_bd$_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$190))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22783) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27332); - var - _beb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$119), - _bec_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beb_), - _bed_=caml_call1(Runtime_ocaml_Runtime[41],_bec_), - _bee_=caml_call1(Runtime_ocaml_Runtime[31],cst_4550), - _bef_=caml_call2(Runtime_ocaml_Runtime[65],_bee_,_bed_), - _beg_=caml_call1(Runtime_ocaml_Runtime[31],cst_31882); - return caml_call2(Runtime_ocaml_Runtime[67],_beg_,_bef_)}} - function _bdU_(param$0) - {var - _bdV_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31), - _bdW_=caml_call2(Runtime_ocaml_Runtime[98],param,_bdV_); - if(_bdW_) - {var - _bdX_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31), - _bdY_=caml_call2(Runtime_ocaml_Runtime[101],param,_bdX_); - if(_bdY_) - {var _bdZ_=0 === anciennete_logement[0]?0:1; - if(_bdZ_) - switch(type_pret[0]) - {case 0:var _bd0_=0;break; - case 1:var _bd0_=1;break; - case 2:var _bd0_=0;break; - case 3:var _bd0_=0;break; - default:var _bd0_=0} - else - var _bd0_=_bdZ_} - else - var _bd0_=_bdY_} - else - var _bd0_=_bdW_; - return caml_call2(Runtime_ocaml_Runtime[29],_xq_,_bd0_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xr_,[0],_bdU_,_bdT_)}, - _a5K_= - function(param$0) - {function _bdt_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$191))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33999) - :caml_call1(Runtime_ocaml_Runtime[31],cst_41016); - var - _bdB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$120), - _bdC_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdB_), - _bdD_=caml_call1(Runtime_ocaml_Runtime[41],_bdC_), - _bdE_=caml_call1(Runtime_ocaml_Runtime[31],cst_7016), - _bdF_=caml_call2(Runtime_ocaml_Runtime[65],_bdE_,_bdD_), - _bdG_=caml_call1(Runtime_ocaml_Runtime[31],cst_48032); - return caml_call2(Runtime_ocaml_Runtime[67],_bdG_,_bdF_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$192))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30341) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36519); - var - _bdH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$121), - _bdI_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdH_), - _bdJ_=caml_call1(Runtime_ocaml_Runtime[41],_bdI_), - _bdK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6178), - _bdL_=caml_call2(Runtime_ocaml_Runtime[65],_bdK_,_bdJ_), - _bdM_=caml_call1(Runtime_ocaml_Runtime[31],cst_42697); - return caml_call2(Runtime_ocaml_Runtime[67],_bdM_,_bdL_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$193))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28325) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33964); - var - _bdN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$122), - _bdO_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdN_), - _bdP_=caml_call1(Runtime_ocaml_Runtime[41],_bdO_), - _bdQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5639), - _bdR_=caml_call2(Runtime_ocaml_Runtime[65],_bdQ_,_bdP_), - _bdS_=caml_call1(Runtime_ocaml_Runtime[31],cst_39605); - return caml_call2(Runtime_ocaml_Runtime[67],_bdS_,_bdR_)}} - function _bdu_(param$0) - {var - _bdv_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31), - _bdw_=caml_call2(Runtime_ocaml_Runtime[98],param,_bdv_); - if(_bdw_) - {var - _bdx_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31), - _bdy_=caml_call2(Runtime_ocaml_Runtime[101],param,_bdx_); - if(_bdy_) - {var _bdz_=0 === anciennete_logement[0]?1:0; - if(_bdz_) - switch(type_pret[0]) - {case 0:var _bdA_=0;break; - case 1:var _bdA_=1;break; - case 2:var _bdA_=0;break; - case 3:var _bdA_=0;break; - default:var _bdA_=0} - else - var _bdA_=_bdz_} - else - var _bdA_=_bdy_} - else - var _bdA_=_bdw_; - return caml_call2(Runtime_ocaml_Runtime[29],_xs_,_bdA_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xt_,[0],_bdu_,_bdt_)}, - _a5L_= - function(param$0) - {function _bc5_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$194))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26632) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32139); - var - _bdb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$123), - _bdc_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdb_), - _bdd_=caml_call1(Runtime_ocaml_Runtime[41],_bdc_), - _bde_=caml_call1(Runtime_ocaml_Runtime[31],cst_5507), - _bdf_=caml_call2(Runtime_ocaml_Runtime[65],_bde_,_bdd_), - _bdg_=caml_call1(Runtime_ocaml_Runtime[31],cst_37646); - return caml_call2(Runtime_ocaml_Runtime[67],_bdg_,_bdf_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$195))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23741) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28593); - var - _bdh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$124), - _bdi_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdh_), - _bdj_=caml_call1(Runtime_ocaml_Runtime[41],_bdi_), - _bdk_=caml_call1(Runtime_ocaml_Runtime[31],cst_4852), - _bdl_=caml_call2(Runtime_ocaml_Runtime[65],_bdk_,_bdj_), - _bdm_=caml_call1(Runtime_ocaml_Runtime[31],cst_33445); - return caml_call2(Runtime_ocaml_Runtime[67],_bdm_,_bdl_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$196))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22171) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36598); - var - _bdn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$125), - _bdo_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdn_), - _bdp_=caml_call1(Runtime_ocaml_Runtime[41],_bdo_), - _bdq_=caml_call1(Runtime_ocaml_Runtime[31],cst_4428), - _bdr_=caml_call2(Runtime_ocaml_Runtime[65],_bdq_,_bdp_), - _bds_=caml_call1(Runtime_ocaml_Runtime[31],cst_31026); - return caml_call2(Runtime_ocaml_Runtime[67],_bds_,_bdr_)}} - function _bc6_(param$0) - {var - _bc7_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31), - _bc8_=caml_call2(Runtime_ocaml_Runtime[98],param,_bc7_); - if(_bc8_) - {var - _bc9_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31), - _bc__=caml_call2(Runtime_ocaml_Runtime[101],param,_bc9_); - if(_bc__) - {var _bc$_=0 === anciennete_logement[0]?0:1; - if(_bc$_) - switch(type_pret[0]) - {case 0:var _bda_=0;break; - case 1:var _bda_=1;break; - case 2:var _bda_=0;break; - case 3:var _bda_=0;break; - default:var _bda_=0} - else - var _bda_=_bc$_} - else - var _bda_=_bc__} - else - var _bda_=_bc8_; - return caml_call2(Runtime_ocaml_Runtime[29],_xu_,_bda_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xv_,[0],_bc6_,_bc5_)}, - _a5M_= - function(param$0) - {function _bcF_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$197))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33026$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39914); - var - _bcN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$126), - _bcO_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcN_), - _bcP_=caml_call1(Runtime_ocaml_Runtime[41],_bcO_), - _bcQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_6828), - _bcR_=caml_call2(Runtime_ocaml_Runtime[65],_bcQ_,_bcP_), - _bcS_=caml_call1(Runtime_ocaml_Runtime[31],cst_46742); - return caml_call2(Runtime_ocaml_Runtime[67],_bcS_,_bcR_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$198))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29526) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35538); - var - _bcT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$127), - _bcU_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcT_), - _bcV_=caml_call1(Runtime_ocaml_Runtime[41],_bcU_), - _bcW_=caml_call1(Runtime_ocaml_Runtime[31],cst_6012), - _bcX_=caml_call2(Runtime_ocaml_Runtime[65],_bcW_,_bcV_), - _bcY_=caml_call1(Runtime_ocaml_Runtime[31],cst_41550); - return caml_call2(Runtime_ocaml_Runtime[67],_bcY_,_bcX_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$199))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27564) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33052); - var - _bcZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$128), - _bc0_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcZ_), - _bc1_=caml_call1(Runtime_ocaml_Runtime[41],_bc0_), - _bc2_=caml_call1(Runtime_ocaml_Runtime[31],cst_5488), - _bc3_=caml_call2(Runtime_ocaml_Runtime[65],_bc2_,_bc1_), - _bc4_=caml_call1(Runtime_ocaml_Runtime[31],cst_38541); - return caml_call2(Runtime_ocaml_Runtime[67],_bc4_,_bc3_)}} - function _bcG_(param$0) - {var - _bcH_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31), - _bcI_=caml_call2(Runtime_ocaml_Runtime[98],param,_bcH_); - if(_bcI_) - {var - _bcJ_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31), - _bcK_=caml_call2(Runtime_ocaml_Runtime[101],param,_bcJ_); - if(_bcK_) - {var _bcL_=0 === anciennete_logement[0]?1:0; - if(_bcL_) - switch(type_pret[0]) - {case 0:var _bcM_=0;break; - case 1:var _bcM_=1;break; - case 2:var _bcM_=0;break; - case 3:var _bcM_=0;break; - default:var _bcM_=0} - else - var _bcM_=_bcL_} - else - var _bcM_=_bcK_} - else - var _bcM_=_bcI_; - return caml_call2(Runtime_ocaml_Runtime[29],_xw_,_bcM_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xx_,[0],_bcG_,_bcF_)}, - _a5N_= - function(param$0) - {function _bcf_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$200))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25907) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31264); - var - _bcn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$129), - _bco_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcn_), - _bcp_=caml_call1(Runtime_ocaml_Runtime[41],_bco_), - _bcq_=caml_call1(Runtime_ocaml_Runtime[31],cst_5357), - _bcr_=caml_call2(Runtime_ocaml_Runtime[65],_bcq_,_bcp_), - _bcs_=caml_call1(Runtime_ocaml_Runtime[31],cst_36621); - return caml_call2(Runtime_ocaml_Runtime[67],_bcs_,_bcr_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$201))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23094) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27814); - var - _bct_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$130), - _bcu_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bct_), - _bcv_=caml_call1(Runtime_ocaml_Runtime[41],_bcu_), - _bcw_=caml_call1(Runtime_ocaml_Runtime[31],cst_4720), - _bcx_=caml_call2(Runtime_ocaml_Runtime[65],_bcw_,_bcv_), - _bcy_=caml_call1(Runtime_ocaml_Runtime[31],cst_32534); - return caml_call2(Runtime_ocaml_Runtime[67],_bcy_,_bcx_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$202))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21567) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25874); - var - _bcz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$131), - _bcA_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcz_), - _bcB_=caml_call1(Runtime_ocaml_Runtime[41],_bcA_), - _bcC_=caml_call1(Runtime_ocaml_Runtime[31],cst_4307), - _bcD_=caml_call2(Runtime_ocaml_Runtime[65],_bcC_,_bcB_), - _bcE_=caml_call1(Runtime_ocaml_Runtime[31],cst_30881); - return caml_call2(Runtime_ocaml_Runtime[67],_bcE_,_bcD_)}} - function _bcg_(param$0) - {var - _bch_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31), - _bci_=caml_call2(Runtime_ocaml_Runtime[98],param,_bch_); - if(_bci_) - {var - _bcj_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31), - _bck_=caml_call2(Runtime_ocaml_Runtime[101],param,_bcj_); - if(_bck_) - {var _bcl_=0 === anciennete_logement[0]?0:1; - if(_bcl_) - switch(type_pret[0]) - {case 0:var _bcm_=0;break; - case 1:var _bcm_=1;break; - case 2:var _bcm_=0;break; - case 3:var _bcm_=0;break; - default:var _bcm_=0} - else - var _bcm_=_bcl_} - else - var _bcm_=_bck_} - else - var _bcm_=_bci_; - return caml_call2(Runtime_ocaml_Runtime[29],_xy_,_bcm_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xz_,[0],_bcg_,_bcf_)}, - _a5O_= - function(param$0) - {function _bbR_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$203))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32185) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38827); - var - _bbZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$132), - _bb0_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbZ_), - _bb1_=caml_call1(Runtime_ocaml_Runtime[41],_bb0_), - _bb2_=caml_call1(Runtime_ocaml_Runtime[31],cst_6642), - _bb3_=caml_call2(Runtime_ocaml_Runtime[65],_bb2_,_bb1_), - _bb4_=caml_call1(Runtime_ocaml_Runtime[31],cst_45469); - return caml_call2(Runtime_ocaml_Runtime[67],_bb4_,_bb3_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$204))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28722) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34570$0); - var - _bb5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$133), - _bb6_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bb5_), - _bb7_=caml_call1(Runtime_ocaml_Runtime[41],_bb6_), - _bb8_=caml_call1(Runtime_ocaml_Runtime[31],cst_5848), - _bb9_=caml_call2(Runtime_ocaml_Runtime[65],_bb8_,_bb7_), - _bb__=caml_call1(Runtime_ocaml_Runtime[31],cst_40418); - return caml_call2(Runtime_ocaml_Runtime[67],_bb__,_bb9_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$205))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26813) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32152); - var - _bb$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$134), - _bca_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bb$_), - _bcb_=caml_call1(Runtime_ocaml_Runtime[41],_bca_), - _bcc_=caml_call1(Runtime_ocaml_Runtime[31],cst_5339), - _bcd_=caml_call2(Runtime_ocaml_Runtime[65],_bcc_,_bcb_), - _bce_=caml_call1(Runtime_ocaml_Runtime[31],cst_37491); - return caml_call2(Runtime_ocaml_Runtime[67],_bce_,_bcd_)}} - function _bbS_(param$0) - {var - _bbT_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31), - _bbU_=caml_call2(Runtime_ocaml_Runtime[98],param,_bbT_); - if(_bbU_) - {var - _bbV_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31), - _bbW_=caml_call2(Runtime_ocaml_Runtime[101],param,_bbV_); - if(_bbW_) - {var _bbX_=0 === anciennete_logement[0]?1:0; - if(_bbX_) - switch(type_pret[0]) - {case 0:var _bbY_=0;break; - case 1:var _bbY_=1;break; - case 2:var _bbY_=0;break; - case 3:var _bbY_=0;break; - default:var _bbY_=0} - else - var _bbY_=_bbX_} - else - var _bbY_=_bbW_} - else - var _bbY_=_bbU_; - return caml_call2(Runtime_ocaml_Runtime[29],_xA_,_bbY_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xB_,[0],_bbS_,_bbR_)}, - _a5P_= - function(param$0) - {function _bbr_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$206))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25449) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30711); - var - _bbz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$135), - _bbA_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbz_), - _bbB_=caml_call1(Runtime_ocaml_Runtime[41],_bbA_), - _bbC_=caml_call1(Runtime_ocaml_Runtime[31],cst_5262), - _bbD_=caml_call2(Runtime_ocaml_Runtime[65],_bbC_,_bbB_), - _bbE_=caml_call1(Runtime_ocaml_Runtime[31],cst_35973); - return caml_call2(Runtime_ocaml_Runtime[67],_bbE_,_bbD_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$207))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27323); - var - _bbF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$136), - _bbG_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbF_), - _bbH_=caml_call1(Runtime_ocaml_Runtime[41],_bbG_), - _bbI_=caml_call1(Runtime_ocaml_Runtime[31],cst_4637), - _bbJ_=caml_call2(Runtime_ocaml_Runtime[65],_bbI_,_bbH_), - _bbK_=caml_call1(Runtime_ocaml_Runtime[31],cst_31960); - return caml_call2(Runtime_ocaml_Runtime[67],_bbK_,_bbJ_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$208))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21186) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25417); - var - _bbL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$137), - _bbM_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbL_), - _bbN_=caml_call1(Runtime_ocaml_Runtime[41],_bbM_), - _bbO_=caml_call1(Runtime_ocaml_Runtime[31],cst_4231), - _bbP_=caml_call2(Runtime_ocaml_Runtime[65],_bbO_,_bbN_), - _bbQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_26948); - return caml_call2(Runtime_ocaml_Runtime[67],_bbQ_,_bbP_)}} - function _bbs_(param$0) - {var - _bbt_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30), - _bbu_=caml_call2(Runtime_ocaml_Runtime[98],param,_bbt_); - if(_bbu_) - {var - _bbv_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31), - _bbw_=caml_call2(Runtime_ocaml_Runtime[101],param,_bbv_); - if(_bbw_) - {var _bbx_=0 === anciennete_logement[0]?0:1; - if(_bbx_) - switch(type_pret[0]) - {case 0:var _bby_=0;break; - case 1:var _bby_=1;break; - case 2:var _bby_=0;break; - case 3:var _bby_=0;break; - default:var _bby_=0} - else - var _bby_=_bbx_} - else - var _bby_=_bbw_} - else - var _bby_=_bbu_; - return caml_call2(Runtime_ocaml_Runtime[29],_xC_,_bby_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xD_,[0],_bbs_,_bbr_)}, - _a5Q_= - function(param$0) - {function _ba3_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$209))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31616) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38141); - var - _ba$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$138), - _bba_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_ba$_), - _bbb_=caml_call1(Runtime_ocaml_Runtime[41],_bba_), - _bbc_=caml_call1(Runtime_ocaml_Runtime[31],cst_6525), - _bbd_=caml_call2(Runtime_ocaml_Runtime[65],_bbc_,_bbb_), - _bbe_=caml_call1(Runtime_ocaml_Runtime[31],cst_44666); - return caml_call2(Runtime_ocaml_Runtime[67],_bbe_,_bbd_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$210))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28214) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33959); - var - _bbf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$139), - _bbg_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbf_), - _bbh_=caml_call1(Runtime_ocaml_Runtime[41],_bbg_), - _bbi_=caml_call1(Runtime_ocaml_Runtime[31],cst_5745), - _bbj_=caml_call2(Runtime_ocaml_Runtime[65],_bbi_,_bbh_), - _bbk_=caml_call1(Runtime_ocaml_Runtime[31],cst_39704); - return caml_call2(Runtime_ocaml_Runtime[67],_bbk_,_bbj_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$211))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26339) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31584); - var - _bbl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$140), - _bbm_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbl_), - _bbn_=caml_call1(Runtime_ocaml_Runtime[41],_bbm_), - _bbo_=caml_call1(Runtime_ocaml_Runtime[31],cst_5245), - _bbp_=caml_call2(Runtime_ocaml_Runtime[65],_bbo_,_bbn_), - _bbq_=caml_call1(Runtime_ocaml_Runtime[31],cst_36829); - return caml_call2(Runtime_ocaml_Runtime[67],_bbq_,_bbp_)}} - function _ba4_(param$0) - {var - _ba5_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30), - _ba6_=caml_call2(Runtime_ocaml_Runtime[98],param,_ba5_); - if(_ba6_) - {var - _ba7_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31), - _ba8_=caml_call2(Runtime_ocaml_Runtime[101],param,_ba7_); - if(_ba8_) - {var _ba9_=0 === anciennete_logement[0]?1:0; - if(_ba9_) - switch(type_pret[0]) - {case 0:var _ba__=0;break; - case 1:var _ba__=1;break; - case 2:var _ba__=0;break; - case 3:var _ba__=0;break; - default:var _ba__=0} - else - var _ba__=_ba9_} - else - var _ba__=_ba8_} - else - var _ba__=_ba6_; - return caml_call2(Runtime_ocaml_Runtime[29],_xE_,_ba__)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xF_,[0],_ba4_,_ba3_)}, - _a5R_= - function(param$0) - {function _baD_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$212))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25147) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30347); - var - _baL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$141), - _baM_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baL_), - _baN_=caml_call1(Runtime_ocaml_Runtime[41],_baM_), - _baO_=caml_call1(Runtime_ocaml_Runtime[31],cst_5200), - _baP_=caml_call2(Runtime_ocaml_Runtime[65],_baO_,_baN_), - _baQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35547); - return caml_call2(Runtime_ocaml_Runtime[67],_baQ_,_baP_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$213))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22417) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26999); - var - _baR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$142), - _baS_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baR_), - _baT_=caml_call1(Runtime_ocaml_Runtime[41],_baS_), - _baU_=caml_call1(Runtime_ocaml_Runtime[31],cst_4582), - _baV_=caml_call2(Runtime_ocaml_Runtime[65],_baU_,_baT_), - _baW_=caml_call1(Runtime_ocaml_Runtime[31],cst_31581); - return caml_call2(Runtime_ocaml_Runtime[67],_baW_,_baV_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$214))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20935) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25116$0); - var - _baX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$143), - _baY_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baX_), - _baZ_=caml_call1(Runtime_ocaml_Runtime[41],_baY_), - _ba0_=caml_call1(Runtime_ocaml_Runtime[31],cst_4181), - _ba1_=caml_call2(Runtime_ocaml_Runtime[65],_ba0_,_baZ_), - _ba2_=caml_call1(Runtime_ocaml_Runtime[31],cst_29297); - return caml_call2(Runtime_ocaml_Runtime[67],_ba2_,_ba1_)}} - function _baE_(param$0) - {var - _baF_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30), - _baG_=caml_call2(Runtime_ocaml_Runtime[98],param,_baF_); - if(_baG_) - {var - _baH_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30), - _baI_=caml_call2(Runtime_ocaml_Runtime[101],param,_baH_); - if(_baI_) - {var _baJ_=0 === anciennete_logement[0]?0:1; - if(_baJ_) - switch(type_pret[0]) - {case 0:var _baK_=0;break; - case 1:var _baK_=1;break; - case 2:var _baK_=0;break; - case 3:var _baK_=0;break; - default:var _baK_=0} - else - var _baK_=_baJ_} - else - var _baK_=_baI_} - else - var _baK_=_baG_; - return caml_call2(Runtime_ocaml_Runtime[29],_xG_,_baK_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xH_,[0],_baE_,_baD_)}, - _a5S_= - function(param$0) - {function _bad_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$215))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31241) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37689); - var - _bal_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$144), - _bam_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bal_), - _ban_=caml_call1(Runtime_ocaml_Runtime[41],_bam_), - _bao_=caml_call1(Runtime_ocaml_Runtime[31],cst_6448), - _bap_=caml_call2(Runtime_ocaml_Runtime[65],_bao_,_ban_), - _baq_=caml_call1(Runtime_ocaml_Runtime[31],cst_44137); - return caml_call2(Runtime_ocaml_Runtime[67],_baq_,_bap_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$216))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27879) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33556); - var - _bar_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$145), - _bas_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bar_), - _bat_=caml_call1(Runtime_ocaml_Runtime[41],_bas_), - _bau_=caml_call1(Runtime_ocaml_Runtime[31],cst_5677), - _bav_=caml_call2(Runtime_ocaml_Runtime[65],_bau_,_bat_), - _baw_=caml_call1(Runtime_ocaml_Runtime[31],cst_39233); - return caml_call2(Runtime_ocaml_Runtime[67],_baw_,_bav_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$217))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26027) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31210); - var - _bax_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$146), - _bay_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bax_), - _baz_=caml_call1(Runtime_ocaml_Runtime[41],_bay_), - _baA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5183), - _baB_=caml_call2(Runtime_ocaml_Runtime[65],_baA_,_baz_), - _baC_=caml_call1(Runtime_ocaml_Runtime[31],cst_36393); - return caml_call2(Runtime_ocaml_Runtime[67],_baC_,_baB_)}} - function _bae_(param$0) - {var - _baf_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30), - _bag_=caml_call2(Runtime_ocaml_Runtime[98],param,_baf_); - if(_bag_) - {var - _bah_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30), - _bai_=caml_call2(Runtime_ocaml_Runtime[101],param,_bah_); - if(_bai_) - {var _baj_=0 === anciennete_logement[0]?1:0; - if(_baj_) - switch(type_pret[0]) - {case 0:var _bak_=0;break; - case 1:var _bak_=1;break; - case 2:var _bak_=0;break; - case 3:var _bak_=0;break; - default:var _bak_=0} - else - var _bak_=_baj_} - else - var _bak_=_bai_} - else - var _bak_=_bag_; - return caml_call2(Runtime_ocaml_Runtime[29],_xI_,_bak_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xJ_,[0],_bae_,_bad_)}, - _a5T_= - function(param$0) - {function _a$P_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$218))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24849) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29987); - var - _a$X_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$147), - _a$Y_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$X_), - _a$Z_=caml_call1(Runtime_ocaml_Runtime[41],_a$Y_), - _a$0_=caml_call1(Runtime_ocaml_Runtime[31],cst_5138), - _a$1_=caml_call2(Runtime_ocaml_Runtime[65],_a$0_,_a$Z_), - _a$2_=caml_call1(Runtime_ocaml_Runtime[31],cst_35125); - return caml_call2(Runtime_ocaml_Runtime[67],_a$2_,_a$1_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$219))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22151) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26679); - var - _a$3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$148), - _a$4_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$3_), - _a$5_=caml_call1(Runtime_ocaml_Runtime[41],_a$4_), - _a$6_=caml_call1(Runtime_ocaml_Runtime[31],cst_4528), - _a$7_=caml_call2(Runtime_ocaml_Runtime[65],_a$6_,_a$5_), - _a$8_=caml_call1(Runtime_ocaml_Runtime[31],cst_31207); - return caml_call2(Runtime_ocaml_Runtime[67],_a$8_,_a$7_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$220))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20687) - :caml_call1(Runtime_ocaml_Runtime[31],cst_24818); - var - _a$9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$149), - _a$__= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$9_), - _a$$_=caml_call1(Runtime_ocaml_Runtime[41],_a$__), - _baa_=caml_call1(Runtime_ocaml_Runtime[31],cst_4131), - _bab_=caml_call2(Runtime_ocaml_Runtime[65],_baa_,_a$$_), - _bac_=caml_call1(Runtime_ocaml_Runtime[31],cst_28949); - return caml_call2(Runtime_ocaml_Runtime[67],_bac_,_bab_)}} - function _a$Q_(param$0) - {var - _a$R_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1), - _a$S_=caml_call2(Runtime_ocaml_Runtime[98],param,_a$R_); - if(_a$S_) - {var - _a$T_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30), - _a$U_=caml_call2(Runtime_ocaml_Runtime[101],param,_a$T_); - if(_a$U_) - {var _a$V_=0 === anciennete_logement[0]?0:1; - if(_a$V_) - switch(type_pret[0]) - {case 0:var _a$W_=0;break; - case 1:var _a$W_=1;break; - case 2:var _a$W_=0;break; - case 3:var _a$W_=0;break; - default:var _a$W_=0} - else - var _a$W_=_a$V_} - else - var _a$W_=_a$U_} - else - var _a$W_=_a$S_; - return caml_call2(Runtime_ocaml_Runtime[29],_xK_,_a$W_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xL_,[0],_a$Q_,_a$P_)}, - _a5U_= - function(param$0) - {function _a$o_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$221))) - var - _a$w_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_163000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_196700); - else - var - _a$x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$150), - _a$y_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$x_), - _a$z_=caml_call1(Runtime_ocaml_Runtime[41],_a$y_), - _a$A_=caml_call1(Runtime_ocaml_Runtime[31],cst_33700), - _a$B_=caml_call2(Runtime_ocaml_Runtime[65],_a$A_,_a$z_), - _a$C_=caml_call1(Runtime_ocaml_Runtime[31],cst_230400), - _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$C_,_a$B_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$222))) - var - _a$w_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_145300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_175000); - else - var - _a$D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$151), - _a$E_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$D_), - _a$F_=caml_call1(Runtime_ocaml_Runtime[41],_a$E_), - _a$G_=caml_call1(Runtime_ocaml_Runtime[31],cst_29700), - _a$H_=caml_call2(Runtime_ocaml_Runtime[65],_a$G_,_a$F_), - _a$I_=caml_call1(Runtime_ocaml_Runtime[31],cst_204700), - _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$I_,_a$H_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$223))) - var - _a$w_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_135700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_162800); - else - var - _a$J_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$152), - _a$K_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$J_), - _a$L_=caml_call1(Runtime_ocaml_Runtime[41],_a$K_), - _a$M_=caml_call1(Runtime_ocaml_Runtime[31],cst_27100), - _a$N_=caml_call2(Runtime_ocaml_Runtime[65],_a$M_,_a$L_), - _a$O_=caml_call1(Runtime_ocaml_Runtime[31],cst_189900), - _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$O_,_a$N_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a$w_,taux_francs_vers_euros)} - function _a$p_(param$0) - {var - _a$q_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1), - _a$r_=caml_call2(Runtime_ocaml_Runtime[98],param,_a$q_); - if(_a$r_) - {var - _a$s_=caml_call3(Runtime_ocaml_Runtime[56],2001,12,31), - _a$t_=caml_call2(Runtime_ocaml_Runtime[101],param,_a$s_); - if(_a$t_) - {var _a$u_=0 === anciennete_logement[0]?0:1; - if(_a$u_) - switch(type_pret[0]) - {case 0:var _a$v_=0;break; - case 1:var _a$v_=1;break; - case 2:var _a$v_=0;break; - case 3:var _a$v_=0;break; - default:var _a$v_=0} - else - var _a$v_=_a$u_} - else - var _a$v_=_a$t_} - else - var _a$v_=_a$r_; - return caml_call2(Runtime_ocaml_Runtime[29],_xM_,_a$v_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xN_,[0],_a$p_,_a$o_)}, - _a5V_= - function(param$0) - {function _a_0_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$224))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30871) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37243); - var - _a_8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$153), - _a_9_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_8_), - _a___=caml_call1(Runtime_ocaml_Runtime[41],_a_9_), - _a_$_=caml_call1(Runtime_ocaml_Runtime[31],cst_6372), - _a$a_=caml_call2(Runtime_ocaml_Runtime[65],_a_$_,_a___), - _a$b_=caml_call1(Runtime_ocaml_Runtime[31],cst_43615); - return caml_call2(Runtime_ocaml_Runtime[67],_a$b_,_a$a_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$225))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27548) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33148); - var - _a$c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$154), - _a$d_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$c_), - _a$e_=caml_call1(Runtime_ocaml_Runtime[41],_a$d_), - _a$f_=caml_call1(Runtime_ocaml_Runtime[31],cst_5610), - _a$g_=caml_call2(Runtime_ocaml_Runtime[65],_a$f_,_a$e_), - _a$h_=caml_call1(Runtime_ocaml_Runtime[31],cst_38768); - return caml_call2(Runtime_ocaml_Runtime[67],_a$h_,_a$g_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$226))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25718) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30840); - var - _a$i_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$155), - _a$j_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$i_), - _a$k_=caml_call1(Runtime_ocaml_Runtime[41],_a$j_), - _a$l_=caml_call1(Runtime_ocaml_Runtime[31],cst_5122), - _a$m_=caml_call2(Runtime_ocaml_Runtime[65],_a$l_,_a$k_), - _a$n_=caml_call1(Runtime_ocaml_Runtime[31],cst_35962); - return caml_call2(Runtime_ocaml_Runtime[67],_a$n_,_a$m_)}} - function _a_1_(param$0) - {var - _a_2_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1), - _a_3_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_2_); - if(_a_3_) - {var - _a_4_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30), - _a_5_=caml_call2(Runtime_ocaml_Runtime[101],param,_a_4_); - if(_a_5_) - {var _a_6_=0 === anciennete_logement[0]?1:0; - if(_a_6_) - switch(type_pret[0]) - {case 0:var _a_7_=0;break; - case 1:var _a_7_=1;break; - case 2:var _a_7_=0;break; - case 3:var _a_7_=0;break; - default:var _a_7_=0} - else - var _a_7_=_a_6_} - else - var _a_7_=_a_5_} - else - var _a_7_=_a_3_; - return caml_call2(Runtime_ocaml_Runtime[29],_xO_,_a_7_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xP_,[0],_a_1_,_a_0_)}, - _a5W_= - function(param$0) - {function _a_z_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$227))) - var - _a_H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_202500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_244300); - else - var - _a_I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$156), - _a_J_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_I_), - _a_K_=caml_call1(Runtime_ocaml_Runtime[41],_a_J_), - _a_L_=caml_call1(Runtime_ocaml_Runtime[31],cst_41800), - _a_M_=caml_call2(Runtime_ocaml_Runtime[65],_a_L_,_a_K_), - _a_N_=caml_call1(Runtime_ocaml_Runtime[31],cst_286100), - _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_N_,_a_M_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$228))) - var - _a_H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_180700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_217500); - else - var - _a_O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$157), - _a_P_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_O_), - _a_Q_=caml_call1(Runtime_ocaml_Runtime[41],_a_P_), - _a_R_=caml_call1(Runtime_ocaml_Runtime[31],cst_36800), - _a_S_=caml_call2(Runtime_ocaml_Runtime[65],_a_R_,_a_Q_), - _a_T_=caml_call1(Runtime_ocaml_Runtime[31],cst_254300), - _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_T_,_a_S_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$229))) - var - _a_H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_168700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202300); - else - var - _a_U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$158), - _a_V_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_U_), - _a_W_=caml_call1(Runtime_ocaml_Runtime[41],_a_V_), - _a_X_=caml_call1(Runtime_ocaml_Runtime[31],cst_33600), - _a_Y_=caml_call2(Runtime_ocaml_Runtime[65],_a_X_,_a_W_), - _a_Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_235900), - _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_Z_,_a_Y_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a_H_,taux_francs_vers_euros)} - function _a_A_(param$0) - {var - _a_B_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1), - _a_C_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_B_); - if(_a_C_) - {var - _a_D_=caml_call3(Runtime_ocaml_Runtime[56],2001,12,31), - _a_E_=caml_call2(Runtime_ocaml_Runtime[101],param,_a_D_); - if(_a_E_) - {var _a_F_=0 === anciennete_logement[0]?1:0; - if(_a_F_) - switch(type_pret[0]) - {case 0:var _a_G_=0;break; - case 1:var _a_G_=1;break; - case 2:var _a_G_=0;break; - case 3:var _a_G_=0;break; - default:var _a_G_=0} - else - var _a_G_=_a_F_} - else - var _a_G_=_a_E_} - else - var _a_G_=_a_C_; - return caml_call2(Runtime_ocaml_Runtime[29],_xQ_,_a_G_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xR_,[0],_a_A_,_a_z_)}, - _a5X_= - function(param$0) - {function _a9__(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$230))) - var - _a_g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_161100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_194400); - else - var - _a_h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$159), - _a_i_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_h_), - _a_j_=caml_call1(Runtime_ocaml_Runtime[41],_a_i_), - _a_k_=caml_call1(Runtime_ocaml_Runtime[31],cst_33300), - _a_l_=caml_call2(Runtime_ocaml_Runtime[65],_a_k_,_a_j_), - _a_m_=caml_call1(Runtime_ocaml_Runtime[31],cst_227700), - _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_m_,_a_l_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$231))) - var - _a_g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_143600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_172900); - else - var - _a_n_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$160), - _a_o_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_n_), - _a_p_=caml_call1(Runtime_ocaml_Runtime[41],_a_o_), - _a_q_=caml_call1(Runtime_ocaml_Runtime[31],cst_29300), - _a_r_=caml_call2(Runtime_ocaml_Runtime[65],_a_q_,_a_p_), - _a_s_=caml_call1(Runtime_ocaml_Runtime[31],cst_202200), - _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_s_,_a_r_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$232))) - var - _a_g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_134100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_160900); - else - var - _a_t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$161), - _a_u_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_t_), - _a_v_=caml_call1(Runtime_ocaml_Runtime[41],_a_u_), - _a_w_=caml_call1(Runtime_ocaml_Runtime[31],cst_26800), - _a_x_=caml_call2(Runtime_ocaml_Runtime[65],_a_w_,_a_v_), - _a_y_=caml_call1(Runtime_ocaml_Runtime[31],cst_187700), - _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_y_,_a_x_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a_g_,taux_francs_vers_euros)} - function _a9$_(param$0) - {var - _a_a_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30), - _a_b_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_a_); - if(_a_b_) - {var - _a_c_=caml_call3(Runtime_ocaml_Runtime[56],2001,6,30), - _a_d_=caml_call2(Runtime_ocaml_Runtime[99],param,_a_c_); - if(_a_d_) - {var _a_e_=0 === anciennete_logement[0]?0:1; - if(_a_e_) - switch(type_pret[0]) - {case 0:var _a_f_=0;break; - case 1:var _a_f_=1;break; - case 2:var _a_f_=0;break; - case 3:var _a_f_=0;break; - default:var _a_f_=0} - else - var _a_f_=_a_e_} - else - var _a_f_=_a_d_} - else - var _a_f_=_a_b_; - return caml_call2(Runtime_ocaml_Runtime[29],_xS_,_a_f_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xT_,[0],_a9$_,_a9__)}, - _a5Y_= - function(param$0) - {function _a9J_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$233))) - var - _a9R_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_200100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_141400); - else - var - _a9S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$162), - _a9T_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9S_), - _a9U_=caml_call1(Runtime_ocaml_Runtime[41],_a9T_), - _a9V_=caml_call1(Runtime_ocaml_Runtime[31],cst_41300), - _a9W_=caml_call2(Runtime_ocaml_Runtime[65],_a9V_,_a9U_), - _a9X_=caml_call1(Runtime_ocaml_Runtime[31],cst_282700), - _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a9X_,_a9W_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$234))) - var - _a9R_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_178600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_215000); - else - var - _a9Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$163), - _a9Z_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9Y_), - _a90_=caml_call1(Runtime_ocaml_Runtime[41],_a9Z_), - _a91_=caml_call1(Runtime_ocaml_Runtime[31],cst_36400), - _a92_=caml_call2(Runtime_ocaml_Runtime[65],_a91_,_a90_), - _a93_=caml_call1(Runtime_ocaml_Runtime[31],cst_251400), - _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a93_,_a92_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$235))) - var - _a9R_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_166700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_199900); - else - var - _a94_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$164), - _a95_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a94_), - _a96_=caml_call1(Runtime_ocaml_Runtime[41],_a95_), - _a97_=caml_call1(Runtime_ocaml_Runtime[31],cst_33200), - _a98_=caml_call2(Runtime_ocaml_Runtime[65],_a97_,_a96_), - _a99_=caml_call1(Runtime_ocaml_Runtime[31],cst_233100), - _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a99_,_a98_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a9R_,taux_francs_vers_euros)} - function _a9K_(param$0) - {var - _a9L_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30), - _a9M_=caml_call2(Runtime_ocaml_Runtime[98],param,_a9L_); - if(_a9M_) - {var - _a9N_=caml_call3(Runtime_ocaml_Runtime[56],2001,6,30), - _a9O_=caml_call2(Runtime_ocaml_Runtime[99],param,_a9N_); - if(_a9O_) - {var _a9P_=0 === anciennete_logement[0]?1:0; - if(_a9P_) - switch(type_pret[0]) - {case 0:var _a9Q_=0;break; - case 1:var _a9Q_=1;break; - case 2:var _a9Q_=0;break; - case 3:var _a9Q_=0;break; - default:var _a9Q_=0} - else - var _a9Q_=_a9P_} - else - var _a9Q_=_a9O_} - else - var _a9Q_=_a9M_; - return caml_call2(Runtime_ocaml_Runtime[29],_xU_,_a9Q_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xV_,[0],_a9K_,_a9J_)}, - _a5Z_= - function(param$0) - {function _a9i_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$236))) - var - _a9q_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_159500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_192500); - else - var - _a9r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$165), - _a9s_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9r_), - _a9t_=caml_call1(Runtime_ocaml_Runtime[41],_a9s_), - _a9u_=caml_call1(Runtime_ocaml_Runtime[31],cst_33000), - _a9v_=caml_call2(Runtime_ocaml_Runtime[65],_a9u_,_a9t_), - _a9w_=caml_call1(Runtime_ocaml_Runtime[31],cst_225500), - _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9w_,_a9v_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$237))) - var - _a9q_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_142200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_171200); - else - var - _a9x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$166), - _a9y_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9x_), - _a9z_=caml_call1(Runtime_ocaml_Runtime[41],_a9y_), - _a9A_=caml_call1(Runtime_ocaml_Runtime[31],cst_29000), - _a9B_=caml_call2(Runtime_ocaml_Runtime[65],_a9A_,_a9z_), - _a9C_=caml_call1(Runtime_ocaml_Runtime[31],cst_200200), - _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9C_,_a9B_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$238))) - var - _a9q_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_159300); - else - var - _a9D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$167), - _a9E_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9D_), - _a9F_=caml_call1(Runtime_ocaml_Runtime[41],_a9E_), - _a9G_=caml_call1(Runtime_ocaml_Runtime[31],cst_26500), - _a9H_=caml_call2(Runtime_ocaml_Runtime[65],_a9G_,_a9F_), - _a9I_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800), - _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9I_,_a9H_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a9q_,taux_francs_vers_euros)} - function _a9j_(param$0) - {var - _a9k_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a9l_=caml_call2(Runtime_ocaml_Runtime[98],param,_a9k_); - if(_a9l_) - {var - _a9m_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30), - _a9n_=caml_call2(Runtime_ocaml_Runtime[101],param,_a9m_); - if(_a9n_) - {var _a9o_=0 === anciennete_logement[0]?0:1; - if(_a9o_) - switch(type_pret[0]) - {case 0:var _a9p_=0;break; - case 1:var _a9p_=1;break; - case 2:var _a9p_=0;break; - case 3:var _a9p_=0;break; - default:var _a9p_=0} - else - var _a9p_=_a9o_} - else - var _a9p_=_a9n_} - else - var _a9p_=_a9l_; - return caml_call2(Runtime_ocaml_Runtime[29],_xW_,_a9p_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xX_,[0],_a9j_,_a9i_)}, - _a50_= - function(param$0) - {function _a8T_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$239))) - var - _a81_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_198100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_239000); - else - var - _a82_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$168), - _a83_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a82_), - _a84_=caml_call1(Runtime_ocaml_Runtime[41],_a83_), - _a85_=caml_call1(Runtime_ocaml_Runtime[31],cst_40900), - _a86_=caml_call2(Runtime_ocaml_Runtime[65],_a85_,_a84_), - _a87_=caml_call1(Runtime_ocaml_Runtime[31],cst_279900), - _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a87_,_a86_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$240))) - var - _a81_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_176800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_212800); - else - var - _a88_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$169), - _a89_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a88_), - _a8__=caml_call1(Runtime_ocaml_Runtime[41],_a89_), - _a8$_=caml_call1(Runtime_ocaml_Runtime[31],cst_36000), - _a9a_=caml_call2(Runtime_ocaml_Runtime[65],_a8$_,_a8__), - _a9b_=caml_call1(Runtime_ocaml_Runtime[31],cst_248800), - _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a9b_,_a9a_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$241))) - var - _a81_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_165000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_197900); - else - var - _a9c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$170), - _a9d_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9c_), - _a9e_=caml_call1(Runtime_ocaml_Runtime[41],_a9d_), - _a9f_=caml_call1(Runtime_ocaml_Runtime[31],cst_32900), - _a9g_=caml_call2(Runtime_ocaml_Runtime[65],_a9f_,_a9e_), - _a9h_=caml_call1(Runtime_ocaml_Runtime[31],cst_230800), - _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a9h_,_a9g_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a81_,taux_francs_vers_euros)} - function _a8U_(param$0) - {var - _a8V_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a8W_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8V_); - if(_a8W_) - {var - _a8X_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30), - _a8Y_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8X_); - if(_a8Y_) - {var _a8Z_=0 === anciennete_logement[0]?1:0; - if(_a8Z_) - switch(type_pret[0]) - {case 0:var _a80_=0;break; - case 1:var _a80_=1;break; - case 2:var _a80_=0;break; - case 3:var _a80_=0;break; - default:var _a80_=0} - else - var _a80_=_a8Z_} - else - var _a80_=_a8Y_} - else - var _a80_=_a8W_; - return caml_call2(Runtime_ocaml_Runtime[29],_xY_,_a80_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_xZ_,[0],_a8U_,_a8T_)}, - _a51_= - function(param$0) - {function _a8D_(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$242))) - var - _a8M_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_86900) - :caml_call1(Runtime_ocaml_Runtime[31],cst_97100); - else - var - _a8N_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$171), - _a8O_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8N_), - _a8P_=caml_call1(Runtime_ocaml_Runtime[41],_a8O_), - _a8Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_10200), - _a8R_=caml_call2(Runtime_ocaml_Runtime[65],_a8Q_,_a8P_), - _a8S_=caml_call1(Runtime_ocaml_Runtime[31],cst_107300), - _a8M_=caml_call2(Runtime_ocaml_Runtime[67],_a8S_,_a8R_); - return caml_call2 - (Runtime_ocaml_Runtime[65],_a8M_,taux_francs_vers_euros)} - function _a8E_(param$0) - {var - _a8F_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30), - _a8G_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8F_); - if(_a8G_) - {var - _a8H_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a8I_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8H_); - if(_a8I_) - {if(0 === anciennete_logement[0]) - var _a8J_=0; - else - var - ameliore_par_occupant=anciennete_logement[1], - _a8L_=0 === ameliore_par_occupant[0]?1:0, - _a8J_=_a8L_; - if(_a8J_) - switch(type_pret[0]) - {case 0:var _a8K_=0;break; - case 1:var _a8K_=1;break; - case 2:var _a8K_=0;break; - case 3:var _a8K_=0;break; - default:var _a8K_=0} - else - var _a8K_=_a8J_} - else - var _a8K_=_a8I_} - else - var _a8K_=_a8G_; - return caml_call2(Runtime_ocaml_Runtime[29],_x0_,_a8K_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x1_,[0],_a8E_,_a8D_)}, - _a52_= - function(param$0) - {function _a8b_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$243))) - var - _a8k_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$0); - else - var - _a8l_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$172), - _a8m_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8l_), - _a8n_=caml_call1(Runtime_ocaml_Runtime[41],_a8m_), - _a8o_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700), - _a8p_=caml_call2(Runtime_ocaml_Runtime[65],_a8o_,_a8n_), - _a8q_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200), - _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8q_,_a8p_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$244))) - var - _a8k_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_223900); - else - var - _a8r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$173), - _a8s_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8r_), - _a8t_=caml_call1(Runtime_ocaml_Runtime[41],_a8s_), - _a8u_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900), - _a8v_=caml_call2(Runtime_ocaml_Runtime[65],_a8u_,_a8t_), - _a8w_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800), - _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8w_,_a8v_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$245))) - var - _a8k_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_208200); - else - var - _a8x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$174), - _a8y_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8x_), - _a8z_=caml_call1(Runtime_ocaml_Runtime[41],_a8y_), - _a8A_=caml_call1(Runtime_ocaml_Runtime[31],cst_34600), - _a8B_=caml_call2(Runtime_ocaml_Runtime[65],_a8A_,_a8z_), - _a8C_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800), - _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8C_,_a8B_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a8k_,taux_francs_vers_euros)} - function _a8c_(param$0) - {var - _a8d_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30), - _a8e_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8d_); - if(_a8e_) - {var - _a8f_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a8g_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8f_); - if(_a8g_) - {if(0 === anciennete_logement[0]) - var _a8h_=0; - else - var - ameliore_par_occupant=anciennete_logement[1], - _a8j_=0 === ameliore_par_occupant[0]?0:1, - _a8h_=_a8j_; - if(_a8h_) - switch(type_pret[0]) - {case 0:var _a8i_=0;break; - case 1:var _a8i_=1;break; - case 2:var _a8i_=0;break; - case 3:var _a8i_=0;break; - default:var _a8i_=0} - else - var _a8i_=_a8h_} - else - var _a8i_=_a8g_} - else - var _a8i_=_a8e_; - return caml_call2(Runtime_ocaml_Runtime[29],_x2_,_a8i_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x3_,[0],_a8c_,_a8b_)}, - _a53_= - function(param$0) - {function _a7M_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$246))) - var - _a7U_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_251500); - else - var - _a7V_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$175), - _a7W_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7V_), - _a7X_=caml_call1(Runtime_ocaml_Runtime[41],_a7W_), - _a7Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000), - _a7Z_=caml_call2(Runtime_ocaml_Runtime[65],_a7Y_,_a7X_), - _a70_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500), - _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a70_,_a7Z_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$247))) - var - _a7U_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$0); - else - var - _a71_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$176), - _a72_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a71_), - _a73_=caml_call1(Runtime_ocaml_Runtime[41],_a72_), - _a74_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$0), - _a75_=caml_call2(Runtime_ocaml_Runtime[65],_a74_,_a73_), - _a76_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$0), - _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a76_,_a75_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$248))) - var - _a7U_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$0); - else - var - _a77_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$177), - _a78_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a77_), - _a79_=caml_call1(Runtime_ocaml_Runtime[41],_a78_), - _a7__=caml_call1(Runtime_ocaml_Runtime[31],cst_34600$0), - _a7$_=caml_call2(Runtime_ocaml_Runtime[65],_a7__,_a79_), - _a8a_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$0), - _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a8a_,_a7$_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a7U_,taux_francs_vers_euros)} - function _a7N_(param$0) - {var - _a7O_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30), - _a7P_=caml_call2(Runtime_ocaml_Runtime[98],param,_a7O_); - if(_a7P_) - {var - _a7Q_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a7R_=caml_call2(Runtime_ocaml_Runtime[101],param,_a7Q_); - if(_a7R_) - {var _a7S_=0 === anciennete_logement[0]?1:0; - if(_a7S_) - switch(type_pret[0]) - {case 0:var _a7T_=0;break; - case 1:var _a7T_=1;break; - case 2:var _a7T_=0;break; - case 3:var _a7T_=0;break; - default:var _a7T_=0} - else - var _a7T_=_a7S_} - else - var _a7T_=_a7R_} - else - var _a7T_=_a7P_; - return caml_call2(Runtime_ocaml_Runtime[29],_x4_,_a7T_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x5_,[0],_a7N_,_a7M_)}, - _a54_= - function(param$0) - {function _a7n_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$249))) - var - _a7t_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_148100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_178700); - else - var - _a7u_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$178), - _a7v_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7u_), - _a7w_=caml_call1(Runtime_ocaml_Runtime[41],_a7v_), - _a7x_=caml_call1(Runtime_ocaml_Runtime[31],cst_30600), - _a7y_=caml_call2(Runtime_ocaml_Runtime[65],_a7x_,_a7w_), - _a7z_=caml_call1(Runtime_ocaml_Runtime[31],cst_209300), - _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7z_,_a7y_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$250))) - var - _a7t_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_158900); - else - var - _a7A_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$179), - _a7B_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7A_), - _a7C_=caml_call1(Runtime_ocaml_Runtime[41],_a7B_), - _a7D_=caml_call1(Runtime_ocaml_Runtime[31],cst_26900), - _a7E_=caml_call2(Runtime_ocaml_Runtime[65],_a7D_,_a7C_), - _a7F_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800$0), - _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7F_,_a7E_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$251))) - var - _a7t_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_123300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_147900); - else - var - _a7G_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$180), - _a7H_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7G_), - _a7I_=caml_call1(Runtime_ocaml_Runtime[41],_a7H_), - _a7J_=caml_call1(Runtime_ocaml_Runtime[31],cst_24600), - _a7K_=caml_call2(Runtime_ocaml_Runtime[65],_a7J_,_a7I_), - _a7L_=caml_call1(Runtime_ocaml_Runtime[31],cst_172500), - _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7L_,_a7K_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a7t_,taux_francs_vers_euros)} - function _a7o_(param$0) - {var - _a7p_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a7q_=caml_call2(Runtime_ocaml_Runtime[98],param,_a7p_); - if(_a7q_) - {var _a7r_=0 === anciennete_logement[0]?0:1; - if(_a7r_) - switch(type_pret[0]) - {case 0:var _a7s_=1;break; - case 1:var _a7s_=0;break; - case 2:var _a7s_=0;break; - case 3:var _a7s_=0;break; - default:var _a7s_=0} - else - var _a7s_=_a7r_} - else - var _a7s_=_a7q_; - return caml_call2(Runtime_ocaml_Runtime[29],_x6_,_a7s_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x7_,[0],_a7o_,_a7n_)}, - _a55_= - function(param$0) - {function _a60_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$252))) - var - _a66_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_184000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_220000); - else - var - _a67_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$181), - _a68_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a67_), - _a69_=caml_call1(Runtime_ocaml_Runtime[41],_a68_), - _a6__=caml_call1(Runtime_ocaml_Runtime[31],cst_38000), - _a6$_=caml_call2(Runtime_ocaml_Runtime[65],_a6__,_a69_), - _a7a_=caml_call1(Runtime_ocaml_Runtime[31],cst_260000), - _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7a_,_a6$_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$253))) - var - _a66_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_164200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_197700); - else - var - _a7b_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$182), - _a7c_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7b_), - _a7d_=caml_call1(Runtime_ocaml_Runtime[41],_a7c_), - _a7e_=caml_call1(Runtime_ocaml_Runtime[31],cst_33500), - _a7f_=caml_call2(Runtime_ocaml_Runtime[65],_a7e_,_a7d_), - _a7g_=caml_call1(Runtime_ocaml_Runtime[31],cst_231200), - _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7g_,_a7f_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$254))) - var - _a66_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_153200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_183700); - else - var - _a7h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$183), - _a7i_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7h_), - _a7j_=caml_call1(Runtime_ocaml_Runtime[41],_a7i_), - _a7k_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$0), - _a7l_=caml_call2(Runtime_ocaml_Runtime[65],_a7k_,_a7j_), - _a7m_=caml_call1(Runtime_ocaml_Runtime[31],cst_214200), - _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7m_,_a7l_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a66_,taux_francs_vers_euros)} - function _a61_(param$0) - {var - _a62_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a63_=caml_call2(Runtime_ocaml_Runtime[98],param,_a62_); - if(_a63_) - {var _a64_=0 === anciennete_logement[0]?1:0; - if(_a64_) - switch(type_pret[0]) - {case 0:var _a65_=1;break; - case 1:var _a65_=0;break; - case 2:var _a65_=0;break; - case 3:var _a65_=0;break; - default:var _a65_=0} - else - var _a65_=_a64_} - else - var _a65_=_a63_; - return caml_call2(Runtime_ocaml_Runtime[29],_x8_,_a65_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x9_,[0],_a61_,_a60_)}, - _a56_= - function(param$0) - {function _a6z_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$255))) - var - _a6H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$1); - else - var - _a6I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$184), - _a6J_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6I_), - _a6K_=caml_call1(Runtime_ocaml_Runtime[41],_a6J_), - _a6L_=caml_call1(Runtime_ocaml_Runtime[31],cst_37400), - _a6M_=caml_call2(Runtime_ocaml_Runtime[65],_a6L_,_a6K_), - _a6N_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200$0), - _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6N_,_a6M_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$256))) - var - _a6H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_146900) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180100); - else - var - _a6O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$185), - _a6P_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6O_), - _a6Q_=caml_call1(Runtime_ocaml_Runtime[41],_a6P_), - _a6R_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$1), - _a6S_=caml_call2(Runtime_ocaml_Runtime[65],_a6R_,_a6Q_), - _a6T_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600), - _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6T_,_a6S_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$257))) - var - _a6H_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_167600); - else - var - _a6U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$186), - _a6V_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6U_), - _a6W_=caml_call1(Runtime_ocaml_Runtime[41],_a6V_), - _a6X_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900), - _a6Y_=caml_call2(Runtime_ocaml_Runtime[65],_a6X_,_a6W_), - _a6Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500), - _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6Z_,_a6Y_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a6H_,taux_francs_vers_euros)} - function _a6A_(param$0) - {var - _a6B_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30), - _a6C_=caml_call2(Runtime_ocaml_Runtime[98],param,_a6B_); - if(_a6C_) - {var - _a6D_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a6E_=caml_call2(Runtime_ocaml_Runtime[101],param,_a6D_); - if(_a6E_) - {var _a6F_=0 === anciennete_logement[0]?0:1; - if(_a6F_) - switch(type_pret[0]) - {case 0:var _a6G_=1;break; - case 1:var _a6G_=0;break; - case 2:var _a6G_=0;break; - case 3:var _a6G_=0;break; - default:var _a6G_=0} - else - var _a6G_=_a6F_} - else - var _a6G_=_a6E_} - else - var _a6G_=_a6C_; - return caml_call2(Runtime_ocaml_Runtime[29],_x__,_a6G_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_x$_,[0],_a6A_,_a6z_)}, - _a57_= - [0, - function(param$0) - {function _a5__(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$258))) - var - _a6g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_251500$0); - else - var - _a6h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$187), - _a6i_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6h_), - _a6j_=caml_call1(Runtime_ocaml_Runtime[41],_a6i_), - _a6k_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000$0), - _a6l_=caml_call2(Runtime_ocaml_Runtime[65],_a6k_,_a6j_), - _a6m_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500$0), - _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6m_,_a6l_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$259))) - var - _a6g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$1); - else - var - _a6n_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$188), - _a6o_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6n_), - _a6p_=caml_call1(Runtime_ocaml_Runtime[41],_a6o_), - _a6q_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$1), - _a6r_=caml_call2(Runtime_ocaml_Runtime[65],_a6q_,_a6p_), - _a6s_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$1), - _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6s_,_a6r_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$260))) - var - _a6g_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$1); - else - var - _a6t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$189), - _a6u_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6t_), - _a6v_=caml_call1(Runtime_ocaml_Runtime[41],_a6u_), - _a6w_=caml_call1(Runtime_ocaml_Runtime[31],cst_35600), - _a6x_=caml_call2(Runtime_ocaml_Runtime[65],_a6w_,_a6v_), - _a6y_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$1), - _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6y_,_a6x_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_a6g_,taux_francs_vers_euros)} - function _a5$_(param$0) - {var - _a6a_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30), - _a6b_=caml_call2(Runtime_ocaml_Runtime[98],param,_a6a_); - if(_a6b_) - {var - _a6c_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27), - _a6d_=caml_call2(Runtime_ocaml_Runtime[101],param,_a6c_); - if(_a6d_) - {var _a6e_=0 === anciennete_logement[0]?1:0; - if(_a6e_) - switch(type_pret[0]) - {case 0:var _a6f_=1;break; - case 1:var _a6f_=0;break; - case 2:var _a6f_=0;break; - case 3:var _a6f_=0;break; - default:var _a6f_=0} - else - var _a6f_=_a6e_} - else - var _a6f_=_a6d_} - else - var _a6f_=_a6b_; - return caml_call2(Runtime_ocaml_Runtime[29],_ya_,_a6f_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_yb_,[0],_a5$_,_a5__)}, - _a56_, - _a55_, - _a54_, - _a53_, - _a52_, - _a51_, - _a50_, - _a5Z_, - _a5Y_, - _a5X_, - _a5W_, - _a5V_, - _a5U_, - _a5T_, - _a5S_, - _a5R_, - _a5Q_, - _a5P_, - _a5O_, - _a5N_, - _a5M_, - _a5L_, - _a5K_, - _a5J_, - _a5I_, - _a5H_, - _a5G_, - _a5F_, - _a5E_, - _a5D_, - _a5C_, - _a5B_, - _a5A_, - _a5z_, - _a5y_, - _a5x_, - _a5w_, - _a5v_, - _a5u_, - _a5t_, - _a5s_, - _a5r_], - _a58_=caml_call4(Runtime_ocaml_Runtime[62],_yc_,_a57_,_a5q_,_a5p_); - return _a58_} - catch(_a59_) - {_a59_ = caml_wrap_exception(_a59_); - if(_a59_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wR_]; - throw _a59_}} - var - calcul_plafond_mensualite_d832= - caml_call3 - (Runtime_ocaml_Runtime[28],_yd_,Runtime_ocaml_Runtime[10],_a1u_); - try - {var - _a1v_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _a1w_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yf_,1)}, - _a1x_=caml_call4(Runtime_ocaml_Runtime[62],_yg_,[0],_a1w_,_a1v_)} - catch(_a5o_) - {_a5o_ = caml_wrap_exception(_a5o_); - if(_a5o_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ye_]; - throw _a5o_} - var - n_nombre_parts_d832_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_yh_,Runtime_ocaml_Runtime[15],_a1x_); - function _a1y_(param) - {try - {var - _a5e_= - function(param$0) - {return caml_call2 - (Runtime_ocaml_Runtime[68],mensualite_principale,param)}, - _a5f_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_yj_,1)}, - _a5g_= - [0, - function(param$0) - {function _a5j_(param$0) - {var - _a5n_= - caml_call2 - (Runtime_ocaml_Runtime[67], - mensualite_principale, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[68],_a5n_,param)} - function _a5k_(param) - {var - _a5l_=caml_call3(Runtime_ocaml_Runtime[56],1999,6,30), - _a5m_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_a5l_); - return caml_call2(Runtime_ocaml_Runtime[29],_yk_,_a5m_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_yl_,[0],_a5k_,_a5j_)}], - _a5h_=caml_call4(Runtime_ocaml_Runtime[62],_ym_,_a5g_,_a5f_,_a5e_); - return _a5h_} - catch(_a5i_) - {_a5i_ = caml_wrap_exception(_a5i_); - if(_a5i_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yi_]; - throw _a5i_}} - var - depense_nette_minimale_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_yn_,Runtime_ocaml_Runtime[10],_a1y_); - try - {var - _a1z_= - function(param) - {var - _a5b_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yp_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _a5c_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yq_, - calcul_plafond_mensualite_d832), - _a5b_), - _a5d_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yr_, - Runtime_ocaml_Runtime[13], - _a5c_); - return caml_call2(Runtime_ocaml_Runtime[27],_ys_,_a5d_)}, - _a1A_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yt_,1)}, - _a1B_= - [0, - function(param) - {function _a4X_(param) - {var - _a4Z_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yu_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _a40_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yv_, - calcul_plafond_mensualite_d832), - _a4Z_), - _a41_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yw_, - Runtime_ocaml_Runtime[13], - _a40_), - _a42_=caml_call2(Runtime_ocaml_Runtime[27],_yx_,_a41_), - _a43_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yy_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _a44_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yz_, - calcul_plafond_mensualite_d832), - _a43_), - _a45_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yA_, - Runtime_ocaml_Runtime[13], - _a44_), - _a46_=caml_call2(Runtime_ocaml_Runtime[27],_yB_,_a45_); - if(caml_call2(Runtime_ocaml_Runtime[73],_a46_,_a42_)) - {var - _a47_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yC_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _a48_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yD_, - calcul_plafond_mensualite_d832), - _a47_), - _a49_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yE_, - Runtime_ocaml_Runtime[13], - _a48_); - return caml_call2(Runtime_ocaml_Runtime[27],_yF_,_a49_)} - var - _a4__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yG_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _a4$_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yH_, - calcul_plafond_mensualite_d832), - _a4__), - _a5a_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yI_, - Runtime_ocaml_Runtime[13], - _a4$_); - return caml_call2(Runtime_ocaml_Runtime[27],_yJ_,_a5a_)} - function _a4Y_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _yK_, - local_habite_premiere_fois_ben)} - return caml_call4(Runtime_ocaml_Runtime[62],_yL_,[0],_a4Y_,_a4X_)}], - _a1C_=caml_call4(Runtime_ocaml_Runtime[62],_yM_,_a1B_,_a1A_,_a1z_)} - catch(_a4W_) - {_a4W_ = caml_wrap_exception(_a4W_); - if(_a4W_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yo_]; - throw _a4W_} - var - plafond_mensualite_d832_10_3_b= - caml_call3 - (Runtime_ocaml_Runtime[28],_yN_,Runtime_ocaml_Runtime[13],_a1C_); - try - {var - _a1D_=function(param){return ressources_menage_arrondies}, - _a1E_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yP_,1)}, - _a1F_=caml_call4(Runtime_ocaml_Runtime[62],_yQ_,[0],_a1E_,_a1D_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_yR_,Runtime_ocaml_Runtime[13],_a1F_)} - catch(_a4V_) - {_a4V_ = caml_wrap_exception(_a4V_); - if(_a4V_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yO_]; - throw _a4V_} - try - {var - _a1G_=function(param){return 0}, - _a1H_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yT_,1)}, - _a1I_=caml_call4(Runtime_ocaml_Runtime[62],_yU_,[0],_a1H_,_a1G_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_yV_,Runtime_ocaml_Runtime[12],_a1I_)} - catch(_a4U_) - {_a4U_ = caml_wrap_exception(_a4U_); - if(_a4U_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yS_]; - throw _a4U_} - try - {var - _a1J_=function(param){return n_nombre_parts_d832_11}, - _a1K_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yX_,1)}, - _a1L_=caml_call4(Runtime_ocaml_Runtime[62],_yY_,[0],_a1K_,_a1J_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_yZ_,Runtime_ocaml_Runtime[15],_a1L_)} - catch(_a4T_) - {_a4T_ = caml_wrap_exception(_a4T_); - if(_a4T_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yW_]; - throw _a4T_} - var - _a1M_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_y0_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_y1_,_a1M_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _a1N_= - function(param) - {var - _a4Q_= - caml_call2 - (Runtime_ocaml_Runtime[65], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_11), - _a4R_= - caml_call2 - (Runtime_ocaml_Runtime[66],ressources_menage_arrondies,_a4Q_), - _a4S_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$2); - return caml_call2(Runtime_ocaml_Runtime[86],_a4S_,_a4R_)}, - _a1O_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_y3_,1)}, - _a1P_=caml_call4(Runtime_ocaml_Runtime[62],_y4_,[0],_a1O_,_a1N_)} - catch(_a4P_) - {_a4P_ = caml_wrap_exception(_a4P_); - if(_a4P_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_y2_]; - throw _a4P_} - var - coefficient_prise_en_charge_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_y5_,Runtime_ocaml_Runtime[15],_a1P_); - function _a1Q_(param) - {try - {var - _a4B_= - function(param$0) - {var - _a4F_= - caml_call2 - (Runtime_ocaml_Runtime[65], - ressources_menage_avec_d832_18, - coefficient_multiplicateur_d83$1), - _a4G_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y7_, - Runtime_ocaml_Runtime[13], - param), - _a4H_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _y8_, - depense_nette_minimale_d832_10), - _a4G_), - _a4I_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y9_, - Runtime_ocaml_Runtime[13], - _a4H_), - _a4J_=caml_call2(Runtime_ocaml_Runtime[27],_y__,_a4I_); - if(caml_call2(Runtime_ocaml_Runtime[71],_a4J_,_a4F_)) - {var - _a4K_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y$_, - Runtime_ocaml_Runtime[13], - param), - _a4L_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _za_, - depense_nette_minimale_d832_10), - _a4K_), - _a4M_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zb_, - Runtime_ocaml_Runtime[13], - _a4L_), - _a4N_=caml_call2(Runtime_ocaml_Runtime[27],_zc_,_a4M_), - _a4O_= - caml_call2 - (Runtime_ocaml_Runtime[65], - ressources_menage_avec_d832_18, - coefficient_multiplicateur_d83$1); - return caml_call2(Runtime_ocaml_Runtime[68],_a4O_,_a4N_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$261)}, - _a4C_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_zd_,1)}, - _a4D_=caml_call4(Runtime_ocaml_Runtime[62],_ze_,[0],_a4C_,_a4B_); - return _a4D_} - catch(_a4E_) - {_a4E_ = caml_wrap_exception(_a4E_); - if(_a4E_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_y6_]; - throw _a4E_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_zf_,Runtime_ocaml_Runtime[10],_a1Q_); - try - {var - _a1R_=function(param){throw Runtime_ocaml_Runtime[2]}, - _a1S_=function(param){return 0}, - _a1T_= - [0, - function(param) - {function _a4o_(param) - {if(copropriete) - {var _a4A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$5); - return caml_call2 - (Runtime_ocaml_Runtime[65], - plafond_mensualite_d832_10_3_b, - _a4A_)} - return plafond_mensualite_d832_10_3_b} - function _a4p_(param) - {var - _a4y_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _a4z_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_a4y_); - return caml_call2(Runtime_ocaml_Runtime[29],_zh_,_a4z_)} - var - _a4q_= - [0, - function(param) - {function _a4r_(param) - {if(copropriete) - {var _a4x_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6); - return caml_call2 - (Runtime_ocaml_Runtime[65], - plafond_mensualite_d832_10_3_b, - _a4x_)} - return plafond_mensualite_d832_10_3_b} - function _a4s_(param) - {var - _a4t_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _a4u_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_a4t_); - if(_a4u_) - var - _a4v_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1), - _a4w_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_a4v_); - else - var _a4w_=_a4u_; - return caml_call2(Runtime_ocaml_Runtime[29],_zi_,_a4w_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_zj_,[0],_a4s_,_a4r_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_zk_,_a4q_,_a4p_,_a4o_)}], - _a1U_=caml_call4(Runtime_ocaml_Runtime[62],_zl_,_a1T_,_a1S_,_a1R_)} - catch(_a4n_) - {_a4n_ = caml_wrap_exception(_a4n_); - if(_a4n_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zg_]; - throw _a4n_} - var - plafond_mensualite_d832_10_3_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_zm_,Runtime_ocaml_Runtime[13],_a1U_); - try - {var - _a1V_=function(param){throw Runtime_ocaml_Runtime[2]}, - _a1W_=function(param){return 0}, - _a1X_= - function(param) - {function _a4k_(param){return calcul_equivalence_loyer_minim$3} - function _a4l_(param) - {switch(type_travaux_logement[0]) - {case 0:var _a4m_=0;break; - case 1:var _a4m_=1;break; - default:var _a4m_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_zo_,_a4m_)} - return caml_call4(Runtime_ocaml_Runtime[62],_zp_,[0],_a4l_,_a4k_)}, - _a1Y_= - [0, - function(param) - {function _a30_(param) - {var - _a34_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$14), - _a35_= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1), - _a36_= - caml_call2 - (Runtime_ocaml_Runtime[88],_a35_,n_nombre_parts_d832_11), - _a37_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[92],_a37_,_a36_)) - var - _a38_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _a39_= - caml_call2 - (Runtime_ocaml_Runtime[88], - _a38_, - taux_tranche_inferieure_d832_1); - else - var - _a4i_= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1), - _a4j_= - caml_call2 - (Runtime_ocaml_Runtime[88],_a4i_,n_nombre_parts_d832_11), - _a39_= - caml_call2 - (Runtime_ocaml_Runtime[88], - _a4j_, - taux_tranche_inferieure_d832_1); - var - _a3__= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1), - _a3$_= - caml_call2 - (Runtime_ocaml_Runtime[88],_a3__,n_nombre_parts_d832_11), - _a4a_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies); - if(caml_call2(Runtime_ocaml_Runtime[91],_a4a_,_a3$_)) - var - _a4b_= - caml_call1 - (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1), - _a4c_= - caml_call2 - (Runtime_ocaml_Runtime[88],_a4b_,n_nombre_parts_d832_11), - _a4d_= - caml_call1 - (Runtime_ocaml_Runtime[45],ressources_menage_arrondies), - _a4e_=caml_call2(Runtime_ocaml_Runtime[86],_a4d_,_a4c_), - _a4f_= - caml_call2 - (Runtime_ocaml_Runtime[88], - _a4e_, - taux_tranche_superieure_d832_1); - else - var _a4f_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$262); - var - _a4g_=caml_call2(Runtime_ocaml_Runtime[85],_a4f_,_a39_), - _a4h_=caml_call2(Runtime_ocaml_Runtime[89],_a4g_,_a34_); - return caml_call1(Runtime_ocaml_Runtime[33],_a4h_)} - function _a31_(param) - {switch(type_travaux_logement[0]) - {case 0:var _a32_=1;break; - case 1:var _a32_=0;break; - default:var _a32_=0} - if(_a32_) - var _a33_=_a32_; - else - switch(type_travaux_logement[0]) - {case 0:var _a33_=0;break; - case 1:var _a33_=0;break; - default:var _a33_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_zq_,_a33_)} - return caml_call4(Runtime_ocaml_Runtime[62],_zr_,[0],_a31_,_a30_)}, - _a1X_], - _a1Z_=caml_call4(Runtime_ocaml_Runtime[62],_zs_,_a1Y_,_a1W_,_a1V_)} - catch(_a3Z_) - {_a3Z_ = caml_wrap_exception(_a3Z_); - if(_a3Z_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zn_]; - throw _a3Z_} - var - mensualite_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_zt_,Runtime_ocaml_Runtime[13],_a1Z_); - try - {var - _a10_= - function(param) - {var - _a3T_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$7), - _a3U_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$8), - _a3V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$2), - _a3W_= - caml_call2 - (Runtime_ocaml_Runtime[86], - coefficient_prise_en_charge_d8, - _a3V_), - _a3X_=caml_call2(Runtime_ocaml_Runtime[88],_a3W_,_a3U_), - _a3Y_=caml_call1(Runtime_ocaml_Runtime[44],_a3X_); - return caml_call2(Runtime_ocaml_Runtime[89],_a3Y_,_a3T_)}, - _a11_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zv_,1)}, - _a12_=caml_call4(Runtime_ocaml_Runtime[62],_zw_,[0],_a11_,_a10_)} - catch(_a3S_) - {_a3S_ = caml_wrap_exception(_a3S_); - if(_a3S_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zu_]; - throw _a3S_} - var - coefficient_prise_en_charge_d8$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_zx_,Runtime_ocaml_Runtime[15],_a12_); - function _a13_(param) - {try - {var - _a3o_= - function(param$0) - {var - _a3s_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$263), - _a3t_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zz_, - Runtime_ocaml_Runtime[13], - param), - _a3u_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zA_, - traitement_aide_finale_minorat), - _a3t_), - _a3v_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zB_, - Runtime_ocaml_Runtime[13], - _a3u_), - _a3w_=caml_call2(Runtime_ocaml_Runtime[27],_zC_,_a3v_), - _a3x_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zD_, - Runtime_ocaml_Runtime[13], - _a3w_), - _a3y_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zE_, - abattement_depense_nette_minim), - _a3x_), - _a3z_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zF_, - Runtime_ocaml_Runtime[13], - _a3y_), - _a3A_=caml_call2(Runtime_ocaml_Runtime[27],_zG_,_a3z_), - _a3B_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zH_, - Runtime_ocaml_Runtime[13], - param), - _a3C_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zI_, - traitement_aide_finale_minorat), - _a3B_), - _a3D_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zJ_, - Runtime_ocaml_Runtime[13], - _a3C_), - _a3E_=caml_call2(Runtime_ocaml_Runtime[27],_zK_,_a3D_), - _a3F_=caml_call2(Runtime_ocaml_Runtime[68],_a3E_,_a3A_); - if(caml_call2(Runtime_ocaml_Runtime[72],_a3F_,_a3s_)) - {var - _a3G_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zL_, - Runtime_ocaml_Runtime[13], - param), - _a3H_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zM_, - traitement_aide_finale_minorat), - _a3G_), - _a3I_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zN_, - Runtime_ocaml_Runtime[13], - _a3H_), - _a3J_=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_a3I_), - _a3K_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zP_, - Runtime_ocaml_Runtime[13], - _a3J_), - _a3L_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zQ_, - abattement_depense_nette_minim), - _a3K_), - _a3M_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zR_, - Runtime_ocaml_Runtime[13], - _a3L_), - _a3N_=caml_call2(Runtime_ocaml_Runtime[27],_zS_,_a3M_), - _a3O_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zT_, - Runtime_ocaml_Runtime[13], - param), - _a3P_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zU_, - traitement_aide_finale_minorat), - _a3O_), - _a3Q_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zV_, - Runtime_ocaml_Runtime[13], - _a3P_), - _a3R_=caml_call2(Runtime_ocaml_Runtime[27],_zW_,_a3Q_); - return caml_call2(Runtime_ocaml_Runtime[68],_a3R_,_a3N_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$264)}, - _a3p_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_zX_,1)}, - _a3q_=caml_call4(Runtime_ocaml_Runtime[62],_zY_,[0],_a3p_,_a3o_); - return _a3q_} - catch(_a3r_) - {_a3r_ = caml_wrap_exception(_a3r_); - if(_a3r_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zy_]; - throw _a3r_}} - var - traitement_aide_finale_abattem= - caml_call3 - (Runtime_ocaml_Runtime[28],_zZ_,Runtime_ocaml_Runtime[10],_a13_); - try - {var - _a14_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[74], - mensualite_principale, - plafond_mensualite_d832_10_3_c) - ?plafond_mensualite_d832_10_3_c - :mensualite_principale}, - _a15_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_z1_,1)}, - _a16_=caml_call4(Runtime_ocaml_Runtime[62],_z2_,[0],_a15_,_a14_)} - catch(_a3n_) - {_a3n_ = caml_wrap_exception(_a3n_); - if(_a3n_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z0_]; - throw _a3n_} - var - mensualite_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_z3_,Runtime_ocaml_Runtime[13],_a16_); - try - {var - _a17_= - function(param) - {var _a3m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$3); - return caml_call2 - (Runtime_ocaml_Runtime[91], - coefficient_prise_en_charge_d8$0, - _a3m_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$4) - :coefficient_prise_en_charge_d8$0}, - _a18_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_z5_,1)}, - _a19_=caml_call4(Runtime_ocaml_Runtime[62],_z6_,[0],_a18_,_a17_)} - catch(_a3l_) - {_a3l_ = caml_wrap_exception(_a3l_); - if(_a3l_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z4_]; - throw _a3l_} - var - coefficient_prise_en_charge_d8$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_z7_,Runtime_ocaml_Runtime[15],_a19_); - function _a1__(param) - {try - {var - _a2v_= - function(param$0) - {var - _a2z_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$265), - _a2A_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _z9_, - Runtime_ocaml_Runtime[13], - param), - _a2B_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _z__, - traitement_aide_finale_abattem), - _a2A_), - _a2C_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _z$_, - Runtime_ocaml_Runtime[13], - _a2B_), - _a2D_=caml_call2(Runtime_ocaml_Runtime[27],_Aa_,_a2C_), - _a2E_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ab_, - Runtime_ocaml_Runtime[13], - _a2D_), - _a2F_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ac_, - contributions_sociales_dot_mon), - _a2E_), - _a2G_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ad_, - Runtime_ocaml_Runtime[13], - _a2F_), - _a2H_=caml_call2(Runtime_ocaml_Runtime[27],_Ae_,_a2G_), - _a2I_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$3), - _a2J_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Af_, - Runtime_ocaml_Runtime[13], - param), - _a2K_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ag_, - traitement_aide_finale_abattem), - _a2J_), - _a2L_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ah_, - Runtime_ocaml_Runtime[13], - _a2K_), - _a2M_=caml_call2(Runtime_ocaml_Runtime[27],_Ai_,_a2L_), - _a2N_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Aj_, - Runtime_ocaml_Runtime[13], - _a2M_), - _a2O_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ak_, - contributions_sociales_dot_mon), - _a2N_), - _a2P_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Al_, - Runtime_ocaml_Runtime[13], - _a2O_), - _a2Q_=caml_call2(Runtime_ocaml_Runtime[27],_Am_,_a2P_), - _a2R_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _An_, - Runtime_ocaml_Runtime[13], - param), - _a2S_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ao_, - traitement_aide_finale_abattem), - _a2R_), - _a2T_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ap_, - Runtime_ocaml_Runtime[13], - _a2S_), - _a2U_=caml_call2(Runtime_ocaml_Runtime[27],_Aq_,_a2T_), - _a2V_=caml_call2(Runtime_ocaml_Runtime[68],_a2U_,_a2Q_), - _a2W_=caml_call2(Runtime_ocaml_Runtime[68],_a2V_,_a2I_), - _a2X_=caml_call1(Runtime_ocaml_Runtime[38],_a2W_), - _a2Y_=caml_call2(Runtime_ocaml_Runtime[67],_a2X_,_a2H_); - if(caml_call2(Runtime_ocaml_Runtime[72],_a2Y_,_a2z_)) - {var - _a2Z_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ar_, - Runtime_ocaml_Runtime[13], - param), - _a20_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _As_, - traitement_aide_finale_abattem), - _a2Z_), - _a21_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _At_, - Runtime_ocaml_Runtime[13], - _a20_), - _a22_=caml_call2(Runtime_ocaml_Runtime[27],_Au_,_a21_), - _a23_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Av_, - Runtime_ocaml_Runtime[13], - _a22_), - _a24_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Aw_, - contributions_sociales_dot_mon), - _a23_), - _a25_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ax_, - Runtime_ocaml_Runtime[13], - _a24_), - _a26_=caml_call2(Runtime_ocaml_Runtime[27],_Ay_,_a25_), - _a27_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$4), - _a28_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Az_, - Runtime_ocaml_Runtime[13], - param), - _a29_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _AA_, - traitement_aide_finale_abattem), - _a28_), - _a2__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AB_, - Runtime_ocaml_Runtime[13], - _a29_), - _a2$_=caml_call2(Runtime_ocaml_Runtime[27],_AC_,_a2__), - _a3a_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AD_, - Runtime_ocaml_Runtime[13], - _a2$_), - _a3b_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _AE_, - contributions_sociales_dot_mon), - _a3a_), - _a3c_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AF_, - Runtime_ocaml_Runtime[13], - _a3b_), - _a3d_=caml_call2(Runtime_ocaml_Runtime[27],_AG_,_a3c_), - _a3e_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AH_, - Runtime_ocaml_Runtime[13], - param), - _a3f_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _AI_, - traitement_aide_finale_abattem), - _a3e_), - _a3g_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AJ_, - Runtime_ocaml_Runtime[13], - _a3f_), - _a3h_=caml_call2(Runtime_ocaml_Runtime[27],_AK_,_a3g_), - _a3i_=caml_call2(Runtime_ocaml_Runtime[68],_a3h_,_a3d_), - _a3j_=caml_call2(Runtime_ocaml_Runtime[68],_a3i_,_a27_), - _a3k_=caml_call1(Runtime_ocaml_Runtime[38],_a3j_); - return caml_call2(Runtime_ocaml_Runtime[67],_a3k_,_a26_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$266)}, - _a2w_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_AL_,1)}, - _a2x_=caml_call4(Runtime_ocaml_Runtime[62],_AM_,[0],_a2w_,_a2v_); - return _a2x_} - catch(_a2y_) - {_a2y_ = caml_wrap_exception(_a2y_); - if(_a2y_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z8_]; - throw _a2y_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_AN_,Runtime_ocaml_Runtime[10],_a1__); - try - {var - _a1$_= - function(param) - {var - _a2p_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$267), - _a2q_= - caml_call2 - (Runtime_ocaml_Runtime[67], - mensualite_eligible, - montant_forfaitaire_charges_d8), - _a2r_= - caml_call2(Runtime_ocaml_Runtime[68],_a2q_,mensualite_minimale), - _a2s_= - caml_call2 - (Runtime_ocaml_Runtime[65], - _a2r_, - coefficient_prise_en_charge_d8$1); - if(caml_call2(Runtime_ocaml_Runtime[73],_a2s_,_a2p_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$268); - var - _a2t_= - caml_call2 - (Runtime_ocaml_Runtime[67], - mensualite_eligible, - montant_forfaitaire_charges_d8), - _a2u_= - caml_call2(Runtime_ocaml_Runtime[68],_a2t_,mensualite_minimale); - return caml_call2 - (Runtime_ocaml_Runtime[65], - _a2u_, - coefficient_prise_en_charge_d8$1)}, - _a2a_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AP_,1)}, - _a2b_=caml_call4(Runtime_ocaml_Runtime[62],_AQ_,[0],_a2a_,_a1$_)} - catch(_a2o_) - {_a2o_ = caml_wrap_exception(_a2o_); - if(_a2o_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AO_]; - throw _a2o_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_AR_,Runtime_ocaml_Runtime[13],_a2b_); - function _a2c_(param) - {try - {var - _a2d_= - function(param$0) - {var - _a2h_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AT_, - Runtime_ocaml_Runtime[13], - param), - _a2i_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _AU_, - traitement_aide_finale_contrib), - _a2h_), - _a2j_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AV_, - Runtime_ocaml_Runtime[13], - _a2i_), - _a2k_=caml_call2(Runtime_ocaml_Runtime[27],_AW_,_a2j_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _a2k_, - montant_minimal_aide_d832_10)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$269); - var - _a2l_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AX_, - Runtime_ocaml_Runtime[13], - param), - _a2m_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _AY_, - traitement_aide_finale_contrib), - _a2l_), - _a2n_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _AZ_, - Runtime_ocaml_Runtime[13], - _a2m_); - return caml_call2(Runtime_ocaml_Runtime[27],_A0_,_a2n_)}, - _a2e_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_A1_,1)}, - _a2f_=caml_call4(Runtime_ocaml_Runtime[62],_A2_,[0],_a2e_,_a2d_); - return _a2f_} - catch(_a2g_) - {_a2g_ = caml_wrap_exception(_a2g_); - if(_a2g_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AS_]; - throw _a2g_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_A3_,Runtime_ocaml_Runtime[10],_a2c_); - return [0, - mensualite_eligible, - mensualite_minimale, - coefficient_prise_en_charge_d8$1, - aide_finale_formule, - traitement_aide_finale_montant]} - function eligibilite_aides_personnelle_(eligibilite_aides_personnelle_) - {var - menage=eligibilite_aides_personnelle_[1], - demandeur=eligibilite_aides_personnelle_[2], - date_courante=eligibilite_aides_personnelle_[3], - condition_logement_residence_p=eligibilite_aides_personnelle_[4], - condition_logement_surface=eligibilite_aides_personnelle_[5]; - function _aV6_(param) - {try - {var - _a0H_=function(param){return 0}, - _a0I_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_A5_,1)}, - _a0J_=caml_call4(Runtime_ocaml_Runtime[62],_A6_,[0],_a0I_,_a0H_); - return _a0J_} - catch(_a0K_) - {_a0K_ = caml_wrap_exception(_a0K_); - if(_a0K_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_A4_]; - throw _a0K_}} - caml_call3 - (Runtime_ocaml_Runtime[28],_A7_,Runtime_ocaml_Runtime[10],_aV6_); - try - {var - _aV7_=function(param){return 0}, - _aV8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A9_,1)}, - _aV9_=caml_call4(Runtime_ocaml_Runtime[62],_A__,[0],_aV8_,_aV7_)} - catch(_a0G_) - {_a0G_ = caml_wrap_exception(_a0G_); - if(_a0G_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_A8_]; - throw _a0G_} - var - condition_peuplement_logement_= - caml_call3 - (Runtime_ocaml_Runtime[28],_A$_,Runtime_ocaml_Runtime[12],_aV9_); - try - {var - _aV__= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1)}, - _aV$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bb_,1)}, - _aWa_=caml_call4(Runtime_ocaml_Runtime[62],_Bc_,[0],_aV$_,_aV__)} - catch(_a0F_) - {_a0F_ = caml_wrap_exception(_a0F_); - if(_a0F_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ba_]; - throw _a0F_} - var - seuil_l822_3_parts_propriete= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bd_,Runtime_ocaml_Runtime[15],_aWa_); - try - {var - _aWb_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1$0)}, - _aWc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bf_,1)}, - _aWd_=caml_call4(Runtime_ocaml_Runtime[62],_Bg_,[0],_aWc_,_aWb_)} - catch(_a0E_) - {_a0E_ = caml_wrap_exception(_a0E_); - if(_a0E_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Be_]; - throw _a0E_} - var - seuil_l822_3_parts_usufruit= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bh_,Runtime_ocaml_Runtime[15],_aWd_); - try - {var - _aWe_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_3000000)}, - _aWf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bj_,1)}, - _aWg_=caml_call4(Runtime_ocaml_Runtime[62],_Bk_,[0],_aWf_,_aWe_)} - catch(_a0D_) - {_a0D_ = caml_wrap_exception(_a0D_); - if(_a0D_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bi_]; - throw _a0D_} - var - seuil_l822_5_patrimoine= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bl_,Runtime_ocaml_Runtime[13],_aWg_); - try - {var - _aWh_= - function(param) - {var _a0C_=0 === menage[2][4][0]?1:0; - return _a0C_?_a0C_:0 === menage[2][6][0]?1:0}, - _aWi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bn_,1)}, - _aWj_=caml_call4(Runtime_ocaml_Runtime[62],_Bo_,[0],_aWi_,_aWh_)} - catch(_a0B_) - {_a0B_ = caml_wrap_exception(_a0B_); - if(_a0B_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bm_]; - throw _a0B_} - var - usufruit_ou_propriete_famille= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bp_,Runtime_ocaml_Runtime[12],_aWj_); - try - {var - _aWk_= - function(param) - {var - _a0x_=caml_call1(Runtime_ocaml_Runtime[113],menage[3]), - _a0y_=menage[4]; - switch(menage[5][0]) - {case 0: - var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$190); - break; - case 1: - var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$34);break; - case 2: - var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$35);break; - case 3: - var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$36);break; - case 4: - var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$191); - break; - default:var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$37)} - var _a0A_=caml_call2(Runtime_ocaml_Runtime[75],_a0z_,_a0y_); - return caml_call2(Runtime_ocaml_Runtime[75],_a0A_,_a0x_)}, - _aWl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Br_,1)}, - _aWm_=caml_call4(Runtime_ocaml_Runtime[62],_Bs_,[0],_aWl_,_aWk_)} - catch(_a0w_) - {_a0w_ = caml_wrap_exception(_a0w_); - if(_a0w_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bq_]; - throw _a0w_} - var - nombre_personnes_logement= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bt_,Runtime_ocaml_Runtime[14],_aWm_); - try - {var - _aWn_=function(param){return 0}, - _aWo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bv_,1)}, - _aWp_= - [0, - function(param) - {function _a0u_(param){return 1} - function _a0v_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_Bw_,1 - menage[2][7])} - return caml_call4(Runtime_ocaml_Runtime[62],_Bx_,[0],_a0v_,_a0u_)}], - _aWq_=caml_call4(Runtime_ocaml_Runtime[62],_By_,_aWp_,_aWo_,_aWn_)} - catch(_a0t_) - {_a0t_ = caml_wrap_exception(_a0t_); - if(_a0t_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bu_]; - throw _a0t_} - var - condition_non_ouverture_l822_9= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bz_,Runtime_ocaml_Runtime[12],_aWq_); - try - {var - _aWr_=function(param){return 0}, - _aWs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BB_,1)}, - _aWt_= - [0, - function(param) - {function _a0r_(param){return 1} - function _a0s_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_BC_,menage[6])} - return caml_call4(Runtime_ocaml_Runtime[62],_BD_,[0],_a0s_,_a0r_)}], - _aWu_=caml_call4(Runtime_ocaml_Runtime[62],_BE_,_aWt_,_aWs_,_aWr_)} - catch(_a0q_) - {_a0q_ = caml_wrap_exception(_a0q_); - if(_a0q_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BA_]; - throw _a0q_} - var - condition_non_ouverture_l822_8= - caml_call3 - (Runtime_ocaml_Runtime[28],_BF_,Runtime_ocaml_Runtime[12],_aWu_); - try - {var - _aWv_= - function(param) - {var - _a0l_=caml_call1(Runtime_ocaml_Runtime[46],cst_9), - _a0m_=caml_call1(Runtime_ocaml_Runtime[113],menage[3]), - _a0n_=caml_call2(Runtime_ocaml_Runtime[75],menage[4],_a0m_), - _a0o_=caml_call2(Runtime_ocaml_Runtime[78],_a0n_,_a0l_); - switch(menage[5][0]) - {case 0: - var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$0);break; - case 1: - var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$2);break; - case 2: - var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$3);break; - case 3: - var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$4);break; - case 4: - var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$1);break; - default:var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$5)} - return caml_call2(Runtime_ocaml_Runtime[75],_a0p_,_a0o_)}, - _aWw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BH_,1)}, - _aWx_=caml_call4(Runtime_ocaml_Runtime[62],_BI_,[0],_aWw_,_aWv_)} - catch(_a0k_) - {_a0k_ = caml_wrap_exception(_a0k_); - if(_a0k_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BG_]; - throw _a0k_} - var - condition_logement_surface_min= - caml_call3 - (Runtime_ocaml_Runtime[28],_BJ_,Runtime_ocaml_Runtime[14],_aWx_); - try - {var - _aWy_=function(param){return 0}, - _aWz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BL_,1)}, - _aWA_= - [0, - function(param) - {function _aZ$_(param){return 0} - function _a0a_(param) - {var _a0j_=0 === menage[2][5][0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_BM_,_a0j_)} - var - _a0b_= - [0, - function(param) - {function _a0c_(param){return 1} - function _a0d_(param) - {var _a0e_=menage[2][5]; - if(0 === _a0e_[0]) - var _a0f_=1; - else - var - personne=_a0e_[1], - _a0g_=caml_call1(Runtime_ocaml_Runtime[46],cst_30), - _a0h_= - caml_call2(Runtime_ocaml_Runtime[82],personne[1],_a0g_), - _a0i_=_a0h_ || personne[2], - _a0f_=_a0i_; - return caml_call2(Runtime_ocaml_Runtime[29],_BN_,_a0f_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_BO_,[0],_a0d_,_a0c_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_BP_,_a0b_,_a0a_,_aZ$_)}], - _aWB_=caml_call4(Runtime_ocaml_Runtime[62],_BQ_,_aWA_,_aWz_,_aWy_)} - catch(_aZ__) - {_aZ__ = caml_wrap_exception(_aZ__); - if(_aZ__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BK_]; - throw _aZ__} - var - condition_logement_location_ti= - caml_call3 - (Runtime_ocaml_Runtime[28],_BR_,Runtime_ocaml_Runtime[12],_aWB_); - try - {var - _aWC_= - function(param) - {function _aZ5_(param){return 0} - function _aZ6_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_BT_,1)} - var - _aZ7_= - [0, - function(param) - {function _aZ8_(param){return 1} - function _aZ9_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_BU_,menage[2][1])} - return caml_call4 - (Runtime_ocaml_Runtime[62],_BV_,[0],_aZ9_,_aZ8_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_BW_,_aZ7_,_aZ6_,_aZ5_)}, - _aWD_=function(param){return 1}, - _aWE_= - [0, - function(param) - {return caml_call1(condition_logement_residence_p,0)}], - _aWF_=caml_call4(Runtime_ocaml_Runtime[62],_BX_,_aWE_,_aWD_,_aWC_)} - catch(_aZ4_) - {_aZ4_ = caml_wrap_exception(_aZ4_); - if(_aZ4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BS_]; - throw _aZ4_} - var - condition_logement_residence_p$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_BY_,Runtime_ocaml_Runtime[12],_aWF_); - try - {var - _aWG_=function(param){return demandeur[3]}, - _aWH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B0_,1)}, - _aWI_=caml_call4(Runtime_ocaml_Runtime[62],_B1_,[0],_aWH_,_aWG_), - ouverture_droits_retraite_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_B2_,Runtime_ocaml_Runtime[16],_aWI_)} - catch(_aZ3_) - {_aZ3_ = caml_wrap_exception(_aZ3_); - if(_aZ3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BZ_]; - throw _aZ3_} - var - _aWJ_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_B3_,ouverture_droits_retraite), - [0,ouverture_droits_retraite_dot_]), - result=caml_call2(Runtime_ocaml_Runtime[27],_B4_,_aWJ_), - ouverture_droits_retraite_dot_$0=result[1]; - try - {var - _aWK_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[67],demandeur[6][1],demandeur[6][2])}, - _aWL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B6_,1)}, - _aWM_=caml_call4(Runtime_ocaml_Runtime[62],_B7_,[0],_aWL_,_aWK_)} - catch(_aZ2_) - {_aZ2_ = caml_wrap_exception(_aZ2_); - if(_aZ2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_B5_]; - throw _aZ2_} - var - patrimoine_total_demandeur= - caml_call3 - (Runtime_ocaml_Runtime[28],_B8_,Runtime_ocaml_Runtime[13],_aWM_); - try - {var - _aWN_=function(param){return 0}, - _aWO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B__,1)}, - _aWP_= - [0, - function(param) - {function _aZZ_(param){return 1} - function _aZ0_(param) - {var _aZ1_=0 === demandeur[5][0]?1:demandeur[1]; - return caml_call2(Runtime_ocaml_Runtime[29],_B$_,_aZ1_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Ca_,[0],_aZ0_,_aZZ_)}], - _aWQ_=caml_call4(Runtime_ocaml_Runtime[62],_Cb_,_aWP_,_aWO_,_aWN_)} - catch(_aZY_) - {_aZY_ = caml_wrap_exception(_aZY_); - if(_aZY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_B9_]; - throw _aZY_} - var - condition_nationalite= - caml_call3 - (Runtime_ocaml_Runtime[28],_Cc_,Runtime_ocaml_Runtime[12],_aWQ_); - try - {var - _aWR_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aWS_=function(param){return 0}, - _aWT_= - function(param) - {function _aZS_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1088175)} - function _aZT_(param) - {var - _aZU_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _aZV_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZU_); - if(_aZV_) - var - _aZW_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _aZX_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZW_); - else - var _aZX_=_aZV_; - return caml_call2(Runtime_ocaml_Runtime[29],_Ce_,_aZX_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Cf_,[0],_aZT_,_aZS_)}, - _aWU_= - function(param) - {function _aZM_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1100144)} - function _aZN_(param) - {var - _aZO_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _aZP_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZO_); - if(_aZP_) - var - _aZQ_=caml_call3(Runtime_ocaml_Runtime[56],2023,1,1), - _aZR_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZQ_); - else - var _aZR_=_aZP_; - return caml_call2(Runtime_ocaml_Runtime[29],_Cg_,_aZR_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Ch_,[0],_aZN_,_aZM_)}, - _aWV_= - function(param) - {function _aZG_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1083840)} - function _aZH_(param) - {var - _aZI_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,4), - _aZJ_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZI_); - if(_aZJ_) - var - _aZK_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1), - _aZL_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZK_); - else - var _aZL_=_aZJ_; - return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,_aZL_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Cj_,[0],_aZH_,_aZG_)}, - _aWW_= - function(param) - {function _aZA_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1041840)} - function _aZB_(param) - {var - _aZC_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _aZD_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZC_); - if(_aZD_) - var - _aZE_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aZF_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZE_); - else - var _aZF_=_aZD_; - return caml_call2(Runtime_ocaml_Runtime[29],_Ck_,_aZF_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Cl_,[0],_aZB_,_aZA_)}, - _aWX_= - [0, - function(param) - {function _aZu_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_999840)} - function _aZv_(param) - {var - _aZw_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,4), - _aZx_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZw_); - if(_aZx_) - var - _aZy_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1), - _aZz_= - caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZy_); - else - var _aZz_=_aZx_; - return caml_call2(Runtime_ocaml_Runtime[29],_Cm_,_aZz_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Cn_,[0],_aZv_,_aZu_)}, - _aWW_, - _aWV_, - _aWU_, - _aWT_], - _aWY_=caml_call4(Runtime_ocaml_Runtime[62],_Co_,_aWX_,_aWS_,_aWR_)} - catch(_aZt_) - {_aZt_ = caml_wrap_exception(_aZt_); - if(_aZt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Cd_]; - throw _aZt_} - var - plafond_individuel_l815_9_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_Cp_,Runtime_ocaml_Runtime[13],_aWY_); - try - {var - _aWZ_=function(param){return 0}, - _aW0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cr_,1)}, - _aW1_= - [0, - function(param) - {function _aZr_(param){return 1} - function _aZs_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _Cs_, - condition_peuplement_logement_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Ct_,[0],_aZs_,_aZr_)}], - _aW2_=caml_call4(Runtime_ocaml_Runtime[62],_Cu_,_aW1_,_aW0_,_aWZ_)} - catch(_aZq_) - {_aZq_ = caml_wrap_exception(_aZq_); - if(_aZq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Cq_]; - throw _aZq_} - var - condition_non_ouverture_l822_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_Cv_,Runtime_ocaml_Runtime[12],_aW2_); - try - {var - _aW3_=function(param){return 0}, - _aW4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cx_,1)}, - _aW5_= - [0, - function(param) - {function _aZd_(param){return 1} - function _aZe_(param) - {switch(menage[2][3][0]) - {case 0:var _aZp_=1;break; - case 1:var _aZp_=1;break; - case 2:var _aZp_=menage[2][1];break; - case 3:var _aZp_=1;break; - default:var _aZp_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_Cy_,_aZp_)} - var - _aZf_= - [0, - function(param) - {function _aZg_(param){return 0} - function _aZh_(param) - {switch(menage[2][3][0]) - {case 0: - var - usufruit_ou_propriete_famille$0= - usufruit_ou_propriete_famille; - break; - case 1:var usufruit_ou_propriete_famille$0=0;break; - case 2:var usufruit_ou_propriete_famille$0=0;break; - case 3:var usufruit_ou_propriete_famille$0=0;break; - default:var usufruit_ou_propriete_famille$0=0} - return caml_call2 - (Runtime_ocaml_Runtime[29], - _Cz_, - usufruit_ou_propriete_famille$0)} - var - _aZi_= - [0, - function(param) - {function _aZj_(param){return 1} - function _aZk_(param) - {if(usufruit_ou_propriete_famille) - {var _aZl_=menage[2][4]; - if(0 === _aZl_[0]) - var parts=_aZl_[1],parts$0=parts; - else - var parts$0=caml_call1(Runtime_ocaml_Runtime[39],cst_0$271); - var - _aZm_= - caml_call2 - (Runtime_ocaml_Runtime[94], - parts$0, - seuil_l822_3_parts_propriete); - if(_aZm_) - {var _aZn_=menage[2][6]; - if(0 === _aZn_[0]) - var parts$1=_aZn_[1],parts$2=parts$1; - else - var parts$2=caml_call1(Runtime_ocaml_Runtime[39],cst_0$270); - var - _aZo_= - caml_call2 - (Runtime_ocaml_Runtime[94], - parts$2, - seuil_l822_3_parts_usufruit)} - else - var _aZo_=_aZm_} - else - var _aZo_=usufruit_ou_propriete_famille; - return caml_call2(Runtime_ocaml_Runtime[29],_CA_,_aZo_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_CB_,[0],_aZk_,_aZj_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_CC_,_aZi_,_aZh_,_aZg_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_CD_,_aZf_,_aZe_,_aZd_)}], - _aW6_=caml_call4(Runtime_ocaml_Runtime[62],_CE_,_aW5_,_aW4_,_aW3_)} - catch(_aZc_) - {_aZc_ = caml_wrap_exception(_aZc_); - if(_aZc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Cw_]; - throw _aZc_} - var - condition_logement_mode_occupa= - caml_call3 - (Runtime_ocaml_Runtime[28],_CF_,Runtime_ocaml_Runtime[12],_aW6_); - try - {var - _aW7_= - function(param) - {function _aY5_(param){return 0} - function _aY6_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_CH_,1)} - var - _aY7_= - [0, - function(param) - {function _aY8_(param){return 1} - function _aY9_(param) - {var - _aY__=caml_call1(Runtime_ocaml_Runtime[46],cst_70), - switch$0=0; - if - (caml_call2 - (Runtime_ocaml_Runtime[81], - condition_logement_surface_min, - _aY__)) - {var _aY$_=caml_call1(Runtime_ocaml_Runtime[46],cst_8); - if - (caml_call2 - (Runtime_ocaml_Runtime[81],nombre_personnes_logement,_aY$_)) - {var - _aZa_=caml_call1(Runtime_ocaml_Runtime[46],cst_70$0), - _aZb_= - caml_call2(Runtime_ocaml_Runtime[81],menage[2][8],_aZa_); - switch$0 = 1}} - if(! switch$0) - var - _aZb_= - caml_call2 - (Runtime_ocaml_Runtime[81], - menage[2][8], - condition_logement_surface_min); - return caml_call2(Runtime_ocaml_Runtime[29],_CI_,_aZb_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_CJ_,[0],_aY9_,_aY8_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_CK_,_aY7_,_aY6_,_aY5_)}, - _aW8_=function(param){return 1}, - _aW9_= - [0,function(param){return caml_call1(condition_logement_surface,0)}], - _aW__=caml_call4(Runtime_ocaml_Runtime[62],_CL_,_aW9_,_aW8_,_aW7_)} - catch(_aY4_) - {_aY4_ = caml_wrap_exception(_aY4_); - if(_aY4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CG_]; - throw _aY4_} - var - condition_logement_surface$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_CM_,Runtime_ocaml_Runtime[12],_aW__); - try - {var - _aW$_=function(param){return ouverture_droits_retraite_dot_$0}, - _aXa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CO_,1)}, - _aXb_=caml_call4(Runtime_ocaml_Runtime[62],_CP_,[0],_aXa_,_aW$_)} - catch(_aY3_) - {_aY3_ = caml_wrap_exception(_aY3_); - if(_aY3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CN_]; - throw _aY3_} - var - age_l161_17_2_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_CQ_,Runtime_ocaml_Runtime[17],_aXb_); - try - {var - _aXc_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[74], - patrimoine_total_demandeur, - seuil_l822_5_patrimoine) - ?patrimoine_total_demandeur - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$272)}, - _aXd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CS_,1)}, - _aXe_= - [0, - function(param) - {function _aYP_(param){return demandeur[6][2]} - function _aYQ_(param) - {var - _aY2_= - caml_call2 - (Runtime_ocaml_Runtime[72], - patrimoine_total_demandeur, - seuil_l822_5_patrimoine); - return caml_call2(Runtime_ocaml_Runtime[29],_CT_,_aY2_)} - var - _aYR_= - [0, - function(param) - {function _aYS_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$273)} - function _aYT_(param) - {var _aYX_=menage[1],_aYY_=0; - function _aYZ_(acc,prestation) - {if(acc) - var acc$0=acc; - else - var - _aY1_=caml_equal(prestation,_CU_), - acc$0=_aY1_ || caml_equal(prestation,_CV_); - return acc$0} - var _aY0_=caml_call3(Stdlib_Array[17],_aYZ_,_aYY_,_aYX_); - return caml_call2(Runtime_ocaml_Runtime[29],_CW_,_aY0_)} - var - _aYU_= - [0, - function(param) - {function _aYV_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$274)} - function _aYW_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_CX_,menage[2][2])} - return caml_call4 - (Runtime_ocaml_Runtime[62],_CY_,[0],_aYW_,_aYV_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_CZ_,_aYU_,_aYT_,_aYS_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_C0_,_aYR_,_aYQ_,_aYP_)}], - _aXf_=caml_call4(Runtime_ocaml_Runtime[62],_C1_,_aXe_,_aXd_,_aXc_)} - catch(_aYO_) - {_aYO_ = caml_wrap_exception(_aYO_); - if(_aYO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CR_]; - throw _aYO_} - caml_call3 - (Runtime_ocaml_Runtime[28],_C2_,Runtime_ocaml_Runtime[13],_aXf_); - try - {var - _aXg_=function(param){return 0}, - _aXh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C4_,1)}, - _aXi_= - [0, - function(param) - {function _aYJ_(param){return 1} - function _aYK_(param) - {var - condition_logement_surface= - condition_logement_residence_p$0 - ?condition_logement_mode_occupa - ?condition_logement_location_ti - ?condition_logement_surface$0 - :condition_logement_location_ti - :condition_logement_mode_occupa - :condition_logement_residence_p$0; - return caml_call2 - (Runtime_ocaml_Runtime[29],_C5_,condition_logement_surface)} - var - _aYL_= - [0, - function(param) - {function _aYM_(param){return 0} - function _aYN_(param) - {var - condition_non_ouverture_l822_8$0= - condition_non_ouverture_l822_8 - || - condition_non_ouverture_l822_9 - || - condition_non_ouverture_l822_1; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _C6_, - condition_non_ouverture_l822_8$0)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_C7_,[0],_aYN_,_aYM_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_C8_,_aYL_,_aYK_,_aYJ_)}], - _aXj_=caml_call4(Runtime_ocaml_Runtime[62],_C9_,_aXi_,_aXh_,_aXg_)} - catch(_aYI_) - {_aYI_ = caml_wrap_exception(_aYI_); - if(_aYI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_C3_]; - throw _aYI_} - var - eligibilite_logement= - caml_call3 - (Runtime_ocaml_Runtime[28],_C__,Runtime_ocaml_Runtime[12],_aXj_); - try - {var - _aXk_= - function(param) - {var _aYH_=caml_call3(Runtime_ocaml_Runtime[59],5,0,0); - return caml_call2 - (Runtime_ocaml_Runtime[102],age_l161_17_2_secu,_aYH_)}, - _aXl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Da_,1)}, - _aXm_=caml_call4(Runtime_ocaml_Runtime[62],_Db_,[0],_aXl_,_aXk_)} - catch(_aYG_) - {_aYG_ = caml_wrap_exception(_aYG_); - if(_aYG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_C$_]; - throw _aYG_} - var - age_l351_8_1_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_Dc_,Runtime_ocaml_Runtime[17],_aXm_); - try - {var - _aXn_=function(param){return 0}, - _aXo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_De_,1)}, - _aXp_= - [0, - function(param) - {function _aYE_(param){return 1} - function _aYF_(param) - {var - eligibilite_logement$0= - condition_nationalite - ?condition_logement_mode_occupa - ?eligibilite_logement - :condition_logement_mode_occupa - :condition_nationalite; - return caml_call2 - (Runtime_ocaml_Runtime[29],_Df_,eligibilite_logement$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_Dg_,[0],_aYF_,_aYE_)}], - _aXq_=caml_call4(Runtime_ocaml_Runtime[62],_Dh_,_aXp_,_aXo_,_aXn_)} - catch(_aYD_) - {_aYD_ = caml_wrap_exception(_aYD_); - if(_aYD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Dd_]; - throw _aYD_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_Di_,Runtime_ocaml_Runtime[12],_aXq_); - function _aXr_(param) - {try - {var - _aYi_=function(param){return 0}, - _aYj_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Dk_,1)}, - _aYk_= - [0, - function(param$0) - {function _aYn_(param){return 1} - function _aYo_(param$0) - {if(0 === param[0]) - var _aYp_=0; - else - {var parent=param[1],_aYq_=caml_equal(parent[4],_Dm_); - if(_aYq_) - {var - _aYr_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25), - _aYs_= - caml_call2 - (Runtime_ocaml_Runtime[65], - plafond_individuel_l815_9_secu, - _aYr_), - _aYt_=caml_call2(Runtime_ocaml_Runtime[71],parent[2],_aYs_); - if(_aYt_) - {var - _aYu_= - caml_call2 - (Runtime_ocaml_Runtime[95],parent[1],age_l351_8_1_secu), - _aYv_= - caml_call2(Runtime_ocaml_Runtime[99],_aYu_,date_courante); - if(_aYv_) - var _aYw_=_aYv_; - else - {var _aYA_=parent[7]; - if(_aYA_) - var - _aYB_=caml_call3(Runtime_ocaml_Runtime[59],65,0,0), - _aYC_=caml_call2(Runtime_ocaml_Runtime[95],parent[1],_aYB_), - _aYw_= - caml_call2(Runtime_ocaml_Runtime[99],_aYC_,date_courante); - else - var _aYw_=_aYA_} - if(_aYw_) - var _aYx_=_aYw_; - else - var - _aYy_= - caml_call2 - (Runtime_ocaml_Runtime[95],parent[1],age_l161_17_2_secu), - _aYz_= - caml_call2(Runtime_ocaml_Runtime[99],_aYy_,date_courante), - _aYx_=_aYz_?parent[6]:_aYz_} - else - var _aYx_=_aYt_} - else - var _aYx_=_aYq_; - var _aYp_=_aYx_} - return caml_call2(Runtime_ocaml_Runtime[29],_Dl_,_aYp_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Dn_,[0],_aYo_,_aYn_)}], - _aYl_=caml_call4(Runtime_ocaml_Runtime[62],_Do_,_aYk_,_aYj_,_aYi_); - return _aYl_} - catch(_aYm_) - {_aYm_ = caml_wrap_exception(_aYm_); - if(_aYm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Dj_]; - throw _aYm_}} - var - condition_2_r823_4= - caml_call3 - (Runtime_ocaml_Runtime[28],_Dp_,Runtime_ocaml_Runtime[10],_aXr_); - function _aXs_(param) - {try - {var - _aXW_=function(param){return 0}, - _aXX_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Dr_,1)}, - _aXY_= - function(param$0) - {function _aYe_(param){return 1} - function _aYf_(param$0) - {if(0 === param[0]) - var - enfant=param[1], - _aYg_=caml_call1(Runtime_ocaml_Runtime[46],cst_21), - _aYh_=caml_call2(Runtime_ocaml_Runtime[82],enfant[8],_aYg_); - else - var _aYh_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Ds_,_aYh_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Dt_,[0],_aYf_,_aYe_)}, - _aXZ_= - [0, - function(param$0) - {function _aX2_(param){return 1} - function _aX3_(param$0) - {var - _aYa_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Du_, - embed_personne_a_charge, - param), - _aYb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Dv_,condition_2_r823_4), - _aYa_), - _aYc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Dw_, - Runtime_ocaml_Runtime[12], - _aYb_), - _aYd_=caml_call2(Runtime_ocaml_Runtime[27],_Dx_,_aYc_); - return caml_call2(Runtime_ocaml_Runtime[29],_Dy_,_aYd_)} - var - _aX4_= - [0, - function(param$0) - {function _aX5_(param){return 1} - function _aX6_(param$0) - {if(0 === param[0]) - var _aX7_=0; - else - {var parent=param[1],_aX8_=parent[5]; - if(_aX8_) - var - _aX9_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25$0), - _aX__= - caml_call2 - (Runtime_ocaml_Runtime[65], - plafond_individuel_l815_9_secu, - _aX9_), - _aX$_=caml_call2(Runtime_ocaml_Runtime[71],parent[2],_aX__); - else - var _aX$_=_aX8_; - var _aX7_=_aX$_} - return caml_call2(Runtime_ocaml_Runtime[29],_Dz_,_aX7_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_DA_,[0],_aX6_,_aX5_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_DB_,_aX4_,_aX3_,_aX2_)}, - _aXY_], - _aX0_=caml_call4(Runtime_ocaml_Runtime[62],_DC_,_aXZ_,_aXX_,_aXW_); - return _aX0_} - catch(_aX1_) - {_aX1_ = caml_wrap_exception(_aX1_); - if(_aX1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Dq_]; - throw _aX1_}} - var - prise_en_compte_personne_a_cha= - caml_call3 - (Runtime_ocaml_Runtime[28],_DD_,Runtime_ocaml_Runtime[10],_aXs_); - try - {var - _aXt_= - function(param) - {var _aXR_=menage[3]; - function _aXS_(personne_a_charge) - {var - _aXT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _DF_, - embed_personne_a_charge, - personne_a_charge), - _aXU_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _DG_, - prise_en_compte_personne_a_cha), - _aXT_), - _aXV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _DH_, - Runtime_ocaml_Runtime[12], - _aXU_); - return caml_call2(Runtime_ocaml_Runtime[27],_DI_,_aXV_)} - return caml_call2(Runtime_ocaml_Runtime[112],_aXS_,_aXR_)}, - _aXu_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DJ_,1)}, - _aXv_=caml_call4(Runtime_ocaml_Runtime[62],_DK_,[0],_aXu_,_aXt_)} - catch(_aXQ_) - {_aXQ_ = caml_wrap_exception(_aXQ_); - if(_aXQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DE_]; - throw _aXQ_} - var - _aXw_=caml_call1(Runtime_ocaml_Runtime[18],embed_personne_a_charge), - personnes_a_charge_prises_en_c= - caml_call3(Runtime_ocaml_Runtime[28],_DL_,_aXw_,_aXv_); - try - {var - _aXx_= - function(param) - {function _aXM_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[9][0]?0:1} - return 0} - var - _aXN_= - caml_call2 - (Runtime_ocaml_Runtime[112], - _aXM_, - personnes_a_charge_prises_en_c); - function _aXO_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1],_aXP_=enfant[9]; - if(0 === _aXP_[0]) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$275); - var coeff=_aXP_[1]; - return coeff} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$276)} - return caml_call2(Stdlib_Array[15],_aXO_,_aXN_)}, - _aXy_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DN_,1)}, - _aXz_=caml_call4(Runtime_ocaml_Runtime[62],_DO_,[0],_aXy_,_aXx_)} - catch(_aXL_) - {_aXL_ = caml_wrap_exception(_aXL_); - if(_aXL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DM_]; - throw _aXL_} - var - _aXA_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_DP_,_aXA_,_aXz_); - try - {var - _aXB_= - function(param) - {return caml_call1 - (Runtime_ocaml_Runtime[113],personnes_a_charge_prises_en_c)}, - _aXC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DR_,1)}, - _aXD_=caml_call4(Runtime_ocaml_Runtime[62],_DS_,[0],_aXC_,_aXB_)} - catch(_aXK_) - {_aXK_ = caml_wrap_exception(_aXK_); - if(_aXK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DQ_]; - throw _aXK_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_DT_,Runtime_ocaml_Runtime[14],_aXD_); - try - {var - _aXE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2), - _aXF_= - caml_call2 - (Runtime_ocaml_Runtime[94],seuil_l822_3_parts_usufruit,_aXE_)} - catch(_aXJ_) - {_aXJ_ = caml_wrap_exception(_aXJ_); - if(_aXJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DU_]; - throw _aXJ_} - if(_aXF_) - {try - {var - _aXG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), - _aXH_= - caml_call2 - (Runtime_ocaml_Runtime[94],seuil_l822_3_parts_propriete,_aXG_)} - catch(_aXI_) - {_aXI_ = caml_wrap_exception(_aXI_); - if(_aXI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DV_]; - throw _aXI_} - if(_aXH_) - return [0, - date_courante, - eligibilite, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte, - condition_2_r823_4]; - throw [0,Runtime_ocaml_Runtime[3],_DW_]} - throw [0,Runtime_ocaml_Runtime[3],_DX_]} - function ressources_aides_personnelle_l(ressources_aides_personnelle_l) - {var - ressources_demandeur=ressources_aides_personnelle_l[1], - ressources_conjoint=ressources_aides_personnelle_l[2], - personnes_vivant_habituellemen=ressources_aides_personnelle_l[3], - demandeur_exerce_activite_remu=ressources_aides_personnelle_l[4], - conjoint_exerce_activite_remun=ressources_aides_personnelle_l[5], - personnes_a_charge=ressources_aides_personnelle_l[6], - situation_familiale=ressources_aides_personnelle_l[7], - mode_occupation=ressources_aides_personnelle_l[8], - condition_age_bourse_enseignem=ressources_aides_personnelle_l[9], - demandeur_poursuit_des_etudes=ressources_aides_personnelle_l[10], - date_demande_ou_reexamen_droit=ressources_aides_personnelle_l[11], - paiement_logement_distinct_pro=ressources_aides_personnelle_l[12]; - try - {var - _aU8_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aU9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DZ_,0)}, - _aU__=caml_call4(Runtime_ocaml_Runtime[62],_D0_,[0],_aU9_,_aU8_)} - catch(_aV5_) - {_aV5_ = caml_wrap_exception(_aV5_); - if(_aV5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DY_]; - throw _aV5_} - caml_call3 - (Runtime_ocaml_Runtime[28],_D1_,Runtime_ocaml_Runtime[13],_aU__); - try - {var - _aU$_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_258900)}, - _aVa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D3_,1)}, - _aVb_=caml_call4(Runtime_ocaml_Runtime[62],_D4_,[0],_aVa_,_aU$_)} - catch(_aV4_) - {_aV4_ = caml_wrap_exception(_aV4_); - if(_aV4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_D2_]; - throw _aV4_} - var - montant_forfaitaire_r_822_8= - caml_call3 - (Runtime_ocaml_Runtime[28],_D5_,Runtime_ocaml_Runtime[13],_aVb_); - try - {var - _aVc_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_9500)}, - _aVd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D7_,1)}, - _aVe_=caml_call4(Runtime_ocaml_Runtime[62],_D8_,[0],_aVd_,_aVc_)} - catch(_aV3_) - {_aV3_ = caml_wrap_exception(_aV3_); - if(_aV3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_D6_]; - throw _aV3_} - var - montant_forfaitaire_r_822_7= - caml_call3 - (Runtime_ocaml_Runtime[28],_D9_,Runtime_ocaml_Runtime[13],_aVe_); - try - {var - _aVf_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aVg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D$_,0)}, - _aVh_=caml_call4(Runtime_ocaml_Runtime[62],_Ea_,[0],_aVg_,_aVf_)} - catch(_aV2_) - {_aV2_ = caml_wrap_exception(_aV2_); - if(_aV2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_D__]; - throw _aV2_} - var - ressources_forfaitaires_r822_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Eb_,Runtime_ocaml_Runtime[13],_aVh_); - try - {var - _aVi_= - function(param) - {var _aV0_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$277); - function _aV1_(acc,personne) - {return caml_call2(Runtime_ocaml_Runtime[67],acc,personne[2])} - return caml_call3 - (Stdlib_Array[17], - _aV1_, - _aV0_, - personnes_vivant_habituellemen)}, - _aVj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ed_,1)}, - _aVk_=caml_call4(Runtime_ocaml_Runtime[62],_Ee_,[0],_aVj_,_aVi_)} - catch(_aVZ_) - {_aVZ_ = caml_wrap_exception(_aVZ_); - if(_aVZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ec_]; - throw _aVZ_} - var - ressources_personnes_vivant_ha= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ef_,Runtime_ocaml_Runtime[13],_aVk_); - try - {var - _aVl_= - function(param) - {switch(situation_familiale[0]) - {case 0: - var _aVT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$278); - if - (caml_equal - (caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge), - _aVT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$279); - var - _aVU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$38), - _aVV_= - caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge); - return caml_call2(Runtime_ocaml_Runtime[82],_aVV_,_aVU_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_135000); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$280); - case 2:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$281); - case 3:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$282); - case 4: - var _aVW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$283); - if - (caml_equal - (caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge), - _aVW_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$284); - var - _aVX_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$39), - _aVY_= - caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge); - return caml_call2(Runtime_ocaml_Runtime[82],_aVY_,_aVX_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_135000$0); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$285)}}, - _aVm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Eh_,1)}, - _aVn_=caml_call4(Runtime_ocaml_Runtime[62],_Ei_,[0],_aVm_,_aVl_)} - catch(_aVS_) - {_aVS_ = caml_wrap_exception(_aVS_); - if(_aVS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Eg_]; - throw _aVS_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Ej_,Runtime_ocaml_Runtime[13],_aVn_); - try - {var - _aVo_=function(param){return date_demande_ou_reexamen_droit}, - _aVp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_El_,1)}, - _aVq_=caml_call4(Runtime_ocaml_Runtime[62],_Em_,[0],_aVp_,_aVo_), - base_mensuelle_allocations_fam= - caml_call3 - (Runtime_ocaml_Runtime[28],_En_,Runtime_ocaml_Runtime[16],_aVq_)} - catch(_aVR_) - {_aVR_ = caml_wrap_exception(_aVR_); - if(_aVR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ek_]; - throw _aVR_} - var - _aVr_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Eo_,base_mensuelle_allocations_fam$5), - [0,base_mensuelle_allocations_fam]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Ep_,_aVr_), - base_mensuelle_allocations_fam$0=result[1]; - try - {var - _aVs_= - function(param) - {return 0 === paiement_logement_distinct_pro[0] - ?montant_forfaitaire_r_822_8 - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$286)}, - _aVt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Er_,1)}, - _aVu_=caml_call4(Runtime_ocaml_Runtime[62],_Es_,[0],_aVt_,_aVs_)} - catch(_aVQ_) - {_aVQ_ = caml_wrap_exception(_aVQ_); - if(_aVQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Eq_]; - throw _aVQ_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Et_,Runtime_ocaml_Runtime[13],_aVu_); - try - {var - _aVv_= - function(param) - {var - _aVP_= - caml_call2 - (Runtime_ocaml_Runtime[67], - ressources_demandeur, - ressources_conjoint); - return caml_call2 - (Runtime_ocaml_Runtime[67], - _aVP_, - ressources_personnes_vivant_ha)}, - _aVw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ev_,1)}, - _aVx_= - [0, - function(param) - {function _aVM_(param){return ressources_forfaitaires_r822_2} - function _aVN_(param) - {switch(mode_occupation[0]) - {case 0:var _aVO_=1;break; - case 1:var _aVO_=0;break; - case 2:var _aVO_=0;break; - case 3:var _aVO_=0;break; - default:var _aVO_=0} - var - demandeur_poursuit_des_etudes$0= - _aVO_ - ?condition_age_bourse_enseignem - ?demandeur_poursuit_des_etudes - :condition_age_bourse_enseignem - :_aVO_; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _Ew_, - demandeur_poursuit_des_etudes$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_Ex_,[0],_aVN_,_aVM_)}], - _aVy_=caml_call4(Runtime_ocaml_Runtime[62],_Ey_,_aVx_,_aVw_,_aVv_)} - catch(_aVL_) - {_aVL_ = caml_wrap_exception(_aVL_); - if(_aVL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Eu_]; - throw _aVL_} - var - ressources_prises_en_compte= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ez_,Runtime_ocaml_Runtime[13],_aVy_); - try - {var - _aVz_= - function(param) - {if - (demandeur_exerce_activite_remu - && - conjoint_exerce_activite_remun) - {var - _aVI_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$15), - _aVJ_= - caml_call2 - (Runtime_ocaml_Runtime[65], - base_mensuelle_allocations_fam$0, - _aVI_), - _aVK_= - caml_call2 - (Runtime_ocaml_Runtime[67], - ressources_conjoint, - ressources_conjoint); - if(caml_call2(Runtime_ocaml_Runtime[72],_aVK_,_aVJ_)) - return montant_forfaitaire_r_822_7} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$287)}, - _aVA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EB_,1)}, - _aVB_=caml_call4(Runtime_ocaml_Runtime[62],_EC_,[0],_aVA_,_aVz_)} - catch(_aVH_) - {_aVH_ = caml_wrap_exception(_aVH_); - if(_aVH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EA_]; - throw _aVH_} - caml_call3 - (Runtime_ocaml_Runtime[28],_ED_,Runtime_ocaml_Runtime[13],_aVB_); - try - {var - _aVC_=1, - _aVD_= - function(acc,personne){var _aVG_=acc?personne[1]:acc;return _aVG_}, - _aVE_= - caml_call3 - (Stdlib_Array[17],_aVD_,_aVC_,personnes_vivant_habituellemen)} - catch(_aVF_) - {_aVF_ = caml_wrap_exception(_aVF_); - if(_aVF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EE_]; - throw _aVF_} - if(_aVE_)return [0,ressources_prises_en_compte]; - throw [0,Runtime_ocaml_Runtime[3],_EF_]} - function eligibilite_prestations_famili(eligibilite_prestations_famili) - {var - date_courante=eligibilite_prestations_famili[1], - residence=eligibilite_prestations_famili[3]; - try - {var - _aT0_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[46],cst_20$0)}, - _aT1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EH_,1)}, - _aT2_=caml_call4(Runtime_ocaml_Runtime[62],_EI_,[0],_aT1_,_aT0_)} - catch(_aU7_) - {_aU7_ = caml_wrap_exception(_aU7_); - if(_aU7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EG_]; - throw _aU7_} - var - age_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_EJ_,Runtime_ocaml_Runtime[14],_aT2_); - try - {var - _aT3_=function(param){return date_courante}, - _aT4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EL_,1)}, - _aT5_=caml_call4(Runtime_ocaml_Runtime[62],_EM_,[0],_aT4_,_aT3_), - smic_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_EN_,Runtime_ocaml_Runtime[16],_aT5_)} - catch(_aU6_) - {_aU6_ = caml_wrap_exception(_aU6_); - if(_aU6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EK_]; - throw _aU6_} - try - {var - _aT6_=function(param){return residence}, - _aT7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EP_,1)}, - _aT8_=caml_call4(Runtime_ocaml_Runtime[62],_EQ_,[0],_aT7_,_aT6_), - smic_dot_residence= - caml_call3 - (Runtime_ocaml_Runtime[28],_ER_,embed_collectivite$0,_aT8_)} - catch(_aU5_) - {_aU5_ = caml_wrap_exception(_aU5_); - if(_aU5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EO_]; - throw _aU5_} - var - _aT9_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_ES_,smic$1), - [0,smic_dot_date_courante,smic_dot_residence]), - result=caml_call2(Runtime_ocaml_Runtime[27],_ET_,_aT9_), - smic_dot_brut_horaire=result[1]; - try - {var - _aT__=function(param){return 0}, - _aT$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EV_,1)}, - _aUa_= - [0, - function(param) - {function _aUX_(param){return 1} - function _aUY_(param) - {var _aUZ_=caml_equal(residence,_EW_); - if(_aUZ_) - var _aU0_=_aUZ_; - else - {var _aU1_=caml_equal(residence,_EY_); - if(_aU1_) - var _aU0_=_aU1_; - else - {var _aU2_=caml_equal(residence,_EZ_); - if(_aU2_) - var _aU0_=_aU2_; - else - {var _aU3_=caml_equal(residence,_E0_); - if(_aU3_) - var _aU0_=_aU3_; - else - var - _aU4_=caml_equal(residence,_E1_), - _aU0_=_aU4_ || caml_equal(residence,_E2_)}}} - return caml_call2(Runtime_ocaml_Runtime[29],_EX_,_aU0_)} - return caml_call4(Runtime_ocaml_Runtime[62],_E3_,[0],_aUY_,_aUX_)}], - _aUb_=caml_call4(Runtime_ocaml_Runtime[62],_E4_,_aUa_,_aT$_,_aT__)} - catch(_aUW_) - {_aUW_ = caml_wrap_exception(_aUW_); - if(_aUW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EU_]; - throw _aUW_} - var - regime_outre_mer_l751_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_E5_,Runtime_ocaml_Runtime[12],_aUb_); - try - {var - _aUc_= - function(param) - {var - _aUT_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$1), - _aUU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$1), - _aUV_= - caml_call2 - (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_aUU_); - return caml_call2(Runtime_ocaml_Runtime[65],_aUV_,_aUT_)}, - _aUd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E7_,1)}, - _aUe_= - [0, - function(param) - {function _aUO_(param) - {var - _aUQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$2), - _aUR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$2), - _aUS_= - caml_call2 - (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_aUR_); - return caml_call2(Runtime_ocaml_Runtime[65],_aUS_,_aUQ_)} - function _aUP_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_E8_,regime_outre_mer_l751_1)} - return caml_call4(Runtime_ocaml_Runtime[62],_E9_,[0],_aUP_,_aUO_)}], - _aUf_=caml_call4(Runtime_ocaml_Runtime[62],_E__,_aUe_,_aUd_,_aUc_)} - catch(_aUN_) - {_aUN_ = caml_wrap_exception(_aUN_); - if(_aUN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_E6_]; - throw _aUN_} - var - plafond_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_E$_,Runtime_ocaml_Runtime[13],_aUf_); - function _aUg_(param) - {try - {var - _aUB_=function(param){return 0}, - _aUC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Fb_,1)}, - _aUD_= - [0, - function(param$0) - {function _aUG_(param){return 1} - function _aUH_(param$0) - {switch(param[2][0]) - {case 0:var _aUI_=1;break; - case 1:var _aUI_=0;break; - default:var _aUI_=0} - if(_aUI_) - var _aUJ_=_aUI_; - else - {switch(param[2][0]) - {case 0:var _aUL_=0;break; - case 1:var _aUL_=1;break; - default:var _aUL_=0} - if(_aUL_) - var _aUJ_=_aUL_; - else - {switch(param[2][0]) - {case 0:var _aUM_=0;break; - case 1:var _aUM_=0;break; - default:var _aUM_=1} - var _aUJ_=_aUM_}} - var - _aUK_= - _aUJ_ - ?caml_call2 - (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2) - :_aUJ_; - return caml_call2(Runtime_ocaml_Runtime[29],_Fc_,_aUK_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Fd_,[0],_aUH_,_aUG_)}], - _aUE_=caml_call4(Runtime_ocaml_Runtime[62],_Fe_,_aUD_,_aUC_,_aUB_); - return _aUE_} - catch(_aUF_) - {_aUF_ = caml_wrap_exception(_aUF_); - if(_aUF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fa_]; - throw _aUF_}} - var - conditions_hors_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ff_,Runtime_ocaml_Runtime[10],_aUg_); - function _aUh_(param) - {try - {var - _aUi_=function(param){return 0}, - _aUj_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Fh_,1)}, - _aUk_= - [0, - function(param$0) - {function _aUn_(param){throw Runtime_ocaml_Runtime[2]} - function _aUo_(param){return 0} - var - _aUp_= - [0, - function(param$0) - {function _aUq_(param){return 1} - function _aUr_(param$0) - {switch(param[2][0]) - {case 0:var _aUy_=1;break; - case 1:var _aUy_=0;break; - default:var _aUy_=0} - if(_aUy_) - var _aUz_=_aUy_; - else - {switch(param[2][0]) - {case 0:var _aUA_=0;break; - case 1:var _aUA_=1;break; - default:var _aUA_=0} - var _aUz_=_aUA_} - return caml_call2(Runtime_ocaml_Runtime[29],_Fi_,_aUz_)} - var - _aUs_= - [0, - function(param$0) - {function _aUt_(param){return 1} - function _aUu_(param$0) - {switch(param[2][0]) - {case 0:var _aUv_=0;break; - case 1:var _aUv_=0;break; - default:var _aUv_=1} - if(_aUv_) - var - _aUw_= - caml_call2 - (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2), - _aUx_= - _aUw_ - ?caml_call2(Runtime_ocaml_Runtime[84],param[5],age_l512_3_2) - :_aUw_; - else - var _aUx_=_aUv_; - return caml_call2(Runtime_ocaml_Runtime[29],_Fj_,_aUx_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Fk_,[0],_aUu_,_aUt_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_Fl_,_aUs_,_aUr_,_aUq_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_Fm_,_aUp_,_aUo_,_aUn_)}], - _aUl_=caml_call4(Runtime_ocaml_Runtime[62],_Fn_,_aUk_,_aUj_,_aUi_); - return _aUl_} - catch(_aUm_) - {_aUm_ = caml_wrap_exception(_aUm_); - if(_aUm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fg_]; - throw _aUm_}} - var - droit_ouvert= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fo_,Runtime_ocaml_Runtime[10],_aUh_); - return [0, - droit_ouvert, - conditions_hors_age, - age_l512_3_2, - regime_outre_mer_l751_1]} - function calcul_allocation_logement_loc(calcul_allocation_logement_loc) - {var - loyer_principal=calcul_allocation_logement_loc[1], - ressources_menage_arrondies=calcul_allocation_logement_loc[2], - beneficiaire_aide_adulte_ou_en=calcul_allocation_logement_loc[3], - date_courante=calcul_allocation_logement_loc[4], - nombre_personnes_a_charge=calcul_allocation_logement_loc[5], - situation_familiale_calcul_apl=calcul_allocation_logement_loc[6], - zone=calcul_allocation_logement_loc[7], - logement_est_chambre=calcul_allocation_logement_loc[8], - agees_ou_handicap_adultes_hebe=calcul_allocation_logement_loc[9], - type_aide=calcul_allocation_logement_loc[10], - colocation=calcul_allocation_logement_loc[11], - reduction_loyer_solidarite=calcul_allocation_logement_loc[12], - logement_meuble_d842_2=calcul_allocation_logement_loc[13], - changement_logement_d842_4=calcul_allocation_logement_loc[14]; - try - {var - _aSO_=function(param){return loyer_principal}, - _aSP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fq_,1)}, - _aSQ_= - [0, - function(param) - {function _aTV_(param) - {var - _aTX_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$19), - _aTY_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$40), - _aTZ_=caml_call2(Runtime_ocaml_Runtime[89],_aTY_,_aTX_); - return caml_call2 - (Runtime_ocaml_Runtime[65],loyer_principal,_aTZ_)} - function _aTW_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_Fr_,logement_meuble_d842_2)} - return caml_call4(Runtime_ocaml_Runtime[62],_Fs_,[0],_aTW_,_aTV_)}], - _aSR_=caml_call4(Runtime_ocaml_Runtime[62],_Ft_,_aSQ_,_aSP_,_aSO_), - calcul_apl_locatif_dot_loyer_p= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fu_,Runtime_ocaml_Runtime[13],_aSR_)} - catch(_aTU_) - {_aTU_ = caml_wrap_exception(_aTU_); - if(_aTU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fp_]; - throw _aTU_} - try - {var - _aSS_=function(param){return ressources_menage_arrondies}, - _aST_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fw_,1)}, - _aSU_=caml_call4(Runtime_ocaml_Runtime[62],_Fx_,[0],_aST_,_aSS_), - calcul_apl_locatif_dot_ressour= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fy_,Runtime_ocaml_Runtime[13],_aSU_)} - catch(_aTT_) - {_aTT_ = caml_wrap_exception(_aTT_); - if(_aTT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fv_]; - throw _aTT_} - try - {var - _aSV_=function(param){return beneficiaire_aide_adulte_ou_en}, - _aSW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FA_,1)}, - _aSX_=caml_call4(Runtime_ocaml_Runtime[62],_FB_,[0],_aSW_,_aSV_), - calcul_apl_locatif_dot_benefic= - caml_call3 - (Runtime_ocaml_Runtime[28],_FC_,Runtime_ocaml_Runtime[12],_aSX_)} - catch(_aTS_) - {_aTS_ = caml_wrap_exception(_aTS_); - if(_aTS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fz_]; - throw _aTS_} - try - {var - _aSY_=function(param){return date_courante}, - _aSZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FE_,1)}, - _aS0_=caml_call4(Runtime_ocaml_Runtime[62],_FF_,[0],_aSZ_,_aSY_), - calcul_apl_locatif_dot_date_co= - caml_call3 - (Runtime_ocaml_Runtime[28],_FG_,Runtime_ocaml_Runtime[16],_aS0_)} - catch(_aTR_) - {_aTR_ = caml_wrap_exception(_aTR_); - if(_aTR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FD_]; - throw _aTR_} - try - {var - _aS1_=function(param){return nombre_personnes_a_charge}, - _aS2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FI_,1)}, - _aS3_=caml_call4(Runtime_ocaml_Runtime[62],_FJ_,[0],_aS2_,_aS1_), - calcul_apl_locatif_dot_nombre_= - caml_call3 - (Runtime_ocaml_Runtime[28],_FK_,Runtime_ocaml_Runtime[14],_aS3_)} - catch(_aTQ_) - {_aTQ_ = caml_wrap_exception(_aTQ_); - if(_aTQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FH_]; - throw _aTQ_} - try - {var - _aS4_=function(param){return situation_familiale_calcul_apl}, - _aS5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FM_,1)}, - _aS6_=caml_call4(Runtime_ocaml_Runtime[62],_FN_,[0],_aS5_,_aS4_), - calcul_apl_locatif_dot_situati= - caml_call3 - (Runtime_ocaml_Runtime[28], - _FO_, - embed_situation_familiale_calc, - _aS6_)} - catch(_aTP_) - {_aTP_ = caml_wrap_exception(_aTP_); - if(_aTP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FL_]; - throw _aTP_} - try - {var - _aS7_=function(param){return zone}, - _aS8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FQ_,1)}, - _aS9_=caml_call4(Runtime_ocaml_Runtime[62],_FR_,[0],_aS8_,_aS7_), - calcul_apl_locatif_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_FS_,embed_zone_d_habitation,_aS9_)} - catch(_aTO_) - {_aTO_ = caml_wrap_exception(_aTO_); - if(_aTO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FP_]; - throw _aTO_} - try - {var - _aS__=function(param){return logement_est_chambre}, - _aS$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FU_,1)}, - _aTa_=caml_call4(Runtime_ocaml_Runtime[62],_FV_,[0],_aS$_,_aS__), - calcul_apl_locatif_dot_logemen= - caml_call3 - (Runtime_ocaml_Runtime[28],_FW_,Runtime_ocaml_Runtime[12],_aTa_)} - catch(_aTN_) - {_aTN_ = caml_wrap_exception(_aTN_); - if(_aTN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FT_]; - throw _aTN_} - try - {var - _aTb_=function(param){return agees_ou_handicap_adultes_hebe}, - _aTc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FY_,1)}, - _aTd_=caml_call4(Runtime_ocaml_Runtime[62],_FZ_,[0],_aTc_,_aTb_), - calcul_apl_locatif_dot_agees_o= - caml_call3 - (Runtime_ocaml_Runtime[28],_F0_,Runtime_ocaml_Runtime[12],_aTd_)} - catch(_aTM_) - {_aTM_ = caml_wrap_exception(_aTM_); - if(_aTM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FX_]; - throw _aTM_} - try - {var - _aTe_=function(param){return type_aide}, - _aTf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F2_,1)}, - _aTg_=caml_call4(Runtime_ocaml_Runtime[62],_F3_,[0],_aTf_,_aTe_), - calcul_apl_locatif_dot_type_ai= - caml_call3 - (Runtime_ocaml_Runtime[28], - _F4_, - embed_type_aides_personnelle_l, - _aTg_)} - catch(_aTL_) - {_aTL_ = caml_wrap_exception(_aTL_); - if(_aTL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F1_]; - throw _aTL_} - try - {var - _aTh_=function(param){return colocation}, - _aTi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F6_,1)}, - _aTj_=caml_call4(Runtime_ocaml_Runtime[62],_F7_,[0],_aTi_,_aTh_), - calcul_apl_locatif_dot_colocat= - caml_call3 - (Runtime_ocaml_Runtime[28],_F8_,Runtime_ocaml_Runtime[12],_aTj_)} - catch(_aTK_) - {_aTK_ = caml_wrap_exception(_aTK_); - if(_aTK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F5_]; - throw _aTK_} - try - {var - _aTk_=function(param){return reduction_loyer_solidarite}, - _aTl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F__,1)}, - _aTm_=caml_call4(Runtime_ocaml_Runtime[62],_F$_,[0],_aTl_,_aTk_), - calcul_apl_locatif_dot_reducti= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ga_,Runtime_ocaml_Runtime[13],_aTm_)} - catch(_aTJ_) - {_aTJ_ = caml_wrap_exception(_aTJ_); - if(_aTJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F9_]; - throw _aTJ_} - var - _aTn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Gb_,calcul_aide_personnalisee_loge), - [0, - calcul_apl_locatif_dot_loyer_p, - calcul_apl_locatif_dot_ressour, - calcul_apl_locatif_dot_benefic, - calcul_apl_locatif_dot_date_co, - calcul_apl_locatif_dot_nombre_, - calcul_apl_locatif_dot_situati, - calcul_apl_locatif_dot_zone, - calcul_apl_locatif_dot_logemen, - calcul_apl_locatif_dot_agees_o, - calcul_apl_locatif_dot_type_ai, - calcul_apl_locatif_dot_colocat, - calcul_apl_locatif_dot_reducti]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Gc_,_aTn_), - calcul_apl_locatif_dot_aide_fi=result[6], - calcul_apl_locatif_dot_traitem=result[7]; - function _aTo_(param) - {try - {var - _aTy_= - function(param$0) - {var - _aTG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ge_, - Runtime_ocaml_Runtime[13], - param), - _aTH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Gf_, - calcul_apl_locatif_dot_traitem), - _aTG_), - _aTI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Gg_, - Runtime_ocaml_Runtime[13], - _aTH_); - return caml_call2(Runtime_ocaml_Runtime[27],_Gh_,_aTI_)}, - _aTz_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Gi_,1)}, - _aTA_= - [0, - function(param$0) - {function _aTD_(param$0){return param} - function _aTE_(param) - {if(0 === changement_logement_d842_4[0]) - var - infos=changement_logement_d842_4[1], - _aTF_= - caml_call2 - (Runtime_ocaml_Runtime[72],loyer_principal,infos[1]); - else - var _aTF_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Gj_,_aTF_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Gk_,[0],_aTE_,_aTD_)}], - _aTB_=caml_call4(Runtime_ocaml_Runtime[62],_Gl_,_aTA_,_aTz_,_aTy_); - return _aTB_} - catch(_aTC_) - {_aTC_ = caml_wrap_exception(_aTC_); - if(_aTC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gd_]; - throw _aTC_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gm_,Runtime_ocaml_Runtime[10],_aTo_); - try - {var - _aTp_=function(param){return calcul_apl_locatif_dot_aide_fi}, - _aTq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Go_,1)}, - _aTr_= - [0, - function(param) - {function _aTu_(param) - {if(0 === changement_logement_d842_4[0]) - {var - infos=changement_logement_d842_4[1], - _aTx_= - caml_call2(Runtime_ocaml_Runtime[68],infos[1],infos[2]); - return caml_call2 - (Runtime_ocaml_Runtime[68],loyer_principal,_aTx_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$288)} - function _aTv_(param) - {if(0 === changement_logement_d842_4[0]) - var - infos=changement_logement_d842_4[1], - _aTw_= - caml_call2 - (Runtime_ocaml_Runtime[72],loyer_principal,infos[1]); - else - var _aTw_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Gp_,_aTw_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Gq_,[0],_aTv_,_aTu_)}], - _aTs_=caml_call4(Runtime_ocaml_Runtime[62],_Gr_,_aTr_,_aTq_,_aTp_)} - catch(_aTt_) - {_aTt_ = caml_wrap_exception(_aTt_); - if(_aTt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gn_]; - throw _aTt_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gs_,Runtime_ocaml_Runtime[13],_aTs_); - return [0,aide_finale_formule,traitement_aide_finale]} - function calcul_allocation_logement_foy(calcul_allocation_logement_foy) - {var - redevance=calcul_allocation_logement_foy[1], - mode_occupation=calcul_allocation_logement_foy[2], - ressources_menage_arrondies=calcul_allocation_logement_foy[3], - nombre_personnes_a_charge=calcul_allocation_logement_foy[4], - situation_familiale_calcul_apl=calcul_allocation_logement_foy[5], - zone=calcul_allocation_logement_foy[6], - date_courante=calcul_allocation_logement_foy[7], - categorie_equivalence_loyer_d8=calcul_allocation_logement_foy[8]; - try - {var - _aOH_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$3)}, - _aOI_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gu_,1)}, - _aOJ_=caml_call4(Runtime_ocaml_Runtime[62],_Gv_,[0],_aOI_,_aOH_)} - catch(_aSN_) - {_aSN_ = caml_wrap_exception(_aSN_); - if(_aSN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gt_]; - throw _aSN_} - var - montant_minimal_aide_d842_15= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gw_,Runtime_ocaml_Runtime[13],_aOJ_); - try - {var - _aOK_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$2)}, - _aOL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gy_,1)}, - _aOM_=caml_call4(Runtime_ocaml_Runtime[62],_Gz_,[0],_aOL_,_aOK_)} - catch(_aSM_) - {_aSM_ = caml_wrap_exception(_aSM_); - if(_aSM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gx_]; - throw _aSM_} - var - montant_forfaitaire_d842_15= - caml_call3 - (Runtime_ocaml_Runtime[28],_GA_,Runtime_ocaml_Runtime[13],_aOM_); - try - {var - _aON_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$0)}, - _aOO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GC_,1)}, - _aOP_=caml_call4(Runtime_ocaml_Runtime[62],_GD_,[0],_aOO_,_aON_)} - catch(_aSL_) - {_aSL_ = caml_wrap_exception(_aSL_); - if(_aSL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GB_]; - throw _aSL_} - var - montant_minimal_depense_nette_= - caml_call3 - (Runtime_ocaml_Runtime[28],_GE_,Runtime_ocaml_Runtime[13],_aOP_); - try - {var - _aOQ_=function(param){return 1}, - _aOR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GG_,1)}, - _aOS_=caml_call4(Runtime_ocaml_Runtime[62],_GH_,[0],_aOR_,_aOQ_), - calcul_nombre_parts_dot_condit= - caml_call3 - (Runtime_ocaml_Runtime[28],_GI_,Runtime_ocaml_Runtime[12],_aOS_)} - catch(_aSK_) - {_aSK_ = caml_wrap_exception(_aSK_); - if(_aSK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GF_]; - throw _aSK_} - try - {var - _aOT_=function(param){return nombre_personnes_a_charge}, - _aOU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GK_,1)}, - _aOV_=caml_call4(Runtime_ocaml_Runtime[62],_GL_,[0],_aOU_,_aOT_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_GM_,Runtime_ocaml_Runtime[14],_aOV_)} - catch(_aSJ_) - {_aSJ_ = caml_wrap_exception(_aSJ_); - if(_aSJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GJ_]; - throw _aSJ_} - try - {var - _aOW_=function(param){return situation_familiale_calcul_apl}, - _aOX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GO_,1)}, - _aOY_=caml_call4(Runtime_ocaml_Runtime[62],_GP_,[0],_aOX_,_aOW_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _GQ_, - embed_situation_familiale_calc, - _aOY_)} - catch(_aSI_) - {_aSI_ = caml_wrap_exception(_aSI_); - if(_aSI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GN_]; - throw _aSI_} - var - _aOZ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_GR_,calcul_nombre_part_logement_fo), - [0, - calcul_nombre_parts_dot_condit, - calcul_nombre_parts_dot_nombre, - calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_GS_,_aOZ_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _aO0_=function(param){return date_courante}, - _aO1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GU_,1)}, - _aO2_=caml_call4(Runtime_ocaml_Runtime[62],_GV_,[0],_aO1_,_aO0_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_GW_,Runtime_ocaml_Runtime[16],_aO2_)} - catch(_aSH_) - {_aSH_ = caml_wrap_exception(_aSH_); - if(_aSH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GT_]; - throw _aSH_} - var - _aO3_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_GX_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_GY_,_aO3_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _aO4_=function(param){return mode_occupation}, - _aO5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G0_,1)}, - _aO6_=caml_call4(Runtime_ocaml_Runtime[62],_G1_,[0],_aO5_,_aO4_), - calcul_apl_logement_foyer_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_G2_,embed_mode_occupation,_aO6_)} - catch(_aSG_) - {_aSG_ = caml_wrap_exception(_aSG_); - if(_aSG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GZ_]; - throw _aSG_} - try - {var - _aO7_=function(param){return ressources_menage_arrondies}, - _aO8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G4_,1)}, - _aO9_=caml_call4(Runtime_ocaml_Runtime[62],_G5_,[0],_aO8_,_aO7_), - calcul_apl_logement_foyer_dot_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_G6_,Runtime_ocaml_Runtime[13],_aO9_)} - catch(_aSF_) - {_aSF_ = caml_wrap_exception(_aSF_); - if(_aSF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G3_]; - throw _aSF_} - try - {var - _aO__=function(param){return nombre_personnes_a_charge}, - _aO$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G8_,1)}, - _aPa_=caml_call4(Runtime_ocaml_Runtime[62],_G9_,[0],_aO$_,_aO__), - calcul_apl_logement_foyer_dot_$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_G__,Runtime_ocaml_Runtime[14],_aPa_)} - catch(_aSE_) - {_aSE_ = caml_wrap_exception(_aSE_); - if(_aSE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G7_]; - throw _aSE_} - try - {var - _aPb_=function(param){return situation_familiale_calcul_apl}, - _aPc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ha_,1)}, - _aPd_=caml_call4(Runtime_ocaml_Runtime[62],_Hb_,[0],_aPc_,_aPb_), - calcul_apl_logement_foyer_dot_$2= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hc_, - embed_situation_familiale_calc, - _aPd_)} - catch(_aSD_) - {_aSD_ = caml_wrap_exception(_aSD_); - if(_aSD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G$_]; - throw _aSD_} - try - {var - _aPe_=function(param){return zone}, - _aPf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_He_,1)}, - _aPg_=caml_call4(Runtime_ocaml_Runtime[62],_Hf_,[0],_aPf_,_aPe_), - calcul_apl_logement_foyer_dot_$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hg_,embed_zone_d_habitation,_aPg_)} - catch(_aSC_) - {_aSC_ = caml_wrap_exception(_aSC_); - if(_aSC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hd_]; - throw _aSC_} - try - {var - _aPh_=function(param){return date_courante}, - _aPi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hi_,1)}, - _aPj_=caml_call4(Runtime_ocaml_Runtime[62],_Hj_,[0],_aPi_,_aPh_), - calcul_apl_logement_foyer_dot_$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hk_,Runtime_ocaml_Runtime[16],_aPj_)} - catch(_aSB_) - {_aSB_ = caml_wrap_exception(_aSB_); - if(_aSB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hh_]; - throw _aSB_} - try - {var - _aPk_=function(param){return redevance}, - _aPl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hm_,1)}, - _aPm_=caml_call4(Runtime_ocaml_Runtime[62],_Hn_,[0],_aPl_,_aPk_), - calcul_apl_logement_foyer_dot_$5= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ho_,Runtime_ocaml_Runtime[13],_aPm_)} - catch(_aSA_) - {_aSA_ = caml_wrap_exception(_aSA_); - if(_aSA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hl_]; - throw _aSA_} - function calcul_apl_logement_foyer_dot_$6(param) - {function _aSx_(param){return 1} - function _aSy_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Hp_,1)} - var _aSz_=caml_call4(Runtime_ocaml_Runtime[62],_Hq_,[0],_aSy_,_aSx_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Hr_, - Runtime_ocaml_Runtime[12], - _aSz_)} - function calcul_apl_logement_foyer_dot_$7(param) - {throw Runtime_ocaml_Runtime[2]} - var - _aPn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Hs_,calcul_aide_personnalisee_loge$0), - [0, - calcul_apl_logement_foyer_dot_, - calcul_apl_logement_foyer_dot_$0, - calcul_apl_logement_foyer_dot_$1, - calcul_apl_logement_foyer_dot_$2, - calcul_apl_logement_foyer_dot_$3, - calcul_apl_logement_foyer_dot_$4, - calcul_apl_logement_foyer_dot_$5, - calcul_apl_logement_foyer_dot_$6, - calcul_apl_logement_foyer_dot_$7]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_Ht_,_aPn_), - calcul_apl_logement_foyer_dot_$8=result$1[7]; - try - {var - _aPo_= - function(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$289))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$3); - var - _aSt_= - caml_call1(Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _aSu_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$3), - _aSv_=caml_call2(Runtime_ocaml_Runtime[65],_aSu_,_aSt_), - _aSw_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$4); - return caml_call2(Runtime_ocaml_Runtime[67],_aSw_,_aSv_)}, - _aPp_= - function(param) - {var - _aSr_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aSs_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSr_); - return caml_call2(Runtime_ocaml_Runtime[29],_Hv_,_aSs_)}, - _aPq_=caml_call4(Runtime_ocaml_Runtime[62],_Hw_,[0],_aPp_,_aPo_)} - catch(_aSq_) - {_aSq_ = caml_wrap_exception(_aSq_); - if(_aSq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hu_]; - throw _aSq_} - var - montant_forfaitaire_charges= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hx_,Runtime_ocaml_Runtime[13],_aPq_); - try - {var - _aPr_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aPs_=function(param){return 0}, - _aPt_= - function(param) - {function _aSf_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26440)} - function _aSg_(param) - {var - _aSn_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aSo_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSn_); - if(_aSo_) - switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aSp_=0;break; - case 1:var _aSp_=1;break; - case 2:var _aSp_=0;break; - default:var _aSp_=0} - else - var _aSp_=_aSo_; - return caml_call2(Runtime_ocaml_Runtime[29],_Hz_,_aSp_)} - var - _aSh_= - [0, - function(param) - {function _aSi_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26440$0)} - function _aSj_(param) - {var - _aSk_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aSl_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSk_); - if(_aSl_) - switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aSm_=0;break; - case 1:var _aSm_=0;break; - case 2:var _aSm_=0;break; - default:var _aSm_=1} - else - var _aSm_=_aSl_; - return caml_call2(Runtime_ocaml_Runtime[29],_HA_,_aSm_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_HB_,[0],_aSj_,_aSi_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_HC_,_aSh_,_aSg_,_aSf_)}, - _aPu_= - function(param) - {function _aSa_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20640) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32073)} - function _aSb_(param) - {var - _aSc_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aSd_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSc_); - if(_aSd_) - switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aSe_=0;break; - case 1:var _aSe_=0;break; - case 2:var _aSe_=1;break; - default:var _aSe_=0} - else - var _aSe_=_aSd_; - return caml_call2(Runtime_ocaml_Runtime[29],_HD_,_aSe_)} - return caml_call4(Runtime_ocaml_Runtime[62],_HE_,[0],_aSb_,_aSa_)}, - _aPv_= - [0, - function(param) - {function _aR7_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_8414) - :caml_call1(Runtime_ocaml_Runtime[31],cst_13100)} - function _aR8_(param) - {var - _aR9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aR__= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aR9_); - if(_aR__) - switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aR$_=1;break; - case 1:var _aR$_=0;break; - case 2:var _aR$_=0;break; - default:var _aR$_=0} - else - var _aR$_=_aR__; - return caml_call2(Runtime_ocaml_Runtime[29],_HF_,_aR$_)} - return caml_call4(Runtime_ocaml_Runtime[62],_HG_,[0],_aR8_,_aR7_)}, - _aPu_, - _aPt_], - _aPw_=caml_call4(Runtime_ocaml_Runtime[62],_HH_,_aPv_,_aPs_,_aPr_)} - catch(_aR6_) - {_aR6_ = caml_wrap_exception(_aR6_); - if(_aR6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hy_]; - throw _aR6_} - var - equivalence_loyer= - caml_call3 - (Runtime_ocaml_Runtime[28],_HI_,Runtime_ocaml_Runtime[13],_aPw_); - function _aPx_(param) - {try - {var - _aR0_= - function(param$0) - {var - _aR4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$290), - _aR5_= - caml_call2 - (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_15); - return caml_call2(Runtime_ocaml_Runtime[73],_aR5_,_aR4_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$291) - :caml_call2 - (Runtime_ocaml_Runtime[68], - param, - montant_forfaitaire_d842_15)}, - _aR1_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_HK_,1)}, - _aR2_=caml_call4(Runtime_ocaml_Runtime[62],_HL_,[0],_aR1_,_aR0_); - return _aR2_} - catch(_aR3_) - {_aR3_ = caml_wrap_exception(_aR3_); - if(_aR3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HJ_]; - throw _aR3_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_HM_,Runtime_ocaml_Runtime[10],_aPx_); - try - {var - _aPy_=function(param){return ressources_menage_arrondies}, - _aPz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HO_,1)}, - _aPA_=caml_call4(Runtime_ocaml_Runtime[62],_HP_,[0],_aPz_,_aPy_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_HQ_,Runtime_ocaml_Runtime[13],_aPA_)} - catch(_aRZ_) - {_aRZ_ = caml_wrap_exception(_aRZ_); - if(_aRZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HN_]; - throw _aRZ_} - try - {var - _aPB_=function(param){return 1}, - _aPC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HS_,1)}, - _aPD_=caml_call4(Runtime_ocaml_Runtime[62],_HT_,[0],_aPC_,_aPB_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_HU_,Runtime_ocaml_Runtime[12],_aPD_)} - catch(_aRY_) - {_aRY_ = caml_wrap_exception(_aRY_); - if(_aRY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HR_]; - throw _aRY_} - try - {var - _aPE_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _aPF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HW_,1)}, - _aPG_=caml_call4(Runtime_ocaml_Runtime[62],_HX_,[0],_aPF_,_aPE_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_HY_,Runtime_ocaml_Runtime[15],_aPG_)} - catch(_aRX_) - {_aRX_ = caml_wrap_exception(_aRX_); - if(_aRX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HV_]; - throw _aRX_} - var - _aPH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_HZ_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_H0_,_aPH_), - calcul_equivalence_loyer_minim$3=result$2[1]; - try - {var - _aPI_=function(param){return calcul_apl_logement_foyer_dot_$8}, - _aPJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_H2_,1)}, - _aPK_=caml_call4(Runtime_ocaml_Runtime[62],_H3_,[0],_aPJ_,_aPI_)} - catch(_aRW_) - {_aRW_ = caml_wrap_exception(_aRW_); - if(_aRW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_H1_]; - throw _aRW_} - var - coefficient_prise_en_charge= - caml_call3 - (Runtime_ocaml_Runtime[28],_H4_,Runtime_ocaml_Runtime[15],_aPK_); - function _aPL_(param) - {try - {var - _aRR_= - function(param$0) - {var - _aRV_= - caml_call2 - (Runtime_ocaml_Runtime[67], - equivalence_loyer, - montant_forfaitaire_charges); - return caml_call2(Runtime_ocaml_Runtime[68],_aRV_,param)}, - _aRS_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_H6_,1)}, - _aRT_=caml_call4(Runtime_ocaml_Runtime[62],_H7_,[0],_aRS_,_aRR_); - return _aRT_} - catch(_aRU_) - {_aRU_ = caml_wrap_exception(_aRU_); - if(_aRU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_H5_]; - throw _aRU_}} - var - depense_nette_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_H8_,Runtime_ocaml_Runtime[10],_aPL_); - try - {var - _aPM_=function(param){return calcul_equivalence_loyer_minim$3}, - _aPN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_H__,1)}, - _aPO_=caml_call4(Runtime_ocaml_Runtime[62],_H$_,[0],_aPN_,_aPM_)} - catch(_aRQ_) - {_aRQ_ = caml_wrap_exception(_aRQ_); - if(_aRQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_H9_]; - throw _aRQ_} - var - loyer_minimal= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ia_,Runtime_ocaml_Runtime[13],_aPO_); - function _aPP_(param) - {try - {var - _aRE_= - function(param$0) - {var - _aRI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ic_, - Runtime_ocaml_Runtime[13], - param), - _aRJ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Id_,depense_nette_minimale), - _aRI_), - _aRK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ie_, - Runtime_ocaml_Runtime[13], - _aRJ_), - _aRL_=caml_call2(Runtime_ocaml_Runtime[27],_If_,_aRK_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _aRL_, - montant_minimal_depense_nette_)) - {var - _aRM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ig_, - Runtime_ocaml_Runtime[13], - param), - _aRN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Ih_,depense_nette_minimale), - _aRM_), - _aRO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ii_, - Runtime_ocaml_Runtime[13], - _aRN_), - _aRP_=caml_call2(Runtime_ocaml_Runtime[27],_Ij_,_aRO_); - return caml_call2 - (Runtime_ocaml_Runtime[68], - montant_minimal_depense_nette_, - _aRP_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$292)}, - _aRF_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ik_,1)}, - _aRG_=caml_call4(Runtime_ocaml_Runtime[62],_Il_,[0],_aRF_,_aRE_); - return _aRG_} - catch(_aRH_) - {_aRH_ = caml_wrap_exception(_aRH_); - if(_aRH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ib_]; - throw _aRH_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_Im_,Runtime_ocaml_Runtime[10],_aPP_); - try - {var - _aPQ_= - function(param) - {var - _aRC_= - caml_call2 - (Runtime_ocaml_Runtime[67], - equivalence_loyer, - montant_forfaitaire_charges), - _aRD_=caml_call2(Runtime_ocaml_Runtime[68],_aRC_,loyer_minimal); - return caml_call2 - (Runtime_ocaml_Runtime[65], - _aRD_, - coefficient_prise_en_charge)}, - _aPR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Io_,1)}, - _aPS_=caml_call4(Runtime_ocaml_Runtime[62],_Ip_,[0],_aPR_,_aPQ_)} - catch(_aRB_) - {_aRB_ = caml_wrap_exception(_aRB_); - if(_aRB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_In_]; - throw _aRB_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_Iq_,Runtime_ocaml_Runtime[13],_aPS_); - function _aPT_(param) - {try - {var - _aQ9_= - function(param$0) - {var - _aRb_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$293), - _aRc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Is_, - Runtime_ocaml_Runtime[13], - param), - _aRd_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _It_, - traitement_aide_finale_minorat), - _aRc_), - _aRe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Iu_, - Runtime_ocaml_Runtime[13], - _aRd_), - _aRf_=caml_call2(Runtime_ocaml_Runtime[27],_Iv_,_aRe_), - _aRg_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Iw_, - Runtime_ocaml_Runtime[13], - _aRf_), - _aRh_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ix_, - abattement_depense_nette_minim), - _aRg_), - _aRi_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Iy_, - Runtime_ocaml_Runtime[13], - _aRh_), - _aRj_=caml_call2(Runtime_ocaml_Runtime[27],_Iz_,_aRi_), - _aRk_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IA_, - Runtime_ocaml_Runtime[13], - param), - _aRl_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IB_, - traitement_aide_finale_minorat), - _aRk_), - _aRm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IC_, - Runtime_ocaml_Runtime[13], - _aRl_), - _aRn_=caml_call2(Runtime_ocaml_Runtime[27],_ID_,_aRm_), - _aRo_=caml_call2(Runtime_ocaml_Runtime[68],_aRn_,_aRj_); - if(caml_call2(Runtime_ocaml_Runtime[73],_aRo_,_aRb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$294); - var - _aRp_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IE_, - Runtime_ocaml_Runtime[13], - param), - _aRq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IF_, - traitement_aide_finale_minorat), - _aRp_), - _aRr_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IG_, - Runtime_ocaml_Runtime[13], - _aRq_), - _aRs_=caml_call2(Runtime_ocaml_Runtime[27],_IH_,_aRr_), - _aRt_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _II_, - Runtime_ocaml_Runtime[13], - _aRs_), - _aRu_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IJ_, - abattement_depense_nette_minim), - _aRt_), - _aRv_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IK_, - Runtime_ocaml_Runtime[13], - _aRu_), - _aRw_=caml_call2(Runtime_ocaml_Runtime[27],_IL_,_aRv_), - _aRx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IM_, - Runtime_ocaml_Runtime[13], - param), - _aRy_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IN_, - traitement_aide_finale_minorat), - _aRx_), - _aRz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IO_, - Runtime_ocaml_Runtime[13], - _aRy_), - _aRA_=caml_call2(Runtime_ocaml_Runtime[27],_IP_,_aRz_); - return caml_call2(Runtime_ocaml_Runtime[68],_aRA_,_aRw_)}, - _aQ__= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_IQ_,1)}, - _aQ$_=caml_call4(Runtime_ocaml_Runtime[62],_IR_,[0],_aQ__,_aQ9_); - return _aQ$_} - catch(_aRa_) - {_aRa_ = caml_wrap_exception(_aRa_); - if(_aRa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ir_]; - throw _aRa_}} - var - traitement_aide_finale_depense= - caml_call3 - (Runtime_ocaml_Runtime[28],_IS_,Runtime_ocaml_Runtime[10],_aPT_); - function _aPU_(param) - {try - {var - _aQY_= - function(param$0) - {var - _aQ2_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IU_, - Runtime_ocaml_Runtime[13], - param), - _aQ3_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IV_, - traitement_aide_finale_depense), - _aQ2_), - _aQ4_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IW_, - Runtime_ocaml_Runtime[13], - _aQ3_), - _aQ5_=caml_call2(Runtime_ocaml_Runtime[27],_IX_,_aQ4_); - if(caml_call2(Runtime_ocaml_Runtime[74],_aQ5_,redevance)) - return redevance; - var - _aQ6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IY_, - Runtime_ocaml_Runtime[13], - param), - _aQ7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _IZ_, - traitement_aide_finale_depense), - _aQ6_), - _aQ8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _I0_, - Runtime_ocaml_Runtime[13], - _aQ7_); - return caml_call2(Runtime_ocaml_Runtime[27],_I1_,_aQ8_)}, - _aQZ_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_I2_,1)}, - _aQ0_=caml_call4(Runtime_ocaml_Runtime[62],_I3_,[0],_aQZ_,_aQY_); - return _aQ0_} - catch(_aQ1_) - {_aQ1_ = caml_wrap_exception(_aQ1_); - if(_aQ1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IT_]; - throw _aQ1_}} - var - traitement_aide_finale_redevan= - caml_call3 - (Runtime_ocaml_Runtime[28],_I4_,Runtime_ocaml_Runtime[10],_aPU_); - function _aPV_(param) - {try - {var - _aP8_= - function(param$0) - {var - _aQa_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$295), - _aQb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _I6_, - Runtime_ocaml_Runtime[13], - param), - _aQc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _I7_, - traitement_aide_finale_redevan), - _aQb_), - _aQd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _I8_, - Runtime_ocaml_Runtime[13], - _aQc_), - _aQe_=caml_call2(Runtime_ocaml_Runtime[27],_I9_,_aQd_), - _aQf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _I__, - Runtime_ocaml_Runtime[13], - _aQe_), - _aQg_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _I$_, - contributions_sociales_dot_mon), - _aQf_), - _aQh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ja_, - Runtime_ocaml_Runtime[13], - _aQg_), - _aQi_=caml_call2(Runtime_ocaml_Runtime[27],_Jb_,_aQh_), - _aQj_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$5), - _aQk_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jc_, - Runtime_ocaml_Runtime[13], - param), - _aQl_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jd_, - traitement_aide_finale_redevan), - _aQk_), - _aQm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Je_, - Runtime_ocaml_Runtime[13], - _aQl_), - _aQn_=caml_call2(Runtime_ocaml_Runtime[27],_Jf_,_aQm_), - _aQo_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jg_, - Runtime_ocaml_Runtime[13], - _aQn_), - _aQp_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jh_, - contributions_sociales_dot_mon), - _aQo_), - _aQq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ji_, - Runtime_ocaml_Runtime[13], - _aQp_), - _aQr_=caml_call2(Runtime_ocaml_Runtime[27],_Jj_,_aQq_), - _aQs_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jk_, - Runtime_ocaml_Runtime[13], - param), - _aQt_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jl_, - traitement_aide_finale_redevan), - _aQs_), - _aQu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jm_, - Runtime_ocaml_Runtime[13], - _aQt_), - _aQv_=caml_call2(Runtime_ocaml_Runtime[27],_Jn_,_aQu_), - _aQw_=caml_call2(Runtime_ocaml_Runtime[68],_aQv_,_aQr_), - _aQx_=caml_call2(Runtime_ocaml_Runtime[68],_aQw_,_aQj_), - _aQy_=caml_call1(Runtime_ocaml_Runtime[38],_aQx_), - _aQz_=caml_call2(Runtime_ocaml_Runtime[67],_aQy_,_aQi_); - if(caml_call2(Runtime_ocaml_Runtime[72],_aQz_,_aQa_)) - {var - _aQA_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jo_, - Runtime_ocaml_Runtime[13], - param), - _aQB_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jp_, - traitement_aide_finale_redevan), - _aQA_), - _aQC_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jq_, - Runtime_ocaml_Runtime[13], - _aQB_), - _aQD_=caml_call2(Runtime_ocaml_Runtime[27],_Jr_,_aQC_), - _aQE_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Js_, - Runtime_ocaml_Runtime[13], - _aQD_), - _aQF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jt_, - contributions_sociales_dot_mon), - _aQE_), - _aQG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ju_, - Runtime_ocaml_Runtime[13], - _aQF_), - _aQH_=caml_call2(Runtime_ocaml_Runtime[27],_Jv_,_aQG_), - _aQI_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$6), - _aQJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jw_, - Runtime_ocaml_Runtime[13], - param), - _aQK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Jx_, - traitement_aide_finale_redevan), - _aQJ_), - _aQL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Jy_, - Runtime_ocaml_Runtime[13], - _aQK_), - _aQM_=caml_call2(Runtime_ocaml_Runtime[27],_Jz_,_aQL_), - _aQN_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JA_, - Runtime_ocaml_Runtime[13], - _aQM_), - _aQO_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _JB_, - contributions_sociales_dot_mon), - _aQN_), - _aQP_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JC_, - Runtime_ocaml_Runtime[13], - _aQO_), - _aQQ_=caml_call2(Runtime_ocaml_Runtime[27],_JD_,_aQP_), - _aQR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JE_, - Runtime_ocaml_Runtime[13], - param), - _aQS_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _JF_, - traitement_aide_finale_redevan), - _aQR_), - _aQT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JG_, - Runtime_ocaml_Runtime[13], - _aQS_), - _aQU_=caml_call2(Runtime_ocaml_Runtime[27],_JH_,_aQT_), - _aQV_=caml_call2(Runtime_ocaml_Runtime[68],_aQU_,_aQQ_), - _aQW_=caml_call2(Runtime_ocaml_Runtime[68],_aQV_,_aQI_), - _aQX_=caml_call1(Runtime_ocaml_Runtime[38],_aQW_); - return caml_call2(Runtime_ocaml_Runtime[67],_aQX_,_aQH_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$296)}, - _aP9_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_JI_,1)}, - _aP__=caml_call4(Runtime_ocaml_Runtime[62],_JJ_,[0],_aP9_,_aP8_); - return _aP__} - catch(_aP$_) - {_aP$_ = caml_wrap_exception(_aP$_); - if(_aP$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_I5_]; - throw _aP$_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_JK_,Runtime_ocaml_Runtime[10],_aPV_); - function _aPW_(param) - {try - {var - _aPX_= - function(param$0) - {var - _aP1_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JM_, - Runtime_ocaml_Runtime[13], - param), - _aP2_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _JN_, - traitement_aide_finale_contrib), - _aP1_), - _aP3_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JO_, - Runtime_ocaml_Runtime[13], - _aP2_), - _aP4_=caml_call2(Runtime_ocaml_Runtime[27],_JP_,_aP3_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _aP4_, - montant_minimal_aide_d842_15)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$297); - var - _aP5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JQ_, - Runtime_ocaml_Runtime[13], - param), - _aP6_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _JR_, - traitement_aide_finale_contrib), - _aP5_), - _aP7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _JS_, - Runtime_ocaml_Runtime[13], - _aP6_); - return caml_call2(Runtime_ocaml_Runtime[27],_JT_,_aP7_)}, - _aPY_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_JU_,1)}, - _aPZ_=caml_call4(Runtime_ocaml_Runtime[62],_JV_,[0],_aPY_,_aPX_); - return _aPZ_} - catch(_aP0_) - {_aP0_ = caml_wrap_exception(_aP0_); - if(_aP0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_JL_]; - throw _aP0_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_JW_,Runtime_ocaml_Runtime[10],_aPW_); - return [0, - coefficient_prise_en_charge, - equivalence_loyer, - montant_forfaitaire_charges, - loyer_minimal, - aide_finale_formule, - traitement_aide_finale_montant]} - function calcul_allocation_logement_acc(calcul_allocation_logement_acc) - {var - ressources_menage_arrondies_ba=calcul_allocation_logement_acc[1], - nombre_personnes_a_charge=calcul_allocation_logement_acc[2], - situation_familiale_calcul_apl=calcul_allocation_logement_acc[3], - zone=calcul_allocation_logement_acc[4], - date_courante=calcul_allocation_logement_acc[5], - mensualite_principale=calcul_allocation_logement_acc[6], - situation_r822_11_13_17=calcul_allocation_logement_acc[7], - date_signature_pret=calcul_allocation_logement_acc[8], - type_travaux_logement=calcul_allocation_logement_acc[9], - local_habite_premiere_fois_ben=calcul_allocation_logement_acc[10], - date_entree_logement=calcul_allocation_logement_acc[11], - charges_mensuelles_pret=calcul_allocation_logement_acc[12], - copropriete=calcul_allocation_logement_acc[13]; - try - {var - _azQ_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$3)}, - _azR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_JY_,1)}, - _azS_=caml_call4(Runtime_ocaml_Runtime[62],_JZ_,[0],_azR_,_azQ_)} - catch(_aOG_) - {_aOG_ = caml_wrap_exception(_aOG_); - if(_aOG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_JX_]; - throw _aOG_} - var - montant_forfaitaire_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_J0_,Runtime_ocaml_Runtime[13],_azS_); - try - {var - _azT_= - function(param) - {var - _aOE_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957$0), - _aOF_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$192); - return caml_call2(Runtime_ocaml_Runtime[89],_aOF_,_aOE_)}, - _azU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J2_,1)}, - _azV_=caml_call4(Runtime_ocaml_Runtime[62],_J3_,[0],_azU_,_azT_)} - catch(_aOD_) - {_aOD_ = caml_wrap_exception(_aOD_); - if(_aOD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_J1_]; - throw _aOD_} - var - taux_francs_vers_euros= - caml_call3 - (Runtime_ocaml_Runtime[28],_J4_,Runtime_ocaml_Runtime[15],_azV_); - try - {var - _azW_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$4)}, - _azX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J6_,1)}, - _azY_=caml_call4(Runtime_ocaml_Runtime[62],_J7_,[0],_azX_,_azW_)} - catch(_aOC_) - {_aOC_ = caml_wrap_exception(_aOC_); - if(_aOC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_J5_]; - throw _aOC_} - var - montant_minimal_aide_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_J8_,Runtime_ocaml_Runtime[13],_azY_); - try - {var - _azZ_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$1)}, - _az0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J__,1)}, - _az1_=caml_call4(Runtime_ocaml_Runtime[62],_J$_,[0],_az0_,_azZ_)} - catch(_aOB_) - {_aOB_ = caml_wrap_exception(_aOB_); - if(_aOB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_J9_]; - throw _aOB_} - var - montant_forfaitaire_d842_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ka_,Runtime_ocaml_Runtime[13],_az1_); - try - {var - _az2_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_390000)}, - _az3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kc_,1)}, - _az4_=caml_call4(Runtime_ocaml_Runtime[62],_Kd_,[0],_az3_,_az2_)} - catch(_aOA_) - {_aOA_ = caml_wrap_exception(_aOA_); - if(_aOA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kb_]; - throw _aOA_} - var - montant_forfaitaire_d842_12= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ke_,Runtime_ocaml_Runtime[13],_az4_); - try - {var - _az5_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$1)}, - _az6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kg_,1)}, - _az7_=caml_call4(Runtime_ocaml_Runtime[62],_Kh_,[0],_az6_,_az5_)} - catch(_aOz_) - {_aOz_ = caml_wrap_exception(_aOz_); - if(_aOz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kf_]; - throw _aOz_} - var - coefficient_d842_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ki_,Runtime_ocaml_Runtime[15],_az7_); - try - {var - _az8_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25$0)}, - _az9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kk_,1)}, - _az__=caml_call4(Runtime_ocaml_Runtime[62],_Kl_,[0],_az9_,_az8_)} - catch(_aOy_) - {_aOy_ = caml_wrap_exception(_aOy_); - if(_aOy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kj_]; - throw _aOy_} - var - coefficient_d842_12= - caml_call3 - (Runtime_ocaml_Runtime[28],_Km_,Runtime_ocaml_Runtime[15],_az__); - try - {var - _az$_=function(param){return nombre_personnes_a_charge}, - _aAa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ko_,1)}, - _aAb_=caml_call4(Runtime_ocaml_Runtime[62],_Kp_,[0],_aAa_,_az$_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_Kq_,Runtime_ocaml_Runtime[14],_aAb_)} - catch(_aOx_) - {_aOx_ = caml_wrap_exception(_aOx_); - if(_aOx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kn_]; - throw _aOx_} - try - {var - _aAc_=function(param){return situation_familiale_calcul_apl}, - _aAd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ks_,1)}, - _aAe_=caml_call4(Runtime_ocaml_Runtime[62],_Kt_,[0],_aAd_,_aAc_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ku_, - embed_situation_familiale_calc, - _aAe_)} - catch(_aOw_) - {_aOw_ = caml_wrap_exception(_aOw_); - if(_aOw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kr_]; - throw _aOw_} - var - _aAf_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Kv_,calcul_nombre_parts_accession_), - [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Kw_,_aAf_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _aAg_=function(param){return date_courante}, - _aAh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ky_,1)}, - _aAi_=caml_call4(Runtime_ocaml_Runtime[62],_Kz_,[0],_aAh_,_aAg_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_KA_,Runtime_ocaml_Runtime[16],_aAi_)} - catch(_aOv_) - {_aOv_ = caml_wrap_exception(_aOv_); - if(_aOv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Kx_]; - throw _aOv_} - var - _aAj_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_KB_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_KC_,_aAj_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _aAk_= - function(param) - {if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$298))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$5); - var - _aOr_= - caml_call1(Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _aOs_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$4), - _aOt_=caml_call2(Runtime_ocaml_Runtime[65],_aOs_,_aOr_), - _aOu_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$6); - return caml_call2(Runtime_ocaml_Runtime[67],_aOu_,_aOt_)}, - _aAl_= - function(param) - {var - _aOp_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aOq_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aOp_); - return caml_call2(Runtime_ocaml_Runtime[29],_KE_,_aOq_)}, - _aAm_= - [0, - function(param) - {function _aOh_(param) - {var - _aOl_= - caml_call1 - (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge), - _aOm_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$5), - _aOn_=caml_call2(Runtime_ocaml_Runtime[65],_aOm_,_aOl_), - _aOo_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$1) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$7); - return caml_call2(Runtime_ocaml_Runtime[67],_aOo_,_aOn_)} - function _aOi_(param) - {var - _aOj_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aOk_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aOj_), - copropriete$0=_aOk_?copropriete:_aOk_; - return caml_call2(Runtime_ocaml_Runtime[29],_KF_,copropriete$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_KG_,[0],_aOi_,_aOh_)}], - _aAn_=caml_call4(Runtime_ocaml_Runtime[62],_KH_,_aAm_,_aAl_,_aAk_)} - catch(_aOg_) - {_aOg_ = caml_wrap_exception(_aOg_); - if(_aOg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KD_]; - throw _aOg_} - var - montant_forfaitaire_charges= - caml_call3 - (Runtime_ocaml_Runtime[28],_KI_,Runtime_ocaml_Runtime[13],_aAn_); - function _aAo_(param) - {try - {var - _aOa_= - function(param$0) - {var - _aOe_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$299), - _aOf_= - caml_call2 - (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_6); - return caml_call2(Runtime_ocaml_Runtime[73],_aOf_,_aOe_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$300) - :caml_call2 - (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_6)}, - _aOb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_KK_,1)}, - _aOc_=caml_call4(Runtime_ocaml_Runtime[62],_KL_,[0],_aOb_,_aOa_); - return _aOc_} - catch(_aOd_) - {_aOd_ = caml_wrap_exception(_aOd_); - if(_aOd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KJ_]; - throw _aOd_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_KM_,Runtime_ocaml_Runtime[10],_aAo_); - function _aAp_(param) - {try - {var - _aEL_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aEM_=function(param){return 0}, - _aEN_= - function(param$0) - {function _aNO_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$301))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31476) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37933); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$193))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40787); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$41))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41927); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$20))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43106); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$16))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44262); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$3))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_45200); - var - _aNU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$4), - _aNV_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNU_), - _aNW_=caml_call1(Runtime_ocaml_Runtime[41],_aNV_), - _aNX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3936), - _aNY_=caml_call2(Runtime_ocaml_Runtime[65],_aNX_,_aNW_), - _aNZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_45200$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNZ_,_aNY_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$302))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27614) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33853); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$194))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36646); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$42))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37915); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$21))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39222); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$17))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40510); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$5))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43378); - var - _aN0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$6), - _aN1_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aN0_), - _aN2_=caml_call1(Runtime_ocaml_Runtime[41],_aN1_), - _aN3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3771), - _aN4_=caml_call2(Runtime_ocaml_Runtime[65],_aN3_,_aN2_), - _aN5_=caml_call1(Runtime_ocaml_Runtime[31],cst_43378$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aN5_,_aN4_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$303))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25904) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31419); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$195))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34255); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$43))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35670); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$22))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37107); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$18))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38521); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$7))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41392); - var - _aN6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$8), - _aN7_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aN6_), - _aN8_=caml_call1(Runtime_ocaml_Runtime[41],_aN7_), - _aN9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3588), - _aN__=caml_call2(Runtime_ocaml_Runtime[65],_aN9_,_aN8_), - _aN$_=caml_call1(Runtime_ocaml_Runtime[31],cst_41392$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aN$_,_aN__)}} - function _aNP_(param$0) - {var - _aNQ_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aNR_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aNQ_); - if(_aNR_) - var - _aNS_=caml_call3(Runtime_ocaml_Runtime[56],2019,10,1), - _aNT_=caml_call2(Runtime_ocaml_Runtime[98],param,_aNS_); - else - var _aNT_=_aNR_; - return caml_call2(Runtime_ocaml_Runtime[29],_KO_,_aNT_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KP_,[0],_aNP_,_aNO_)}, - _aEO_= - function(param$0) - {function _aNo_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$304))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31382) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37820); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$196))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40665); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$44))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41801); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$23))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42977); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$19))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44130); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$9))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_45064); - var - _aNw_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$10), - _aNx_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNw_), - _aNy_=caml_call1(Runtime_ocaml_Runtime[41],_aNx_), - _aNz_=caml_call1(Runtime_ocaml_Runtime[31],cst_3924), - _aNA_=caml_call2(Runtime_ocaml_Runtime[65],_aNz_,_aNy_), - _aNB_=caml_call1(Runtime_ocaml_Runtime[31],cst_45064$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNB_,_aNA_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$305))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27531) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33751); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$197))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36536); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$45))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37801); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$24))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39105); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$20))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40389); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$11))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43248); - var - _aNC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$12), - _aND_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNC_), - _aNE_=caml_call1(Runtime_ocaml_Runtime[41],_aND_), - _aNF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3760), - _aNG_=caml_call2(Runtime_ocaml_Runtime[65],_aNF_,_aNE_), - _aNH_=caml_call1(Runtime_ocaml_Runtime[31],cst_43248$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNH_,_aNG_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$306))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25826) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31325); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$198))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34152); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$46))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35564); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$25))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36996); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$21))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38406); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$13))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41268); - var - _aNI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$14), - _aNJ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNI_), - _aNK_=caml_call1(Runtime_ocaml_Runtime[41],_aNJ_), - _aNL_=caml_call1(Runtime_ocaml_Runtime[31],cst_3578), - _aNM_=caml_call2(Runtime_ocaml_Runtime[65],_aNL_,_aNK_), - _aNN_=caml_call1(Runtime_ocaml_Runtime[31],cst_41268$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNN_,_aNM_)}} - function _aNp_(param$0) - {var - _aNq_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aNr_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aNq_); - if(_aNr_) - {var - _aNs_=caml_call3(Runtime_ocaml_Runtime[56],2017,10,1), - _aNt_=caml_call2(Runtime_ocaml_Runtime[98],param,_aNs_); - if(_aNt_) - var - _aNu_=caml_call3(Runtime_ocaml_Runtime[56],2019,10,1), - _aNv_=caml_call2(Runtime_ocaml_Runtime[101],param,_aNu_); - else - var _aNv_=_aNt_} - else - var _aNv_=_aNr_; - return caml_call2(Runtime_ocaml_Runtime[29],_KQ_,_aNv_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KR_,[0],_aNp_,_aNo_)}, - _aEP_= - function(param$0) - {function _aM0_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$307))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31148) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37538); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$199))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40362); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$47))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41490); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$26))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42657); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$22))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43801); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$15))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44729); - var - _aM8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$16), - _aM9_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aM8_), - _aM__=caml_call1(Runtime_ocaml_Runtime[41],_aM9_), - _aM$_=caml_call1(Runtime_ocaml_Runtime[31],cst_3895), - _aNa_=caml_call2(Runtime_ocaml_Runtime[65],_aM$_,_aM__), - _aNb_=caml_call1(Runtime_ocaml_Runtime[31],cst_44729$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNb_,_aNa_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$308))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27326) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33500$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$200))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36264); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$48))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37520); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$27))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38814); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$23))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40088); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$17))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42926); - var - _aNc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$18), - _aNd_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNc_), - _aNe_=caml_call1(Runtime_ocaml_Runtime[41],_aNd_), - _aNf_=caml_call1(Runtime_ocaml_Runtime[31],cst_3732), - _aNg_=caml_call2(Runtime_ocaml_Runtime[65],_aNf_,_aNe_), - _aNh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42926$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNh_,_aNg_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$309))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25634) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31092); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$201))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33898); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$49))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35299); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$28))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36721); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$24))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38120); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$19))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40961); - var - _aNi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$20), - _aNj_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNi_), - _aNk_=caml_call1(Runtime_ocaml_Runtime[41],_aNj_), - _aNl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3551), - _aNm_=caml_call2(Runtime_ocaml_Runtime[65],_aNl_,_aNk_), - _aNn_=caml_call1(Runtime_ocaml_Runtime[31],cst_40961$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aNn_,_aNm_)}} - function _aM1_(param$0) - {var - _aM2_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aM3_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aM2_); - if(_aM3_) - {var - _aM4_=caml_call3(Runtime_ocaml_Runtime[56],2015,10,1), - _aM5_=caml_call2(Runtime_ocaml_Runtime[98],param,_aM4_); - if(_aM5_) - var - _aM6_=caml_call3(Runtime_ocaml_Runtime[56],2017,10,1), - _aM7_=caml_call2(Runtime_ocaml_Runtime[101],param,_aM6_); - else - var _aM7_=_aM5_} - else - var _aM7_=_aM3_; - return caml_call2(Runtime_ocaml_Runtime[29],_KS_,_aM7_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KT_,[0],_aM1_,_aM0_)}, - _aEQ_= - function(param$0) - {function _aMA_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$310))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31123) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37508); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$202))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40330); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$50))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41457); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$29))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42623); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$25))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43766); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$21))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44693); - var - _aMI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$22), - _aMJ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMI_), - _aMK_=caml_call1(Runtime_ocaml_Runtime[41],_aMJ_), - _aML_=caml_call1(Runtime_ocaml_Runtime[31],cst_3892), - _aMM_=caml_call2(Runtime_ocaml_Runtime[65],_aML_,_aMK_), - _aMN_=caml_call1(Runtime_ocaml_Runtime[31],cst_44693$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aMN_,_aMM_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$311))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27304) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33473); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$203))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36235); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$51))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37490); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$30))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38783); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$26))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40056); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$23))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42892); - var - _aMO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$24), - _aMP_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMO_), - _aMQ_=caml_call1(Runtime_ocaml_Runtime[41],_aMP_), - _aMR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3729), - _aMS_=caml_call2(Runtime_ocaml_Runtime[65],_aMR_,_aMQ_), - _aMT_=caml_call1(Runtime_ocaml_Runtime[31],cst_42892$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aMT_,_aMS_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$312))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25614) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31067); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$204))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33871); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$52))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35271); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$31))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36692); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$27))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38090); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$25))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40928); - var - _aMU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$26), - _aMV_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMU_), - _aMW_=caml_call1(Runtime_ocaml_Runtime[41],_aMV_), - _aMX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3548), - _aMY_=caml_call2(Runtime_ocaml_Runtime[65],_aMX_,_aMW_), - _aMZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_40928$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aMZ_,_aMY_)}} - function _aMB_(param$0) - {var - _aMC_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aMD_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aMC_); - if(_aMD_) - {var - _aME_=caml_call3(Runtime_ocaml_Runtime[56],2014,10,1), - _aMF_=caml_call2(Runtime_ocaml_Runtime[98],param,_aME_); - if(_aMF_) - var - _aMG_=caml_call3(Runtime_ocaml_Runtime[56],2015,10,1), - _aMH_=caml_call2(Runtime_ocaml_Runtime[101],param,_aMG_); - else - var _aMH_=_aMF_} - else - var _aMH_=_aMD_; - return caml_call2(Runtime_ocaml_Runtime[29],_KU_,_aMH_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KV_,[0],_aMB_,_aMA_)}, - _aER_= - function(param$0) - {function _aMa_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$313))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30947) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37295); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$205))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40101); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$53))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41222); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$32))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42381); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$28))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43518); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$27))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44440); - var - _aMi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$28), - _aMj_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMi_), - _aMk_=caml_call1(Runtime_ocaml_Runtime[41],_aMj_), - _aMl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3870), - _aMm_=caml_call2(Runtime_ocaml_Runtime[65],_aMl_,_aMk_), - _aMn_=caml_call1(Runtime_ocaml_Runtime[31],cst_44440$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aMn_,_aMm_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$314))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27149) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33283); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$206))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36030); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$54))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37278); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$33))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38563); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$29))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39829); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$29))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42649); - var - _aMo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$30), - _aMp_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMo_), - _aMq_=caml_call1(Runtime_ocaml_Runtime[41],_aMp_), - _aMr_=caml_call1(Runtime_ocaml_Runtime[31],cst_3708), - _aMs_=caml_call2(Runtime_ocaml_Runtime[65],_aMr_,_aMq_), - _aMt_=caml_call1(Runtime_ocaml_Runtime[31],cst_42659); - return caml_call2(Runtime_ocaml_Runtime[67],_aMt_,_aMs_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$315))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25469) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30891); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$207))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33679); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$55))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35071); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$34))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36484); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$30))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37874); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$31))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40696); - var - _aMu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$32), - _aMv_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMu_), - _aMw_=caml_call1(Runtime_ocaml_Runtime[41],_aMv_), - _aMx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3528), - _aMy_=caml_call2(Runtime_ocaml_Runtime[65],_aMx_,_aMw_), - _aMz_=caml_call1(Runtime_ocaml_Runtime[31],cst_40696$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aMz_,_aMy_)}} - function _aMb_(param$0) - {var - _aMc_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aMd_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aMc_); - if(_aMd_) - {var - _aMe_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1), - _aMf_=caml_call2(Runtime_ocaml_Runtime[98],param,_aMe_); - if(_aMf_) - var - _aMg_=caml_call3(Runtime_ocaml_Runtime[56],2014,10,1), - _aMh_=caml_call2(Runtime_ocaml_Runtime[101],param,_aMg_); - else - var _aMh_=_aMf_} - else - var _aMh_=_aMd_; - return caml_call2(Runtime_ocaml_Runtime[29],_KW_,_aMh_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KX_,[0],_aMb_,_aMa_)}, - _aES_= - function(param$0) - {function _aLM_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$316))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30296) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36510); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$208))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39257); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$56))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40354); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$35))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41489); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$31))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42602); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$33))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43505); - var - _aLU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$34), - _aLV_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLU_), - _aLW_=caml_call1(Runtime_ocaml_Runtime[41],_aLV_), - _aLX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3789), - _aLY_=caml_call2(Runtime_ocaml_Runtime[65],_aLX_,_aLW_), - _aLZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_43505$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLZ_,_aLY_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$317))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26578) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32582); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$209))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35272); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$57))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36493); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$36))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37751); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$32))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38991); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$35))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41751); - var - _aL0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$36), - _aL1_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aL0_), - _aL2_=caml_call1(Runtime_ocaml_Runtime[41],_aL1_), - _aL3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3630), - _aL4_=caml_call2(Runtime_ocaml_Runtime[65],_aL3_,_aL2_), - _aL5_=caml_call1(Runtime_ocaml_Runtime[31],cst_41751$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aL5_,_aL4_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$318))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24933) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30241); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$210))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32970); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$58))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34333); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$37))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35716); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$33))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37077); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$37))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39839); - var - _aL6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$38), - _aL7_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aL6_), - _aL8_=caml_call1(Runtime_ocaml_Runtime[41],_aL7_), - _aL9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3454), - _aL__=caml_call2(Runtime_ocaml_Runtime[65],_aL9_,_aL8_), - _aL$_=caml_call1(Runtime_ocaml_Runtime[31],cst_39839$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aL$_,_aL__)}} - function _aLN_(param$0) - {var - _aLO_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aLP_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aLO_); - if(_aLP_) - {var - _aLQ_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1), - _aLR_=caml_call2(Runtime_ocaml_Runtime[98],param,_aLQ_); - if(_aLR_) - var - _aLS_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1), - _aLT_=caml_call2(Runtime_ocaml_Runtime[101],param,_aLS_); - else - var _aLT_=_aLR_} - else - var _aLT_=_aLP_; - return caml_call2(Runtime_ocaml_Runtime[29],_KY_,_aLT_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_KZ_,[0],_aLN_,_aLM_)}, - _aET_= - function(param$0) - {function _aLm_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$319))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29996) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36149); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$211))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38868); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$59))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39954); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$38))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41078); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$34))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42180); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$39))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43074); - var - _aLu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$40), - _aLv_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLu_), - _aLw_=caml_call1(Runtime_ocaml_Runtime[41],_aLv_), - _aLx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3751), - _aLy_=caml_call2(Runtime_ocaml_Runtime[65],_aLx_,_aLw_), - _aLz_=caml_call1(Runtime_ocaml_Runtime[31],cst_43074$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLz_,_aLy_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$320))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26315) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32259); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$212))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34923); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$60))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36132); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$39))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37373); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$35))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38605); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$41))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41338); - var - _aLA_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$42), - _aLB_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLA_), - _aLC_=caml_call1(Runtime_ocaml_Runtime[41],_aLB_), - _aLD_=caml_call1(Runtime_ocaml_Runtime[31],cst_3594), - _aLE_=caml_call2(Runtime_ocaml_Runtime[65],_aLD_,_aLC_), - _aLF_=caml_call1(Runtime_ocaml_Runtime[31],cst_41338$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLF_,_aLE_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$321))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29942); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$213))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32644); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$61))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33993); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$40))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35362); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$36))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36710); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$43))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39445); - var - _aLG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$44), - _aLH_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLG_), - _aLI_=caml_call1(Runtime_ocaml_Runtime[41],_aLH_), - _aLJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3420), - _aLK_=caml_call2(Runtime_ocaml_Runtime[65],_aLJ_,_aLI_), - _aLL_=caml_call1(Runtime_ocaml_Runtime[31],cst_39445$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLL_,_aLK_)}} - function _aLn_(param$0) - {var - _aLo_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aLp_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aLo_); - if(_aLp_) - {var - _aLq_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1), - _aLr_=caml_call2(Runtime_ocaml_Runtime[98],param,_aLq_); - if(_aLr_) - var - _aLs_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1), - _aLt_=caml_call2(Runtime_ocaml_Runtime[101],param,_aLs_); - else - var _aLt_=_aLr_} - else - var _aLt_=_aLp_; - return caml_call2(Runtime_ocaml_Runtime[29],_K0_,_aLt_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K1_,[0],_aLn_,_aLm_)}, - _aEU_= - function(param$0) - {function _aKY_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$322))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29670) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35757); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$214))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38445); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$62))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39519); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$41))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40601); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$37))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41721); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$45))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42605); - var - _aK6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$46), - _aK7_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aK6_), - _aK8_=caml_call1(Runtime_ocaml_Runtime[41],_aK7_), - _aK9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3710), - _aK__=caml_call2(Runtime_ocaml_Runtime[65],_aK9_,_aK8_), - _aK$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42605$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aK$_,_aK__); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$323))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26029) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31908); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$215))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34643); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$63))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35739); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$42))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36970); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$38))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38185); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$47))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40888); - var - _aLa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$48), - _aLb_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLa_), - _aLc_=caml_call1(Runtime_ocaml_Runtime[41],_aLb_), - _aLd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3555), - _aLe_=caml_call2(Runtime_ocaml_Runtime[65],_aLd_,_aLc_), - _aLf_=caml_call1(Runtime_ocaml_Runtime[31],cst_40888$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLf_,_aLe_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$324))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24417) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29616); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$216))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32289); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$64))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33623$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$43))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34977); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$39))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36311); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$49))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39016); - var - _aLg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$50), - _aLh_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLg_), - _aLi_=caml_call1(Runtime_ocaml_Runtime[41],_aLh_), - _aLj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3383), - _aLk_=caml_call2(Runtime_ocaml_Runtime[65],_aLj_,_aLi_), - _aLl_=caml_call1(Runtime_ocaml_Runtime[31],cst_39016$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aLl_,_aLk_)}} - function _aKZ_(param$0) - {var - _aK0_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aK1_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aK0_); - if(_aK1_) - {var - _aK2_=caml_call3(Runtime_ocaml_Runtime[56],2010,1,1), - _aK3_=caml_call2(Runtime_ocaml_Runtime[98],param,_aK2_); - if(_aK3_) - var - _aK4_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1), - _aK5_=caml_call2(Runtime_ocaml_Runtime[101],param,_aK4_); - else - var _aK5_=_aK3_} - else - var _aK5_=_aK1_; - return caml_call2(Runtime_ocaml_Runtime[29],_K2_,_aK5_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K3_,[0],_aKZ_,_aKY_)}, - _aEV_= - function(param$0) - {function _aKy_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$325))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29575) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35642); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$217))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38322); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$65))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39393); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$44))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40501); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$40))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41588); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$51))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42469); - var - _aKG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$52), - _aKH_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKG_), - _aKI_=caml_call1(Runtime_ocaml_Runtime[41],_aKH_), - _aKJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3698), - _aKK_=caml_call2(Runtime_ocaml_Runtime[65],_aKJ_,_aKI_), - _aKL_=caml_call1(Runtime_ocaml_Runtime[31],cst_42469$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKL_,_aKK_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$326))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25946) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31806); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$218))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34433); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$66))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35625); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$45))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36852); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$41))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38063); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$53))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40758); - var - _aKM_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$54), - _aKN_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKM_), - _aKO_=caml_call1(Runtime_ocaml_Runtime[41],_aKN_), - _aKP_=caml_call1(Runtime_ocaml_Runtime[31],cst_3544), - _aKQ_=caml_call2(Runtime_ocaml_Runtime[65],_aKP_,_aKO_), - _aKR_=caml_call1(Runtime_ocaml_Runtime[31],cst_40758$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKR_,_aKQ_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$327))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24339) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29522); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$219))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32186); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$67))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33516); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$46))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34865); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$42))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36195); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$55))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38892); - var - _aKS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$56), - _aKT_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKS_), - _aKU_=caml_call1(Runtime_ocaml_Runtime[41],_aKT_), - _aKV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3372), - _aKW_=caml_call2(Runtime_ocaml_Runtime[65],_aKV_,_aKU_), - _aKX_=caml_call1(Runtime_ocaml_Runtime[31],cst_38892$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKX_,_aKW_)}} - function _aKz_(param$0) - {var - _aKA_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aKB_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aKA_); - if(_aKB_) - {var - _aKC_=caml_call3(Runtime_ocaml_Runtime[56],2009,1,1), - _aKD_=caml_call2(Runtime_ocaml_Runtime[98],param,_aKC_); - if(_aKD_) - var - _aKE_=caml_call3(Runtime_ocaml_Runtime[56],2010,1,1), - _aKF_=caml_call2(Runtime_ocaml_Runtime[101],param,_aKE_); - else - var _aKF_=_aKD_} - else - var _aKF_=_aKB_; - return caml_call2(Runtime_ocaml_Runtime[29],_K4_,_aKF_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K5_,[0],_aKz_,_aKy_)}, - _aEW_= - function(param$0) - {function _aJ__(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$328))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34621); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$220))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37224); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$68))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38264); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$47))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39340$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$43))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40396); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$57))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41252); - var - _aKg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$58), - _aKh_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKg_), - _aKi_=caml_call1(Runtime_ocaml_Runtime[41],_aKh_), - _aKj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3592), - _aKk_=caml_call2(Runtime_ocaml_Runtime[65],_aKj_,_aKi_), - _aKl_=caml_call1(Runtime_ocaml_Runtime[31],cst_41252$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKl_,_aKk_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$329))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25203) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30895); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$221))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33446); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$69))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34604); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$48))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35796); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$44))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36972); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$59))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39590); - var - _aKm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$60), - _aKn_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKm_), - _aKo_=caml_call1(Runtime_ocaml_Runtime[41],_aKn_), - _aKp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3442), - _aKq_=caml_call2(Runtime_ocaml_Runtime[65],_aKp_,_aKo_), - _aKr_=caml_call1(Runtime_ocaml_Runtime[31],cst_39590$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKr_,_aKq_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$330))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23642) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28676); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$222))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31264$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$70))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32556); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$49))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33866); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$45))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35158); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$61))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37778); - var - _aKs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$62), - _aKt_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKs_), - _aKu_=caml_call1(Runtime_ocaml_Runtime[41],_aKt_), - _aKv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3275), - _aKw_=caml_call2(Runtime_ocaml_Runtime[65],_aKv_,_aKu_), - _aKx_=caml_call1(Runtime_ocaml_Runtime[31],cst_37778$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aKx_,_aKw_)}} - function _aJ$_(param$0) - {var - _aKa_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aKb_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aKa_); - if(_aKb_) - {var - _aKc_=caml_call3(Runtime_ocaml_Runtime[56],2008,1,1), - _aKd_=caml_call2(Runtime_ocaml_Runtime[98],param,_aKc_); - if(_aKd_) - var - _aKe_=caml_call3(Runtime_ocaml_Runtime[56],2009,1,1), - _aKf_=caml_call2(Runtime_ocaml_Runtime[101],param,_aKe_); - else - var _aKf_=_aKd_} - else - var _aKf_=_aKb_; - return caml_call2(Runtime_ocaml_Runtime[29],_K6_,_aKf_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K7_,[0],_aJ$_,_aJ__)}, - _aEX_= - function(param$0) - {function _aJK_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$331))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27956) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33691); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$223))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36224); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$71))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37236); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$50))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38283); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$46))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39311); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$63))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40144); - var - _aJS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$64), - _aJT_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJS_), - _aJU_=caml_call1(Runtime_ocaml_Runtime[41],_aJT_), - _aJV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3496), - _aJW_=caml_call2(Runtime_ocaml_Runtime[65],_aJV_,_aJU_), - _aJX_=caml_call1(Runtime_ocaml_Runtime[31],cst_40144$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJX_,_aJW_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$332))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24526) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30065); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$224))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32548); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$72))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33675); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$51))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34865$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$47))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35979); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$65))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38527); - var - _aJY_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$66), - _aJZ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJY_), - _aJ0_=caml_call1(Runtime_ocaml_Runtime[41],_aJZ_), - _aJ1_=caml_call1(Runtime_ocaml_Runtime[31],cst_3350), - _aJ2_=caml_call2(Runtime_ocaml_Runtime[65],_aJ1_,_aJ0_), - _aJ3_=caml_call1(Runtime_ocaml_Runtime[31],cst_38527$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJ3_,_aJ2_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$333))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23007) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27906); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$225))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30424); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$73))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31682); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$52))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32956$0); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$48))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34214); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$67))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36733); - var - _aJ4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$68), - _aJ5_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJ4_), - _aJ6_=caml_call1(Runtime_ocaml_Runtime[41],_aJ5_), - _aJ7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3187), - _aJ8_=caml_call2(Runtime_ocaml_Runtime[65],_aJ7_,_aJ6_), - _aJ9_=caml_call1(Runtime_ocaml_Runtime[31],cst_36733$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJ9_,_aJ8_)}} - function _aJL_(param$0) - {var - _aJM_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aJN_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aJM_); - if(_aJN_) - {var - _aJO_=caml_call3(Runtime_ocaml_Runtime[56],2007,1,1), - _aJP_=caml_call2(Runtime_ocaml_Runtime[98],param,_aJO_); - if(_aJP_) - var - _aJQ_=caml_call3(Runtime_ocaml_Runtime[56],2008,1,1), - _aJR_=caml_call2(Runtime_ocaml_Runtime[101],param,_aJQ_); - else - var _aJR_=_aJP_} - else - var _aJR_=_aJN_; - return caml_call2(Runtime_ocaml_Runtime[29],_K8_,_aJR_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K9_,[0],_aJL_,_aJK_)}, - _aEY_= - function(param$0) - {function _aJk_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$334))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27195) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32773); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$226))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35237); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$74))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36222); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$53))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37240); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$49))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38240); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$69))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39051); - var - _aJs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$70), - _aJt_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJs_), - _aJu_=caml_call1(Runtime_ocaml_Runtime[41],_aJt_), - _aJv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3401), - _aJw_=caml_call2(Runtime_ocaml_Runtime[65],_aJv_,_aJu_), - _aJx_=caml_call1(Runtime_ocaml_Runtime[31],cst_39051$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJx_,_aJw_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$335))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23858) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29246); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$227))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31661); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$75))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32758); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$54))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33886); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$50))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34999); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$71))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37478); - var - _aJy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$72), - _aJz_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJy_), - _aJA_=caml_call1(Runtime_ocaml_Runtime[41],_aJz_), - _aJB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3259), - _aJC_=caml_call2(Runtime_ocaml_Runtime[65],_aJB_,_aJA_), - _aJD_=caml_call1(Runtime_ocaml_Runtime[31],cst_37478$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJD_,_aJC_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$336))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22380) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27146); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$228))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29595); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$76))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30819); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$55))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32058); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$51))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33282); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$73))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35762); - var - _aJE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$74), - _aJF_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJE_), - _aJG_=caml_call1(Runtime_ocaml_Runtime[41],_aJF_), - _aJH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3100), - _aJI_=caml_call2(Runtime_ocaml_Runtime[65],_aJH_,_aJG_), - _aJJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35762$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJJ_,_aJI_)}} - function _aJl_(param$0) - {var - _aJm_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aJn_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aJm_); - if(_aJn_) - {var - _aJo_=caml_call3(Runtime_ocaml_Runtime[56],2005,9,1), - _aJp_=caml_call2(Runtime_ocaml_Runtime[98],param,_aJo_); - if(_aJp_) - var - _aJq_=caml_call3(Runtime_ocaml_Runtime[56],2007,1,1), - _aJr_=caml_call2(Runtime_ocaml_Runtime[101],param,_aJq_); - else - var _aJr_=_aJp_} - else - var _aJr_=_aJn_; - return caml_call2(Runtime_ocaml_Runtime[29],_K__,_aJr_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_K$_,[0],_aJl_,_aJk_)}, - _aEZ_= - function(param$0) - {function _aIW_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$337))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26714$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32194); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$229))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34614); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$77))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35582); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$56))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36582); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$52))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37564); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$75))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38361); - var - _aI4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$76), - _aI5_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aI4_), - _aI6_=caml_call1(Runtime_ocaml_Runtime[41],_aI5_), - _aI7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3341), - _aI8_=caml_call2(Runtime_ocaml_Runtime[65],_aI7_,_aI6_), - _aI9_=caml_call1(Runtime_ocaml_Runtime[31],cst_38361$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aI9_,_aI8_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$338))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23436) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28729); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$230))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31101); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$78))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32179); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$57))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33287); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$53))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34380); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$77))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36815); - var - _aI__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$78), - _aI$_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aI__), - _aJa_=caml_call1(Runtime_ocaml_Runtime[41],_aI$_), - _aJb_=caml_call1(Runtime_ocaml_Runtime[31],cst_3201), - _aJc_=caml_call2(Runtime_ocaml_Runtime[65],_aJb_,_aJa_), - _aJd_=caml_call1(Runtime_ocaml_Runtime[31],cst_36815$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJd_,_aJc_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$339))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21984) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26666); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$231))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29072); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$79))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30274); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$58))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31491); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$54))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32694); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$79))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35130); - var - _aJe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$80), - _aJf_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJe_), - _aJg_=caml_call1(Runtime_ocaml_Runtime[41],_aJf_), - _aJh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3045), - _aJi_=caml_call2(Runtime_ocaml_Runtime[65],_aJh_,_aJg_), - _aJj_=caml_call1(Runtime_ocaml_Runtime[31],cst_35130$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aJj_,_aJi_)}} - function _aIX_(param$0) - {var - _aIY_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aIZ_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aIY_); - if(_aIZ_) - {var - _aI0_=caml_call3(Runtime_ocaml_Runtime[56],2003,7,1), - _aI1_=caml_call2(Runtime_ocaml_Runtime[98],param,_aI0_); - if(_aI1_) - var - _aI2_=caml_call3(Runtime_ocaml_Runtime[56],2005,9,1), - _aI3_=caml_call2(Runtime_ocaml_Runtime[101],param,_aI2_); - else - var _aI3_=_aI1_} - else - var _aI3_=_aIZ_; - return caml_call2(Runtime_ocaml_Runtime[29],_La_,_aI3_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lb_,[0],_aIX_,_aIW_)}, - _aE0_= - function(param$0) - {function _aIw_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$340))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26397) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31812); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$232))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34204); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$80))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35160); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$59))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36148); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$55))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37119); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$81))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37906); - var - _aIE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$82), - _aIF_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIE_), - _aIG_=caml_call1(Runtime_ocaml_Runtime[41],_aIF_), - _aIH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3301), - _aII_=caml_call2(Runtime_ocaml_Runtime[65],_aIH_,_aIG_), - _aIJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_37906$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIJ_,_aII_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$341))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23158) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28388); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$233))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30732); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$81))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$1); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$60))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32892); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$56))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33972); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$83))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36378); - var - _aIK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$84), - _aIL_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIK_), - _aIM_=caml_call1(Runtime_ocaml_Runtime[41],_aIL_), - _aIN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3163), - _aIO_=caml_call2(Runtime_ocaml_Runtime[65],_aIN_,_aIM_), - _aIP_=caml_call1(Runtime_ocaml_Runtime[31],cst_36378$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIP_,_aIO_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$342))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21723) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26350); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$234))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_28727); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$82))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29915); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$61))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31118); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$57))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32306); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$85))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34713); - var - _aIQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$86), - _aIR_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIQ_), - _aIS_=caml_call1(Runtime_ocaml_Runtime[41],_aIR_), - _aIT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3009), - _aIU_=caml_call2(Runtime_ocaml_Runtime[65],_aIT_,_aIS_), - _aIV_=caml_call1(Runtime_ocaml_Runtime[31],cst_34713$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIV_,_aIU_)}} - function _aIx_(param$0) - {var - _aIy_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aIz_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aIy_); - if(_aIz_) - {var - _aIA_=caml_call3(Runtime_ocaml_Runtime[56],2002,7,1), - _aIB_=caml_call2(Runtime_ocaml_Runtime[98],param,_aIA_); - if(_aIB_) - var - _aIC_=caml_call3(Runtime_ocaml_Runtime[56],2003,7,1), - _aID_=caml_call2(Runtime_ocaml_Runtime[101],param,_aIC_); - else - var _aID_=_aIB_} - else - var _aID_=_aIz_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lc_,_aID_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Ld_,[0],_aIx_,_aIw_)}, - _aE1_= - function(param$0) - {function _aH8_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$343))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26084) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31435); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$235))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33798); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$83))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34743); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$62))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35719); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$58))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36679); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$87))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37457); - var - _aIe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$88), - _aIf_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIe_), - _aIg_=caml_call1(Runtime_ocaml_Runtime[41],_aIf_), - _aIh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3262), - _aIi_=caml_call2(Runtime_ocaml_Runtime[65],_aIh_,_aIg_), - _aIj_=caml_call1(Runtime_ocaml_Runtime[31],cst_37457$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIj_,_aIi_); - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$344))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22883) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28051); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$236))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30368); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$84))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31420); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$63))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32502); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$59))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33569); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$89))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35947); - var - _aIk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$90), - _aIl_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIk_), - _aIm_=caml_call1(Runtime_ocaml_Runtime[41],_aIl_), - _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_3125), - _aIo_=caml_call2(Runtime_ocaml_Runtime[65],_aIn_,_aIm_), - _aIp_=caml_call1(Runtime_ocaml_Runtime[31],cst_35947$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIp_,_aIo_); - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$345))) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21465) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26038); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$237))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_28386); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$85))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29560); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$64))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30749); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$60))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31923); - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$91))) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34301); - var - _aIq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$92), - _aIr_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIq_), - _aIs_=caml_call1(Runtime_ocaml_Runtime[41],_aIr_), - _aIt_=caml_call1(Runtime_ocaml_Runtime[31],cst_2973), - _aIu_=caml_call2(Runtime_ocaml_Runtime[65],_aIt_,_aIs_), - _aIv_=caml_call1(Runtime_ocaml_Runtime[31],cst_34301$0); - return caml_call2(Runtime_ocaml_Runtime[67],_aIv_,_aIu_)}} - function _aH9_(param$0) - {var - _aH__=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aH$_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aH__); - if(_aH$_) - {var - _aIa_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1), - _aIb_=caml_call2(Runtime_ocaml_Runtime[98],param,_aIa_); - if(_aIb_) - var - _aIc_=caml_call3(Runtime_ocaml_Runtime[56],2002,7,1), - _aId_=caml_call2(Runtime_ocaml_Runtime[101],param,_aIc_); - else - var _aId_=_aIb_} - else - var _aId_=_aH$_; - return caml_call2(Runtime_ocaml_Runtime[29],_Le_,_aId_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lf_,[0],_aH9_,_aH8_)}, - _aE2_= - function(param$0) - {function _aHH_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$346))) - var - _aHP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_171100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_206200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$238))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_221700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$86))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_227900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$65))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_234300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$61))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_240600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$93))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700); - else - var - _aHQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$94), - _aHR_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHQ_), - _aHS_=caml_call1(Runtime_ocaml_Runtime[41],_aHR_), - _aHT_=caml_call1(Runtime_ocaml_Runtime[31],cst_21400), - _aHU_=caml_call2(Runtime_ocaml_Runtime[65],_aHT_,_aHS_), - _aHV_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700$0), - _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aHV_,_aHU_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$347))) - var - _aHP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_150100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_184000$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$239))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_199200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$87))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_206100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$66))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_213200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$62))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_220200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$95))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800); - else - var - _aHW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$96), - _aHX_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHW_), - _aHY_=caml_call1(Runtime_ocaml_Runtime[41],_aHX_), - _aHZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_20500), - _aH0_=caml_call2(Runtime_ocaml_Runtime[65],_aHZ_,_aHY_), - _aH1_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800$0), - _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aH1_,_aH0_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$348))) - var - _aHP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_170800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$240))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_186200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$88))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_193900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$67))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_201700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$63))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_209400); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$97))) - var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000); - else - var - _aH2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$98), - _aH3_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aH2_), - _aH4_=caml_call1(Runtime_ocaml_Runtime[41],_aH3_), - _aH5_=caml_call1(Runtime_ocaml_Runtime[31],cst_19500), - _aH6_=caml_call2(Runtime_ocaml_Runtime[65],_aH5_,_aH4_), - _aH7_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000$0), - _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aH7_,_aH6_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aHP_,taux_francs_vers_euros)} - function _aHI_(param$0) - {var - _aHJ_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aHK_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aHJ_); - if(_aHK_) - {var - _aHL_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1), - _aHM_=caml_call2(Runtime_ocaml_Runtime[98],param,_aHL_); - if(_aHM_) - var - _aHN_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1), - _aHO_=caml_call2(Runtime_ocaml_Runtime[101],param,_aHN_); - else - var _aHO_=_aHM_} - else - var _aHO_=_aHK_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lg_,_aHO_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lh_,[0],_aHI_,_aHH_)}, - _aE3_= - function(param$0) - {function _aHg_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$349))) - var - _aHo_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_169100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_203800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$241))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_219100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$89))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_225200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$68))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_231500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$64))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_237700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$99))) - var - _aHo_= - caml_call1(Runtime_ocaml_Runtime[31],cst_242800$2); - else - var - _aHp_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$100), - _aHq_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHp_), - _aHr_=caml_call1(Runtime_ocaml_Runtime[41],_aHq_), - _aHs_=caml_call1(Runtime_ocaml_Runtime[31],cst_21100), - _aHt_=caml_call2(Runtime_ocaml_Runtime[65],_aHs_,_aHr_), - _aHu_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$3), - _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHu_,_aHt_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$350))) - var - _aHo_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_148300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_181800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$242))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_196800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$90))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_203700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$69))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_210700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$65))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_217600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$101))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000); - else - var - _aHv_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$102), - _aHw_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHv_), - _aHx_=caml_call1(Runtime_ocaml_Runtime[41],_aHw_), - _aHy_=caml_call1(Runtime_ocaml_Runtime[31],cst_20300), - _aHz_=caml_call2(Runtime_ocaml_Runtime[65],_aHy_,_aHx_), - _aHA_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000$0), - _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHA_,_aHz_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$351))) - var - _aHo_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_168800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$243))) - var - _aHo_= - caml_call1(Runtime_ocaml_Runtime[31],cst_184000$1); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$91))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_191600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$70))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_199300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$66))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_206900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$103))) - var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300); - else - var - _aHB_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$104), - _aHC_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHB_), - _aHD_=caml_call1(Runtime_ocaml_Runtime[41],_aHC_), - _aHE_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300), - _aHF_=caml_call2(Runtime_ocaml_Runtime[65],_aHE_,_aHD_), - _aHG_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300$0), - _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHG_,_aHF_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aHo_,taux_francs_vers_euros)} - function _aHh_(param$0) - {var - _aHi_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aHj_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aHi_); - if(_aHj_) - {var - _aHk_=caml_call3(Runtime_ocaml_Runtime[56],2000,7,1), - _aHl_=caml_call2(Runtime_ocaml_Runtime[98],param,_aHk_); - if(_aHl_) - var - _aHm_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1), - _aHn_=caml_call2(Runtime_ocaml_Runtime[101],param,_aHm_); - else - var _aHn_=_aHl_} - else - var _aHn_=_aHj_; - return caml_call2(Runtime_ocaml_Runtime[29],_Li_,_aHn_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lj_,[0],_aHh_,_aHg_)}, - _aE4_= - function(param$0) - {function _aGR_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$352))) - var - _aGZ_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_201800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$244))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_216900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$92))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_223000); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$71))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_229200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$67))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_235300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$105))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400); - else - var - _aG0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$106), - _aG1_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aG0_), - _aG2_=caml_call1(Runtime_ocaml_Runtime[41],_aG1_), - _aG3_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900), - _aG4_=caml_call2(Runtime_ocaml_Runtime[65],_aG3_,_aG2_), - _aG5_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400$0), - _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aG5_,_aG4_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$353))) - var - _aGZ_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_146800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180000); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$245))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_194900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$93))) - var - _aGZ_= - caml_call1(Runtime_ocaml_Runtime[31],cst_201700$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$72))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$68))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_215400); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$107))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700); - else - var - _aG6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$108), - _aG7_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aG6_), - _aG8_=caml_call1(Runtime_ocaml_Runtime[41],_aG7_), - _aG9_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100), - _aG__=caml_call2(Runtime_ocaml_Runtime[65],_aG9_,_aG8_), - _aG$_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700$0), - _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aG$_,_aG__); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$354))) - var - _aGZ_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_137700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_167100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$246))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_182200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$94))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_189700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$73))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_197300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$69))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_204900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$109))) - var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100); - else - var - _aHa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$110), - _aHb_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHa_), - _aHc_=caml_call1(Runtime_ocaml_Runtime[41],_aHb_), - _aHd_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100), - _aHe_=caml_call2(Runtime_ocaml_Runtime[65],_aHd_,_aHc_), - _aHf_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100$0), - _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aHf_,_aHe_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aGZ_,taux_francs_vers_euros)} - function _aGS_(param$0) - {var - _aGT_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aGU_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aGT_); - if(_aGU_) - {var - _aGV_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1), - _aGW_=caml_call2(Runtime_ocaml_Runtime[98],param,_aGV_); - if(_aGW_) - var - _aGX_=caml_call3(Runtime_ocaml_Runtime[56],2000,7,1), - _aGY_=caml_call2(Runtime_ocaml_Runtime[101],param,_aGX_); - else - var _aGY_=_aGW_} - else - var _aGY_=_aGU_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lk_,_aGY_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Ll_,[0],_aGS_,_aGR_)}, - _aE5_= - function(param$0) - {function _aGq_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$355))) - var - _aGy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_201600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$247))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_216700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$95))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_222800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$74))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_229000); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$70))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_235100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$111))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200); - else - var - _aGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$112), - _aGA_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGz_), - _aGB_=caml_call1(Runtime_ocaml_Runtime[41],_aGA_), - _aGC_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900$0), - _aGD_=caml_call2(Runtime_ocaml_Runtime[65],_aGC_,_aGB_), - _aGE_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200$0), - _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGE_,_aGD_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$356))) - var - _aGy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_146700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_179800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$248))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_194700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$96))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_201500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$75))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_208400); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$71))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_215200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$113))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500); - else - var - _aGF_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$114), - _aGG_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGF_), - _aGH_=caml_call1(Runtime_ocaml_Runtime[41],_aGG_), - _aGI_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100$0), - _aGJ_=caml_call2(Runtime_ocaml_Runtime[65],_aGI_,_aGH_), - _aGK_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$0), - _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGK_,_aGJ_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$357))) - var - _aGy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_137600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_166900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$249))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_182000); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$97))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_189500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$76))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_197100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$72))) - var - _aGy_= - caml_call1(Runtime_ocaml_Runtime[31],cst_204700$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$115))) - var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900); - else - var - _aGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$116), - _aGM_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGL_), - _aGN_=caml_call1(Runtime_ocaml_Runtime[41],_aGM_), - _aGO_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$0), - _aGP_=caml_call2(Runtime_ocaml_Runtime[65],_aGO_,_aGN_), - _aGQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900$0), - _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGQ_,_aGP_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aGy_,taux_francs_vers_euros)} - function _aGr_(param$0) - {var - _aGs_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aGt_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aGs_); - if(_aGt_) - {var - _aGu_=caml_call3(Runtime_ocaml_Runtime[56],1998,7,1), - _aGv_=caml_call2(Runtime_ocaml_Runtime[98],param,_aGu_); - if(_aGv_) - var - _aGw_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1), - _aGx_=caml_call2(Runtime_ocaml_Runtime[101],param,_aGw_); - else - var _aGx_=_aGv_} - else - var _aGx_=_aGt_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lm_,_aGx_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Ln_,[0],_aGr_,_aGq_)}, - _aE6_= - function(param$0) - {function _aF1_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$358))) - var - _aF9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_163300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_196900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$250))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_211600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$98))) - var - _aF9_= - caml_call1(Runtime_ocaml_Runtime[31],cst_217600$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$77))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_223600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$73))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_229600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$117))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600); - else - var - _aF__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$118), - _aF$_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aF__), - _aGa_=caml_call1(Runtime_ocaml_Runtime[41],_aF$_), - _aGb_=caml_call1(Runtime_ocaml_Runtime[31],cst_20400), - _aGc_=caml_call2(Runtime_ocaml_Runtime[65],_aGb_,_aGa_), - _aGd_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600$0), - _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGd_,_aGc_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$359))) - var - _aF9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_143300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_175600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$251))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_190100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$99))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_196600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$78))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_203500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$74))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_210200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$119))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100); - else - var - _aGe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$120), - _aGf_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGe_), - _aGg_=caml_call1(Runtime_ocaml_Runtime[41],_aGf_), - _aGh_=caml_call1(Runtime_ocaml_Runtime[31],cst_19600), - _aGi_=caml_call2(Runtime_ocaml_Runtime[65],_aGh_,_aGg_), - _aGj_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100$0), - _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGj_,_aGi_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$360))) - var - _aF9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_134400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_163000$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$252))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_177700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$100))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_185100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$79))) - var - _aF9_= - caml_call1(Runtime_ocaml_Runtime[31],cst_192500$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$75))) - var - _aF9_= - caml_call1(Runtime_ocaml_Runtime[31],cst_199900$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$121))) - var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700); - else - var - _aGk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$122), - _aGl_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGk_), - _aGm_=caml_call1(Runtime_ocaml_Runtime[41],_aGl_), - _aGn_=caml_call1(Runtime_ocaml_Runtime[31],cst_18700), - _aGo_=caml_call2(Runtime_ocaml_Runtime[65],_aGn_,_aGm_), - _aGp_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700$0), - _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGp_,_aGo_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aF9_,taux_francs_vers_euros)} - function _aF2_(param$0) - {var - _aF3_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aF4_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aF3_); - if(_aF4_) - {var - _aF5_=caml_call3(Runtime_ocaml_Runtime[56],1997,7,1), - _aF6_=caml_call2(Runtime_ocaml_Runtime[98],param,_aF5_); - if(_aF6_) - var - _aF7_=caml_call3(Runtime_ocaml_Runtime[56],1998,7,1), - _aF8_=caml_call2(Runtime_ocaml_Runtime[101],param,_aF7_); - else - var _aF8_=_aF6_} - else - var _aF8_=_aF4_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lo_,_aF8_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lp_,[0],_aF2_,_aF1_)}, - _aE7_= - function(param$0) - {function _aFA_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$361))) - var - _aFI_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_160400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_193400); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$253))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_207800); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$101))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_213700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$80))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_219600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$76))) - var - _aFI_= - caml_call1(Runtime_ocaml_Runtime[31],cst_225500$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$123))) - var - _aFI_= - caml_call1(Runtime_ocaml_Runtime[31],cst_230500$1); - else - var - _aFJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$124), - _aFK_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFJ_), - _aFL_=caml_call1(Runtime_ocaml_Runtime[41],_aFK_), - _aFM_=caml_call1(Runtime_ocaml_Runtime[31],cst_20000), - _aFN_=caml_call2(Runtime_ocaml_Runtime[65],_aFM_,_aFL_), - _aFO_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$2), - _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aFO_,_aFN_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$362))) - var - _aFI_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_172500$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$254))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_186700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$102))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_193300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$81))) - var - _aFI_= - caml_call1(Runtime_ocaml_Runtime[31],cst_199900$1); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$77))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_206500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$125))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100); - else - var - _aFP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$126), - _aFQ_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFP_), - _aFR_=caml_call1(Runtime_ocaml_Runtime[41],_aFQ_), - _aFS_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300$0), - _aFT_=caml_call2(Runtime_ocaml_Runtime[65],_aFS_,_aFR_), - _aFU_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100$0), - _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aFU_,_aFT_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$363))) - var - _aFI_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$255))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_174500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$103))) - var - _aFI_= - caml_call1(Runtime_ocaml_Runtime[31],cst_181800$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$82))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_189100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$78))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_194200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$127))) - var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900); - else - var - _aFV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$128), - _aFW_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFV_), - _aFX_=caml_call1(Runtime_ocaml_Runtime[41],_aFW_), - _aFY_=caml_call1(Runtime_ocaml_Runtime[31],cst_18400), - _aFZ_=caml_call2(Runtime_ocaml_Runtime[65],_aFY_,_aFX_), - _aF0_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900$0), - _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aF0_,_aFZ_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aFI_,taux_francs_vers_euros)} - function _aFB_(param$0) - {var - _aFC_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aFD_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aFC_); - if(_aFD_) - {var - _aFE_=caml_call3(Runtime_ocaml_Runtime[56],1994,7,1), - _aFF_=caml_call2(Runtime_ocaml_Runtime[98],param,_aFE_); - if(_aFF_) - var - _aFG_=caml_call3(Runtime_ocaml_Runtime[56],1997,7,1), - _aFH_=caml_call2(Runtime_ocaml_Runtime[101],param,_aFG_); - else - var _aFH_=_aFF_} - else - var _aFH_=_aFD_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lq_,_aFH_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lr_,[0],_aFB_,_aFA_)}, - _aE8_= - [0, - function(param$0) - {function _aE$_(param) - {switch(zone[0]) - {case 0: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$364))) - var - _aFh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_158700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_191300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$256))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_205500); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$104))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_211300); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$83))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_217100); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$79))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_222900); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$129))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000); - else - var - _aFi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$130), - _aFj_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFi_), - _aFk_=caml_call1(Runtime_ocaml_Runtime[41],_aFj_), - _aFl_=caml_call1(Runtime_ocaml_Runtime[31],cst_19800), - _aFm_=caml_call2(Runtime_ocaml_Runtime[65],_aFl_,_aFk_), - _aFn_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000$0), - _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFn_,_aFm_); - break; - case 1: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$365))) - var - _aFh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_170600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$257))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_184700); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$105))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_191200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$84))) - var - _aFh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_197700$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$80))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_204200); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$131))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700); - else - var - _aFo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$132), - _aFp_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFo_), - _aFq_=caml_call1(Runtime_ocaml_Runtime[41],_aFp_), - _aFr_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$1), - _aFs_=caml_call2(Runtime_ocaml_Runtime[65],_aFr_,_aFq_), - _aFt_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700$0), - _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFt_,_aFs_); - break; - default: - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_0$366))) - var - _aFh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_130600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_158400); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_1$258))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_172600); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_2$106))) - var - _aFh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_179800$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_3$85))) - var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_187000); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_4$81))) - var - _aFh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_194200$0); - else - if - (caml_equal - (nombre_personnes_a_charge, - caml_call1(Runtime_ocaml_Runtime[46],cst_5$133))) - var - _aFh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_208600$0); - else - var - _aFu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$134), - _aFv_= - caml_call2 - (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFu_), - _aFw_=caml_call1(Runtime_ocaml_Runtime[41],_aFv_), - _aFx_=caml_call1(Runtime_ocaml_Runtime[31],cst_18200), - _aFy_=caml_call2(Runtime_ocaml_Runtime[65],_aFx_,_aFw_), - _aFz_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600$1), - _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFz_,_aFy_)} - return caml_call2 - (Runtime_ocaml_Runtime[65],_aFh_,taux_francs_vers_euros)} - function _aFa_(param$0) - {var - _aFb_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aFc_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aFb_); - if(_aFc_) - {var - _aFd_=caml_call3(Runtime_ocaml_Runtime[56],1992,7,1), - _aFe_=caml_call2(Runtime_ocaml_Runtime[98],param,_aFd_); - if(_aFe_) - var - _aFf_=caml_call3(Runtime_ocaml_Runtime[56],1994,7,1), - _aFg_=caml_call2(Runtime_ocaml_Runtime[101],param,_aFf_); - else - var _aFg_=_aFe_} - else - var _aFg_=_aFc_; - return caml_call2(Runtime_ocaml_Runtime[29],_Ls_,_aFg_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_Lt_,[0],_aFa_,_aE$_)}, - _aE7_, - _aE6_, - _aE5_, - _aE4_, - _aE3_, - _aE2_, - _aE1_, - _aE0_, - _aEZ_, - _aEY_, - _aEX_, - _aEW_, - _aEV_, - _aEU_, - _aET_, - _aES_, - _aER_, - _aEQ_, - _aEP_, - _aEO_, - _aEN_], - _aE9_=caml_call4(Runtime_ocaml_Runtime[62],_Lu_,_aE8_,_aEM_,_aEL_); - return _aE9_} - catch(_aE__) - {_aE__ = caml_wrap_exception(_aE__); - if(_aE__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KN_]; - throw _aE__}} - var - calcul_plafond_mensualite_d842= - caml_call3 - (Runtime_ocaml_Runtime[28],_Lv_,Runtime_ocaml_Runtime[10],_aAp_); - try - {var - _aAq_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aAr_=function(param){return 0}, - _aAs_= - function(param) - {function _aEG_(param){return montant_forfaitaire_d842_12} - function _aEH_(param) - {var - _aEI_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30), - _aEJ_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_aEI_); - if(_aEJ_) - switch(type_travaux_logement[0]) - {case 0:var _aEK_=0;break; - case 1:var _aEK_=1;break; - case 2:var _aEK_=0;break; - default:var _aEK_=0} - else - var _aEK_=_aEJ_; - return caml_call2(Runtime_ocaml_Runtime[29],_Lx_,_aEK_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Ly_,[0],_aEH_,_aEG_)}, - _aAt_= - [0, - function(param) - {function _aEv_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[65], - mensualite_principale, - coefficient_d842_12)} - function _aEw_(param) - {var - _aEx_=caml_call3(Runtime_ocaml_Runtime[56],1992,9,30), - _aEy_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_aEx_); - if(_aEy_) - var - _aEz_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30), - _aEA_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_aEz_); - else - var _aEA_=_aEy_; - if(_aEA_) - var _aEB_=_aEA_; - else - {var - _aEC_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30), - _aED_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_aEC_); - if(_aED_) - {switch(type_travaux_logement[0]) - {case 0:var _aEE_=0;break; - case 1:var _aEE_=0;break; - case 2:var _aEE_=0;break; - default:var _aEE_=1} - if(_aEE_) - var _aEB_=_aEE_; - else - {switch(type_travaux_logement[0]) - {case 0:var _aEF_=1;break; - case 1:var _aEF_=0;break; - case 2:var _aEF_=0;break; - default:var _aEF_=0} - if(_aEF_) - var _aEB_=_aEF_; - else - switch(type_travaux_logement[0]) - {case 0:var _aEB_=0;break; - case 1:var _aEB_=0;break; - case 2:var _aEB_=1;break; - default:var _aEB_=0}}} - else - var _aEB_=_aED_} - return caml_call2(Runtime_ocaml_Runtime[29],_Lz_,_aEB_)} - return caml_call4(Runtime_ocaml_Runtime[62],_LA_,[0],_aEw_,_aEv_)}, - _aAs_], - _aAu_=caml_call4(Runtime_ocaml_Runtime[62],_LB_,_aAt_,_aAr_,_aAq_)} - catch(_aEu_) - {_aEu_ = caml_wrap_exception(_aEu_); - if(_aEu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lw_]; - throw _aEu_} - var - seuil_minimal_ressources_menag= - caml_call3 - (Runtime_ocaml_Runtime[28],_LC_,Runtime_ocaml_Runtime[13],_aAu_); - function _aAv_(param) - {try - {var - _aEp_= - function(param$0) - {var - _aEt_= - caml_call2 - (Runtime_ocaml_Runtime[67], - charges_mensuelles_pret, - montant_forfaitaire_charges); - return caml_call2(Runtime_ocaml_Runtime[68],_aEt_,param)}, - _aEq_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_LE_,1)}, - _aEr_=caml_call4(Runtime_ocaml_Runtime[62],_LF_,[0],_aEq_,_aEp_); - return _aEr_} - catch(_aEs_) - {_aEs_ = caml_wrap_exception(_aEs_); - if(_aEs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LD_]; - throw _aEs_}} - var - depense_nette_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_LG_,Runtime_ocaml_Runtime[10],_aAv_); - function _aAw_(param) - {try - {var - _aD5_= - function(param$0) - {var - _aEm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LI_, - Runtime_ocaml_Runtime[16], - param), - _aEn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _LJ_, - calcul_plafond_mensualite_d842), - _aEm_), - _aEo_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LK_, - Runtime_ocaml_Runtime[13], - _aEn_); - return caml_call2(Runtime_ocaml_Runtime[27],_LL_,_aEo_)}, - _aD6_= - function(param) - {var - _aEk_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _aEl_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aEk_); - return caml_call2(Runtime_ocaml_Runtime[29],_LM_,_aEl_)}, - _aD7_= - [0, - function(param$0) - {function _aD__(param$0) - {if(copropriete) - {var - _aEc_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), - _aEd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LN_, - Runtime_ocaml_Runtime[16], - param), - _aEe_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _LO_, - calcul_plafond_mensualite_d842), - _aEd_), - _aEf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LP_, - Runtime_ocaml_Runtime[13], - _aEe_), - _aEg_=caml_call2(Runtime_ocaml_Runtime[27],_LQ_,_aEf_); - return caml_call2(Runtime_ocaml_Runtime[65],_aEg_,_aEc_)} - var - _aEh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LR_, - Runtime_ocaml_Runtime[16], - param), - _aEi_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _LS_, - calcul_plafond_mensualite_d842), - _aEh_), - _aEj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _LT_, - Runtime_ocaml_Runtime[13], - _aEi_); - return caml_call2(Runtime_ocaml_Runtime[27],_LU_,_aEj_)} - function _aD$_(param) - {var - _aEa_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1), - _aEb_= - caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aEa_); - return caml_call2(Runtime_ocaml_Runtime[29],_LV_,_aEb_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_LW_,[0],_aD$_,_aD__)}], - _aD8_=caml_call4(Runtime_ocaml_Runtime[62],_LX_,_aD7_,_aD6_,_aD5_); - return _aD8_} - catch(_aD9_) - {_aD9_ = caml_wrap_exception(_aD9_); - if(_aD9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LH_]; - throw _aD9_}} - var - calcul_plafond_mensualite_d842$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_LY_,Runtime_ocaml_Runtime[10],_aAw_); - try - {var - _aAx_= - function(param) - {if - (caml_call2 - (Runtime_ocaml_Runtime[71], - ressources_menage_arrondies_ba, - seuil_minimal_ressources_menag)) - {var - _aDZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$9), - _aD0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), - _aD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), - _aD2_= - caml_call2 - (Runtime_ocaml_Runtime[67], - seuil_minimal_ressources_menag, - _aD1_), - _aD3_=caml_call2(Runtime_ocaml_Runtime[65],_aD2_,_aD0_), - _aD4_=caml_call1(Runtime_ocaml_Runtime[38],_aD3_); - return caml_call2(Runtime_ocaml_Runtime[65],_aD4_,_aDZ_)} - return ressources_menage_arrondies_ba}, - _aAy_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L0_,1)}, - _aAz_= - [0, - function(param) - {function _aDX_(param){return ressources_menage_arrondies_ba} - function _aDY_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_L1_,situation_r822_11_13_17)} - return caml_call4(Runtime_ocaml_Runtime[62],_L2_,[0],_aDY_,_aDX_)}], - _aAA_=caml_call4(Runtime_ocaml_Runtime[62],_L3_,_aAz_,_aAy_,_aAx_)} - catch(_aDW_) - {_aDW_ = caml_wrap_exception(_aDW_); - if(_aDW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LZ_]; - throw _aDW_} - var - ressources_menage_arrondies_se= - caml_call3 - (Runtime_ocaml_Runtime[28],_L4_,Runtime_ocaml_Runtime[13],_aAA_); - try - {var - _aAB_= - function(param) - {var - _aDT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L6_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aDU_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _L7_, - calcul_plafond_mensualite_d842$0), - _aDT_), - _aDV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L8_, - Runtime_ocaml_Runtime[13], - _aDU_); - return caml_call2(Runtime_ocaml_Runtime[27],_L9_,_aDV_)}, - _aAC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L__,1)}, - _aAD_= - [0, - function(param) - {function _aDD_(param) - {var - _aDF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L$_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _aDG_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ma_, - calcul_plafond_mensualite_d842$0), - _aDF_), - _aDH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mb_, - Runtime_ocaml_Runtime[13], - _aDG_), - _aDI_=caml_call2(Runtime_ocaml_Runtime[27],_Mc_,_aDH_), - _aDJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Md_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aDK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Me_, - calcul_plafond_mensualite_d842$0), - _aDJ_), - _aDL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mf_, - Runtime_ocaml_Runtime[13], - _aDK_), - _aDM_=caml_call2(Runtime_ocaml_Runtime[27],_Mg_,_aDL_); - if(caml_call2(Runtime_ocaml_Runtime[73],_aDM_,_aDI_)) - {var - _aDN_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mh_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _aDO_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Mi_, - calcul_plafond_mensualite_d842$0), - _aDN_), - _aDP_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mj_, - Runtime_ocaml_Runtime[13], - _aDO_); - return caml_call2(Runtime_ocaml_Runtime[27],_Mk_,_aDP_)} - var - _aDQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ml_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aDR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Mm_, - calcul_plafond_mensualite_d842$0), - _aDQ_), - _aDS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mn_, - Runtime_ocaml_Runtime[13], - _aDR_); - return caml_call2(Runtime_ocaml_Runtime[27],_Mo_,_aDS_)} - function _aDE_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _Mp_, - local_habite_premiere_fois_ben)} - return caml_call4(Runtime_ocaml_Runtime[62],_Mq_,[0],_aDE_,_aDD_)}], - _aAE_=caml_call4(Runtime_ocaml_Runtime[62],_Mr_,_aAD_,_aAC_,_aAB_)} - catch(_aDC_) - {_aDC_ = caml_wrap_exception(_aDC_); - if(_aDC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_L5_]; - throw _aDC_} - var - plafond_mensualite_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ms_,Runtime_ocaml_Runtime[13],_aAE_); - try - {var - _aAF_=function(param){return ressources_menage_arrondies_se}, - _aAG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Mu_,1)}, - _aAH_=caml_call4(Runtime_ocaml_Runtime[62],_Mv_,[0],_aAG_,_aAF_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Mw_,Runtime_ocaml_Runtime[13],_aAH_)} - catch(_aDB_) - {_aDB_ = caml_wrap_exception(_aDB_); - if(_aDB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Mt_]; - throw _aDB_} - try - {var - _aAI_=function(param){return 1}, - _aAJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_My_,1)}, - _aAK_=caml_call4(Runtime_ocaml_Runtime[62],_Mz_,[0],_aAJ_,_aAI_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_MA_,Runtime_ocaml_Runtime[12],_aAK_)} - catch(_aDA_) - {_aDA_ = caml_wrap_exception(_aDA_); - if(_aDA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Mx_]; - throw _aDA_} - try - {var - _aAL_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _aAM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MC_,1)}, - _aAN_=caml_call4(Runtime_ocaml_Runtime[62],_MD_,[0],_aAM_,_aAL_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_ME_,Runtime_ocaml_Runtime[15],_aAN_)} - catch(_aDz_) - {_aDz_ = caml_wrap_exception(_aDz_); - if(_aDz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MB_]; - throw _aDz_} - var - _aAO_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_MF_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_MG_,_aAO_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _aAP_= - function(param) - {return [1, - [0, - _MJ_, - caml_call3(Runtime_ocaml_Runtime[56],2022,1,1), - _MI_, - 0, - 0]]}, - _aAQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MK_,1)}, - _aAR_=caml_call4(Runtime_ocaml_Runtime[62],_ML_,[0],_aAQ_,_aAP_), - calcul_apl_logement_foyer_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_MM_,embed_mode_occupation,_aAR_)} - catch(_aDy_) - {_aDy_ = caml_wrap_exception(_aDy_); - if(_aDy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MH_]; - throw _aDy_} - try - {var - _aAS_=function(param){return ressources_menage_arrondies_se}, - _aAT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MO_,1)}, - _aAU_=caml_call4(Runtime_ocaml_Runtime[62],_MP_,[0],_aAT_,_aAS_), - calcul_apl_logement_foyer_dot_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_MQ_,Runtime_ocaml_Runtime[13],_aAU_)} - catch(_aDx_) - {_aDx_ = caml_wrap_exception(_aDx_); - if(_aDx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MN_]; - throw _aDx_} - try - {var - _aAV_=function(param){return nombre_personnes_a_charge}, - _aAW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MS_,1)}, - _aAX_=caml_call4(Runtime_ocaml_Runtime[62],_MT_,[0],_aAW_,_aAV_), - calcul_apl_logement_foyer_dot_$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_MU_,Runtime_ocaml_Runtime[14],_aAX_)} - catch(_aDw_) - {_aDw_ = caml_wrap_exception(_aDw_); - if(_aDw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MR_]; - throw _aDw_} - try - {var - _aAY_=function(param){return situation_familiale_calcul_apl}, - _aAZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MW_,1)}, - _aA0_=caml_call4(Runtime_ocaml_Runtime[62],_MX_,[0],_aAZ_,_aAY_), - calcul_apl_logement_foyer_dot_$2= - caml_call3 - (Runtime_ocaml_Runtime[28], - _MY_, - embed_situation_familiale_calc, - _aA0_)} - catch(_aDv_) - {_aDv_ = caml_wrap_exception(_aDv_); - if(_aDv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MV_]; - throw _aDv_} - try - {var - _aA1_=function(param){return zone}, - _aA2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M0_,1)}, - _aA3_=caml_call4(Runtime_ocaml_Runtime[62],_M1_,[0],_aA2_,_aA1_), - calcul_apl_logement_foyer_dot_$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_M2_,embed_zone_d_habitation,_aA3_)} - catch(_aDu_) - {_aDu_ = caml_wrap_exception(_aDu_); - if(_aDu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MZ_]; - throw _aDu_} - try - {var - _aA4_=function(param){return date_courante}, - _aA5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M4_,1)}, - _aA6_=caml_call4(Runtime_ocaml_Runtime[62],_M5_,[0],_aA5_,_aA4_), - calcul_apl_logement_foyer_dot_$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_M6_,Runtime_ocaml_Runtime[16],_aA6_)} - catch(_aDt_) - {_aDt_ = caml_wrap_exception(_aDt_); - if(_aDt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_M3_]; - throw _aDt_} - try - {var - _aA7_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$367)}, - _aA8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M8_,1)}, - _aA9_=caml_call4(Runtime_ocaml_Runtime[62],_M9_,[0],_aA8_,_aA7_), - calcul_apl_logement_foyer_dot_$5= - caml_call3 - (Runtime_ocaml_Runtime[28],_M__,Runtime_ocaml_Runtime[13],_aA9_)} - catch(_aDs_) - {_aDs_ = caml_wrap_exception(_aDs_); - if(_aDs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_M7_]; - throw _aDs_} - function calcul_apl_logement_foyer_dot_$6(param) - {function _aDp_(param){return 1} - function _aDq_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_M$_,1)} - var _aDr_=caml_call4(Runtime_ocaml_Runtime[62],_Na_,[0],_aDq_,_aDp_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Nb_, - Runtime_ocaml_Runtime[12], - _aDr_)} - function calcul_apl_logement_foyer_dot_$7(param) - {function _aDm_(param){return calcul_nombre_parts_dot_n_nomb} - function _aDn_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Nc_,1)} - var _aDo_=caml_call4(Runtime_ocaml_Runtime[62],_Nd_,[0],_aDn_,_aDm_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Ne_, - Runtime_ocaml_Runtime[15], - _aDo_)} - var - _aA__= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Nf_,calcul_aide_personnalisee_loge$0), - [0, - calcul_apl_logement_foyer_dot_, - calcul_apl_logement_foyer_dot_$0, - calcul_apl_logement_foyer_dot_$1, - calcul_apl_logement_foyer_dot_$2, - calcul_apl_logement_foyer_dot_$3, - calcul_apl_logement_foyer_dot_$4, - calcul_apl_logement_foyer_dot_$5, - calcul_apl_logement_foyer_dot_$6, - calcul_apl_logement_foyer_dot_$7]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_Ng_,_aA__), - calcul_apl_logement_foyer_dot_$8=result$2[7]; - try - {var - _aA$_=function(param){return montant_forfaitaire_d842_11}, - _aBa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ni_,1)}, - _aBb_= - [0, - function(param) - {function _aDf_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[65], - ressources_menage_arrondies_se, - coefficient_d842_11)} - function _aDg_(param) - {switch(type_travaux_logement[0]) - {case 0:var _aDh_=0;break; - case 1:var _aDh_=0;break; - case 2:var _aDh_=0;break; - default:var _aDh_=1} - if(_aDh_) - var _aDi_=_aDh_; - else - {switch(type_travaux_logement[0]) - {case 0:var _aDl_=1;break; - case 1:var _aDl_=0;break; - case 2:var _aDl_=0;break; - default:var _aDl_=0} - if(_aDl_) - var _aDi_=_aDl_; - else - switch(type_travaux_logement[0]) - {case 0:var _aDi_=0;break; - case 1:var _aDi_=0;break; - case 2:var _aDi_=1;break; - default:var _aDi_=0}} - if(_aDi_) - var - _aDj_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1), - _aDk_= - caml_call2 - (Runtime_ocaml_Runtime[98],date_signature_pret,_aDj_); - else - var _aDk_=_aDi_; - return caml_call2(Runtime_ocaml_Runtime[29],_Nj_,_aDk_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Nk_,[0],_aDg_,_aDf_)}], - _aBc_=caml_call4(Runtime_ocaml_Runtime[62],_Nl_,_aBb_,_aBa_,_aA$_)} - catch(_aDe_) - {_aDe_ = caml_wrap_exception(_aDe_); - if(_aDe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Nh_]; - throw _aDe_} - var - seuil_minimal_depense_nette_mi= - caml_call3 - (Runtime_ocaml_Runtime[28],_Nm_,Runtime_ocaml_Runtime[13],_aBc_); - try - {var - _aBd_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[74], - mensualite_principale, - plafond_mensualite_d842_6) - ?plafond_mensualite_d842_6 - :mensualite_principale}, - _aBe_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_No_,1)}, - _aBf_=caml_call4(Runtime_ocaml_Runtime[62],_Np_,[0],_aBe_,_aBd_)} - catch(_aDd_) - {_aDd_ = caml_wrap_exception(_aDd_); - if(_aDd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Nn_]; - throw _aDd_} - var - mensualite_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_Nq_,Runtime_ocaml_Runtime[13],_aBf_); - try - {var - _aBg_=function(param){return calcul_equivalence_loyer_minim$3}, - _aBh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ns_,1)}, - _aBi_=caml_call4(Runtime_ocaml_Runtime[62],_Nt_,[0],_aBh_,_aBg_)} - catch(_aDc_) - {_aDc_ = caml_wrap_exception(_aDc_); - if(_aDc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Nr_]; - throw _aDc_} - var - mensualite_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Nu_,Runtime_ocaml_Runtime[13],_aBi_); - try - {var - _aBj_=function(param){return calcul_apl_logement_foyer_dot_$8}, - _aBk_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Nw_,1)}, - _aBl_=caml_call4(Runtime_ocaml_Runtime[62],_Nx_,[0],_aBk_,_aBj_)} - catch(_aDb_) - {_aDb_ = caml_wrap_exception(_aDb_); - if(_aDb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Nv_]; - throw _aDb_} - var - coefficient_prise_en_charge= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ny_,Runtime_ocaml_Runtime[15],_aBl_); - function _aBm_(param) - {try - {var - _aC1_= - function(param$0) - {var - _aC5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NA_, - Runtime_ocaml_Runtime[13], - param), - _aC6_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_NB_,depense_nette_minimale), - _aC5_), - _aC7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NC_, - Runtime_ocaml_Runtime[13], - _aC6_), - _aC8_=caml_call2(Runtime_ocaml_Runtime[27],_ND_,_aC7_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73], - _aC8_, - seuil_minimal_depense_nette_mi)) - {var - _aC9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NE_, - Runtime_ocaml_Runtime[13], - param), - _aC__= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_NF_,depense_nette_minimale), - _aC9_), - _aC$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NG_, - Runtime_ocaml_Runtime[13], - _aC__), - _aDa_=caml_call2(Runtime_ocaml_Runtime[27],_NH_,_aC$_); - return caml_call2 - (Runtime_ocaml_Runtime[68], - seuil_minimal_depense_nette_mi, - _aDa_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$368)}, - _aC2_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_NI_,1)}, - _aC3_=caml_call4(Runtime_ocaml_Runtime[62],_NJ_,[0],_aC2_,_aC1_); - return _aC3_} - catch(_aC4_) - {_aC4_ = caml_wrap_exception(_aC4_); - if(_aC4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Nz_]; - throw _aC4_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_NK_,Runtime_ocaml_Runtime[10],_aBm_); - try - {var - _aBn_= - function(param) - {var - _aCZ_= - caml_call2 - (Runtime_ocaml_Runtime[67], - mensualite_eligible, - montant_forfaitaire_charges), - _aC0_= - caml_call2(Runtime_ocaml_Runtime[68],_aCZ_,mensualite_minimale); - return caml_call2 - (Runtime_ocaml_Runtime[65], - _aC0_, - coefficient_prise_en_charge)}, - _aBo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NM_,1)}, - _aBp_=caml_call4(Runtime_ocaml_Runtime[62],_NN_,[0],_aBo_,_aBn_)} - catch(_aCY_) - {_aCY_ = caml_wrap_exception(_aCY_); - if(_aCY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NL_]; - throw _aCY_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_NO_,Runtime_ocaml_Runtime[13],_aBp_); - function _aBq_(param) - {try - {var - _aCu_= - function(param$0) - {var - _aCy_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$369), - _aCz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NQ_, - Runtime_ocaml_Runtime[13], - param), - _aCA_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _NR_, - traitement_aide_finale_minorat), - _aCz_), - _aCB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NS_, - Runtime_ocaml_Runtime[13], - _aCA_), - _aCC_=caml_call2(Runtime_ocaml_Runtime[27],_NT_,_aCB_), - _aCD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NU_, - Runtime_ocaml_Runtime[13], - _aCC_), - _aCE_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _NV_, - abattement_depense_nette_minim), - _aCD_), - _aCF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NW_, - Runtime_ocaml_Runtime[13], - _aCE_), - _aCG_=caml_call2(Runtime_ocaml_Runtime[27],_NX_,_aCF_), - _aCH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NY_, - Runtime_ocaml_Runtime[13], - param), - _aCI_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _NZ_, - traitement_aide_finale_minorat), - _aCH_), - _aCJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N0_, - Runtime_ocaml_Runtime[13], - _aCI_), - _aCK_=caml_call2(Runtime_ocaml_Runtime[27],_N1_,_aCJ_), - _aCL_=caml_call2(Runtime_ocaml_Runtime[68],_aCK_,_aCG_); - if(caml_call2(Runtime_ocaml_Runtime[73],_aCL_,_aCy_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$370); - var - _aCM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N2_, - Runtime_ocaml_Runtime[13], - param), - _aCN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _N3_, - traitement_aide_finale_minorat), - _aCM_), - _aCO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N4_, - Runtime_ocaml_Runtime[13], - _aCN_), - _aCP_=caml_call2(Runtime_ocaml_Runtime[27],_N5_,_aCO_), - _aCQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N6_, - Runtime_ocaml_Runtime[13], - _aCP_), - _aCR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _N7_, - abattement_depense_nette_minim), - _aCQ_), - _aCS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N8_, - Runtime_ocaml_Runtime[13], - _aCR_), - _aCT_=caml_call2(Runtime_ocaml_Runtime[27],_N9_,_aCS_), - _aCU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N__, - Runtime_ocaml_Runtime[13], - param), - _aCV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _N$_, - traitement_aide_finale_minorat), - _aCU_), - _aCW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Oa_, - Runtime_ocaml_Runtime[13], - _aCV_), - _aCX_=caml_call2(Runtime_ocaml_Runtime[27],_Ob_,_aCW_); - return caml_call2(Runtime_ocaml_Runtime[68],_aCX_,_aCT_)}, - _aCv_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Oc_,1)}, - _aCw_=caml_call4(Runtime_ocaml_Runtime[62],_Od_,[0],_aCv_,_aCu_); - return _aCw_} - catch(_aCx_) - {_aCx_ = caml_wrap_exception(_aCx_); - if(_aCx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NP_]; - throw _aCx_}} - var - traitement_aide_finale_depense= - caml_call3 - (Runtime_ocaml_Runtime[28],_Oe_,Runtime_ocaml_Runtime[10],_aBq_); - function _aBr_(param) - {try - {var - _aBE_= - function(param$0) - {var - _aBI_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$371), - _aBJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Og_, - Runtime_ocaml_Runtime[13], - param), - _aBK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Oh_, - traitement_aide_finale_depense), - _aBJ_), - _aBL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Oi_, - Runtime_ocaml_Runtime[13], - _aBK_), - _aBM_=caml_call2(Runtime_ocaml_Runtime[27],_Oj_,_aBL_), - _aBN_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ok_, - Runtime_ocaml_Runtime[13], - _aBM_), - _aBO_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ol_, - contributions_sociales_dot_mon), - _aBN_), - _aBP_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Om_, - Runtime_ocaml_Runtime[13], - _aBO_), - _aBQ_=caml_call2(Runtime_ocaml_Runtime[27],_On_,_aBP_), - _aBR_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$7), - _aBS_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Oo_, - Runtime_ocaml_Runtime[13], - param), - _aBT_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Op_, - traitement_aide_finale_depense), - _aBS_), - _aBU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Oq_, - Runtime_ocaml_Runtime[13], - _aBT_), - _aBV_=caml_call2(Runtime_ocaml_Runtime[27],_Or_,_aBU_), - _aBW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Os_, - Runtime_ocaml_Runtime[13], - _aBV_), - _aBX_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ot_, - contributions_sociales_dot_mon), - _aBW_), - _aBY_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ou_, - Runtime_ocaml_Runtime[13], - _aBX_), - _aBZ_=caml_call2(Runtime_ocaml_Runtime[27],_Ov_,_aBY_), - _aB0_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ow_, - Runtime_ocaml_Runtime[13], - param), - _aB1_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ox_, - traitement_aide_finale_depense), - _aB0_), - _aB2_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Oy_, - Runtime_ocaml_Runtime[13], - _aB1_), - _aB3_=caml_call2(Runtime_ocaml_Runtime[27],_Oz_,_aB2_), - _aB4_=caml_call2(Runtime_ocaml_Runtime[68],_aB3_,_aBZ_), - _aB5_=caml_call2(Runtime_ocaml_Runtime[68],_aB4_,_aBR_), - _aB6_=caml_call1(Runtime_ocaml_Runtime[38],_aB5_), - _aB7_=caml_call2(Runtime_ocaml_Runtime[67],_aB6_,_aBQ_); - if(caml_call2(Runtime_ocaml_Runtime[72],_aB7_,_aBI_)) - {var - _aB8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OA_, - Runtime_ocaml_Runtime[13], - param), - _aB9_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _OB_, - traitement_aide_finale_depense), - _aB8_), - _aB__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OC_, - Runtime_ocaml_Runtime[13], - _aB9_), - _aB$_=caml_call2(Runtime_ocaml_Runtime[27],_OD_,_aB__), - _aCa_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OE_, - Runtime_ocaml_Runtime[13], - _aB$_), - _aCb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _OF_, - contributions_sociales_dot_mon), - _aCa_), - _aCc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OG_, - Runtime_ocaml_Runtime[13], - _aCb_), - _aCd_=caml_call2(Runtime_ocaml_Runtime[27],_OH_,_aCc_), - _aCe_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$8), - _aCf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OI_, - Runtime_ocaml_Runtime[13], - param), - _aCg_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _OJ_, - traitement_aide_finale_depense), - _aCf_), - _aCh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OK_, - Runtime_ocaml_Runtime[13], - _aCg_), - _aCi_=caml_call2(Runtime_ocaml_Runtime[27],_OL_,_aCh_), - _aCj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OM_, - Runtime_ocaml_Runtime[13], - _aCi_), - _aCk_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ON_, - contributions_sociales_dot_mon), - _aCj_), - _aCl_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OO_, - Runtime_ocaml_Runtime[13], - _aCk_), - _aCm_=caml_call2(Runtime_ocaml_Runtime[27],_OP_,_aCl_), - _aCn_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OQ_, - Runtime_ocaml_Runtime[13], - param), - _aCo_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _OR_, - traitement_aide_finale_depense), - _aCn_), - _aCp_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OS_, - Runtime_ocaml_Runtime[13], - _aCo_), - _aCq_=caml_call2(Runtime_ocaml_Runtime[27],_OT_,_aCp_), - _aCr_=caml_call2(Runtime_ocaml_Runtime[68],_aCq_,_aCm_), - _aCs_=caml_call2(Runtime_ocaml_Runtime[68],_aCr_,_aCe_), - _aCt_=caml_call1(Runtime_ocaml_Runtime[38],_aCs_); - return caml_call2(Runtime_ocaml_Runtime[67],_aCt_,_aCd_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$372)}, - _aBF_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_OU_,1)}, - _aBG_=caml_call4(Runtime_ocaml_Runtime[62],_OV_,[0],_aBF_,_aBE_); - return _aBG_} - catch(_aBH_) - {_aBH_ = caml_wrap_exception(_aBH_); - if(_aBH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Of_]; - throw _aBH_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_OW_,Runtime_ocaml_Runtime[10],_aBr_); - function _aBs_(param) - {try - {var - _aBt_= - function(param$0) - {var - _aBx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _OY_, - Runtime_ocaml_Runtime[13], - param), - _aBy_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _OZ_, - traitement_aide_finale_contrib), - _aBx_), - _aBz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _O0_, - Runtime_ocaml_Runtime[13], - _aBy_), - _aBA_=caml_call2(Runtime_ocaml_Runtime[27],_O1_,_aBz_); - if - (caml_call2 - (Runtime_ocaml_Runtime[73],_aBA_,montant_minimal_aide_d842_6)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$373); - var - _aBB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _O2_, - Runtime_ocaml_Runtime[13], - param), - _aBC_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _O3_, - traitement_aide_finale_contrib), - _aBB_), - _aBD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _O4_, - Runtime_ocaml_Runtime[13], - _aBC_); - return caml_call2(Runtime_ocaml_Runtime[27],_O5_,_aBD_)}, - _aBu_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_O6_,1)}, - _aBv_=caml_call4(Runtime_ocaml_Runtime[62],_O7_,[0],_aBu_,_aBt_); - return _aBv_} - catch(_aBw_) - {_aBw_ = caml_wrap_exception(_aBw_); - if(_aBw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OX_]; - throw _aBw_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_O8_,Runtime_ocaml_Runtime[10],_aBs_); - return [0,aide_finale_formule,traitement_aide_finale_montant]} - function calcul_aide_personnalisee_loge$2 - (calcul_aide_personnalisee_loge$2) - {var - mode_occupation=calcul_aide_personnalisee_loge$2[1], - type_aide=calcul_aide_personnalisee_loge$2[2], - informations_calcul=calcul_aide_personnalisee_loge$2[3], - ressources_menage_sans_arrondi=calcul_aide_personnalisee_loge$2[4], - situation_familiale=calcul_aide_personnalisee_loge$2[5], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge$2[6], - zone=calcul_aide_personnalisee_loge$2[7], - date_courante=calcul_aide_personnalisee_loge$2[8]; - try - {var - _aw5_= - function(param) - {switch(mode_occupation[0]) - {case 0:return _O__; - case 1:return _O$_; - case 2:return _Pa_; - case 3:return _Pb_; - default:return _Pc_}}, - _aw6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pd_,1)}, - _aw7_=caml_call4(Runtime_ocaml_Runtime[62],_Pe_,[0],_aw6_,_aw5_)} - catch(_azP_) - {_azP_ = caml_wrap_exception(_azP_); - if(_azP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_O9_]; - throw _azP_} - var - categorie_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_Pf_,embed_categorie_calcul_a_p_l,_aw7_); - try - {var - _aw8_= - function(param) - {var - _azJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$10), - _azK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$0), - _azL_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999$0), - _azM_= - caml_call2 - (Runtime_ocaml_Runtime[67], - ressources_menage_sans_arrondi, - _azL_), - _azN_=caml_call2(Runtime_ocaml_Runtime[65],_azM_,_azK_), - _azO_=caml_call1(Runtime_ocaml_Runtime[38],_azN_); - return caml_call2(Runtime_ocaml_Runtime[65],_azO_,_azJ_)}, - _aw9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ph_,1)}, - _aw__=caml_call4(Runtime_ocaml_Runtime[62],_Pi_,[0],_aw9_,_aw8_)} - catch(_azI_) - {_azI_ = caml_wrap_exception(_azI_); - if(_azI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Pg_]; - throw _azI_} - var - ressources_menage_avec_arrondi= - caml_call3 - (Runtime_ocaml_Runtime[28],_Pj_,Runtime_ocaml_Runtime[13],_aw__); - try - {var - _aw$_= - function(param) - {switch(situation_familiale[0]) - {case 0:return _Pl_; - case 1:return _Pm_; - case 2:return _Pn_; - case 3:return _Po_; - case 4:return _Pp_; - default:return _Pq_}}, - _axa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pr_,1)}, - _axb_=caml_call4(Runtime_ocaml_Runtime[62],_Ps_,[0],_axa_,_aw$_)} - catch(_azH_) - {_azH_ = caml_wrap_exception(_azH_); - if(_azH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Pk_]; - throw _azH_} - var - situation_familiale_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_Pt_,embed_situation_familiale_calc,_axb_); - try - {var - _axc_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$374); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$375); - default:var infos=informations_calcul[1];return infos[1]}}, - _axd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pv_,1)}, - _axe_=caml_call4(Runtime_ocaml_Runtime[62],_Pw_,[0],_axd_,_axc_), - accession_propriete_dot_mensua= - caml_call3 - (Runtime_ocaml_Runtime[28],_Px_,Runtime_ocaml_Runtime[13],_axe_)} - catch(_azG_) - {_azG_ = caml_wrap_exception(_azG_); - if(_azG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Pu_]; - throw _azG_} - try - {var - _axf_=function(param){return ressources_menage_avec_arrondi}, - _axg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pz_,1)}, - _axh_=caml_call4(Runtime_ocaml_Runtime[62],_PA_,[0],_axg_,_axf_), - accession_propriete_dot_ressou= - caml_call3 - (Runtime_ocaml_Runtime[28],_PB_,Runtime_ocaml_Runtime[13],_axh_)} - catch(_azF_) - {_azF_ = caml_wrap_exception(_azF_); - if(_azF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Py_]; - throw _azF_} - try - {var - _axi_=function(param){return nombre_personnes_a_charge}, - _axj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PD_,1)}, - _axk_=caml_call4(Runtime_ocaml_Runtime[62],_PE_,[0],_axj_,_axi_), - accession_propriete_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_PF_,Runtime_ocaml_Runtime[14],_axk_)} - catch(_azE_) - {_azE_ = caml_wrap_exception(_azE_); - if(_azE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PC_]; - throw _azE_} - try - {var - _axl_=function(param){return situation_familiale_calcul_apl}, - _axm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PH_,1)}, - _axn_=caml_call4(Runtime_ocaml_Runtime[62],_PI_,[0],_axm_,_axl_), - accession_propriete_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _PJ_, - embed_situation_familiale_calc, - _axn_)} - catch(_azD_) - {_azD_ = caml_wrap_exception(_azD_); - if(_azD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PG_]; - throw _azD_} - try - {var - _axo_= - function(param) - {switch(informations_calcul[0]) - {case 0:return _PL_; - case 1:return _PM_; - default:var infos=informations_calcul[1];return infos[5]}}, - _axp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PN_,1)}, - _axq_=caml_call4(Runtime_ocaml_Runtime[62],_PO_,[0],_axp_,_axo_), - accession_propriete_dot_type_t= - caml_call3 - (Runtime_ocaml_Runtime[28], - _PP_, - embed_type_travaux_logement_d8, - _axq_)} - catch(_azC_) - {_azC_ = caml_wrap_exception(_azC_); - if(_azC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PK_]; - throw _azC_} - try - {var - _axr_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - default:var infos=informations_calcul[1];return infos[3]}}, - _axs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PR_,1)}, - _axt_=caml_call4(Runtime_ocaml_Runtime[62],_PS_,[0],_axs_,_axr_), - accession_propriete_dot_date_s= - caml_call3 - (Runtime_ocaml_Runtime[28],_PT_,Runtime_ocaml_Runtime[16],_axt_)} - catch(_azB_) - {_azB_ = caml_wrap_exception(_azB_); - if(_azB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PQ_]; - throw _azB_} - try - {var - _axu_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[7]}}, - _axv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PV_,1)}, - _axw_=caml_call4(Runtime_ocaml_Runtime[62],_PW_,[0],_axv_,_axu_), - accession_propriete_dot_local_= - caml_call3 - (Runtime_ocaml_Runtime[28],_PX_,Runtime_ocaml_Runtime[12],_axw_)} - catch(_azA_) - {_azA_ = caml_wrap_exception(_azA_); - if(_azA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PU_]; - throw _azA_} - try - {var - _axx_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - default:var infos=informations_calcul[1];return infos[4]}}, - _axy_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PZ_,1)}, - _axz_=caml_call4(Runtime_ocaml_Runtime[62],_P0_,[0],_axy_,_axx_), - accession_propriete_dot_date_e= - caml_call3 - (Runtime_ocaml_Runtime[28],_P1_,Runtime_ocaml_Runtime[16],_axz_)} - catch(_azz_) - {_azz_ = caml_wrap_exception(_azz_); - if(_azz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PY_]; - throw _azz_} - try - {var - _axA_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[8]}}, - _axB_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P3_,1)}, - _axC_=caml_call4(Runtime_ocaml_Runtime[62],_P4_,[0],_axB_,_axA_), - accession_propriete_dot_coprop= - caml_call3 - (Runtime_ocaml_Runtime[28],_P5_,Runtime_ocaml_Runtime[12],_axC_)} - catch(_azy_) - {_azy_ = caml_wrap_exception(_azy_); - if(_azy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_P2_]; - throw _azy_} - try - {var - _axD_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[9]}}, - _axE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P7_,1)}, - _axF_=caml_call4(Runtime_ocaml_Runtime[62],_P8_,[0],_axE_,_axD_), - accession_propriete_dot_situat$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_P9_,Runtime_ocaml_Runtime[12],_axF_)} - catch(_azx_) - {_azx_ = caml_wrap_exception(_azx_); - if(_azx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_P6_]; - throw _azx_} - try - {var - _axG_=function(param){return zone}, - _axH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P$_,1)}, - _axI_=caml_call4(Runtime_ocaml_Runtime[62],_Qa_,[0],_axH_,_axG_), - accession_propriete_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_Qb_,embed_zone_d_habitation,_axI_)} - catch(_azw_) - {_azw_ = caml_wrap_exception(_azw_); - if(_azw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_P__]; - throw _azw_} - try - {var - _axJ_= - function(param) - {switch(informations_calcul[0]) - {case 0:return _Qd_; - case 1:return _Qe_; - default:var infos=informations_calcul[1];return infos[10]}}, - _axK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qf_,1)}, - _axL_=caml_call4(Runtime_ocaml_Runtime[62],_Qg_,[0],_axK_,_axJ_), - accession_propriete_dot_type_p= - caml_call3(Runtime_ocaml_Runtime[28],_Qh_,embed_type_pret,_axL_)} - catch(_azv_) - {_azv_ = caml_wrap_exception(_azv_); - if(_azv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qc_]; - throw _azv_} - try - {var - _axM_= - function(param) - {switch(informations_calcul[0]) - {case 0:return _Qj_; - case 1:return _Qk_; - default:var infos=informations_calcul[1];return infos[11]}}, - _axN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ql_,1)}, - _axO_=caml_call4(Runtime_ocaml_Runtime[62],_Qm_,[0],_axN_,_axM_), - accession_propriete_dot_ancien= - caml_call3 - (Runtime_ocaml_Runtime[28],_Qn_,embed_neuf_ou_ancien,_axO_)} - catch(_azu_) - {_azu_ = caml_wrap_exception(_azu_); - if(_azu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qi_]; - throw _azu_} - try - {var - _axP_=function(param){return date_courante}, - _axQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qp_,1)}, - _axR_=caml_call4(Runtime_ocaml_Runtime[62],_Qq_,[0],_axQ_,_axP_), - accession_propriete_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_Qr_,Runtime_ocaml_Runtime[16],_axR_)} - catch(_azt_) - {_azt_ = caml_wrap_exception(_azt_); - if(_azt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qo_]; - throw _azt_} - var - _axS_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Qs_,calcul_aide_personnalisee_loge$1), - [0, - accession_propriete_dot_mensua, - accession_propriete_dot_ressou, - accession_propriete_dot_nombre, - accession_propriete_dot_situat, - accession_propriete_dot_type_t, - accession_propriete_dot_date_s, - accession_propriete_dot_local_, - accession_propriete_dot_date_e, - accession_propriete_dot_coprop, - accession_propriete_dot_situat$0, - accession_propriete_dot_zone, - accession_propriete_dot_type_p, - accession_propriete_dot_ancien, - accession_propriete_dot_date_c]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Qt_,_axS_), - accession_propriete_dot_aide_f=result[4], - accession_propriete_dot_traite=result[5]; - try - {var - _axT_=function(param){return mode_occupation}, - _axU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qv_,1)}, - _axV_=caml_call4(Runtime_ocaml_Runtime[62],_Qw_,[0],_axU_,_axT_), - logement_foyer_dot_mode_occupa= - caml_call3 - (Runtime_ocaml_Runtime[28],_Qx_,embed_mode_occupation,_axV_)} - catch(_azs_) - {_azs_ = caml_wrap_exception(_azs_); - if(_azs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qu_]; - throw _azs_} - try - {var - _axW_=function(param){return ressources_menage_avec_arrondi}, - _axX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qz_,1)}, - _axY_=caml_call4(Runtime_ocaml_Runtime[62],_QA_,[0],_axX_,_axW_), - logement_foyer_dot_ressources_= - caml_call3 - (Runtime_ocaml_Runtime[28],_QB_,Runtime_ocaml_Runtime[13],_axY_)} - catch(_azr_) - {_azr_ = caml_wrap_exception(_azr_); - if(_azr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qy_]; - throw _azr_} - try - {var - _axZ_=function(param){return nombre_personnes_a_charge}, - _ax0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QD_,1)}, - _ax1_=caml_call4(Runtime_ocaml_Runtime[62],_QE_,[0],_ax0_,_axZ_), - logement_foyer_dot_nombre_pers= - caml_call3 - (Runtime_ocaml_Runtime[28],_QF_,Runtime_ocaml_Runtime[14],_ax1_)} - catch(_azq_) - {_azq_ = caml_wrap_exception(_azq_); - if(_azq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QC_]; - throw _azq_} - try - {var - _ax2_=function(param){return situation_familiale_calcul_apl}, - _ax3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QH_,1)}, - _ax4_=caml_call4(Runtime_ocaml_Runtime[62],_QI_,[0],_ax3_,_ax2_), - logement_foyer_dot_situation_f= - caml_call3 - (Runtime_ocaml_Runtime[28], - _QJ_, - embed_situation_familiale_calc, - _ax4_)} - catch(_azp_) - {_azp_ = caml_wrap_exception(_azp_); - if(_azp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QG_]; - throw _azp_} - try - {var - _ax5_=function(param){return zone}, - _ax6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QL_,1)}, - _ax7_=caml_call4(Runtime_ocaml_Runtime[62],_QM_,[0],_ax6_,_ax5_), - logement_foyer_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_QN_,embed_zone_d_habitation,_ax7_)} - catch(_azo_) - {_azo_ = caml_wrap_exception(_azo_); - if(_azo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QK_]; - throw _azo_} - try - {var - _ax8_=function(param){return date_courante}, - _ax9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QP_,1)}, - _ax__=caml_call4(Runtime_ocaml_Runtime[62],_QQ_,[0],_ax9_,_ax8_), - logement_foyer_dot_date_couran= - caml_call3 - (Runtime_ocaml_Runtime[28],_QR_,Runtime_ocaml_Runtime[16],_ax__)} - catch(_azn_) - {_azn_ = caml_wrap_exception(_azn_); - if(_azn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QO_]; - throw _azn_} - try - {var - _ax$_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$376); - case 1:var infos=informations_calcul[1];return infos[1]; - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$377)}}, - _aya_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QT_,1)}, - _ayb_=caml_call4(Runtime_ocaml_Runtime[62],_QU_,[0],_aya_,_ax$_), - logement_foyer_dot_redevance= - caml_call3 - (Runtime_ocaml_Runtime[28],_QV_,Runtime_ocaml_Runtime[13],_ayb_)} - catch(_azm_) - {_azm_ = caml_wrap_exception(_azm_); - if(_azm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QS_]; - throw _azm_} - function logement_foyer_dot_condition_2(param) - {throw Runtime_ocaml_Runtime[2]} - function logement_foyer_dot_n_nombre_pa(param) - {throw Runtime_ocaml_Runtime[2]} - var - _ayc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_QW_,calcul_aide_personnalisee_loge$0), - [0, - logement_foyer_dot_mode_occupa, - logement_foyer_dot_ressources_, - logement_foyer_dot_nombre_pers, - logement_foyer_dot_situation_f, - logement_foyer_dot_zone, - logement_foyer_dot_date_couran, - logement_foyer_dot_redevance, - logement_foyer_dot_condition_2, - logement_foyer_dot_n_nombre_pa]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_QX_,_ayc_), - logement_foyer_dot_aide_finale=result$0[8], - logement_foyer_dot_traitement_=result$0[9]; - try - {var - _ayd_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[1]; - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$378); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$379)}}, - _aye_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QZ_,1)}, - _ayf_=caml_call4(Runtime_ocaml_Runtime[62],_Q0_,[0],_aye_,_ayd_), - locatif_dot_loyer_principal= - caml_call3 - (Runtime_ocaml_Runtime[28],_Q1_,Runtime_ocaml_Runtime[13],_ayf_)} - catch(_azl_) - {_azl_ = caml_wrap_exception(_azl_); - if(_azl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QY_]; - throw _azl_} - try - {var - _ayg_=function(param){return ressources_menage_avec_arrondi}, - _ayh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q3_,1)}, - _ayi_=caml_call4(Runtime_ocaml_Runtime[62],_Q4_,[0],_ayh_,_ayg_), - locatif_dot_ressources_menage_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Q5_,Runtime_ocaml_Runtime[13],_ayi_)} - catch(_azk_) - {_azk_ = caml_wrap_exception(_azk_); - if(_azk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Q2_]; - throw _azk_} - try - {var - _ayj_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[2]; - case 1:return 0; - default:return 0}}, - _ayk_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q7_,1)}, - _ayl_=caml_call4(Runtime_ocaml_Runtime[62],_Q8_,[0],_ayk_,_ayj_), - locatif_dot_beneficiaire_aide_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Q9_,Runtime_ocaml_Runtime[12],_ayl_)} - catch(_azj_) - {_azj_ = caml_wrap_exception(_azj_); - if(_azj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Q6_]; - throw _azj_} - try - {var - _aym_=function(param){return date_courante}, - _ayn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q$_,1)}, - _ayo_=caml_call4(Runtime_ocaml_Runtime[62],_Ra_,[0],_ayn_,_aym_), - locatif_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rb_,Runtime_ocaml_Runtime[16],_ayo_)} - catch(_azi_) - {_azi_ = caml_wrap_exception(_azi_); - if(_azi_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Q__]; - throw _azi_} - try - {var - _ayp_=function(param){return nombre_personnes_a_charge}, - _ayq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rd_,1)}, - _ayr_=caml_call4(Runtime_ocaml_Runtime[62],_Re_,[0],_ayq_,_ayp_), - locatif_dot_nombre_personnes_a= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rf_,Runtime_ocaml_Runtime[14],_ayr_)} - catch(_azh_) - {_azh_ = caml_wrap_exception(_azh_); - if(_azh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rc_]; - throw _azh_} - try - {var - _ays_=function(param){return situation_familiale_calcul_apl}, - _ayt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rh_,1)}, - _ayu_=caml_call4(Runtime_ocaml_Runtime[62],_Ri_,[0],_ayt_,_ays_), - locatif_dot_situation_familial= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Rj_, - embed_situation_familiale_calc, - _ayu_)} - catch(_azg_) - {_azg_ = caml_wrap_exception(_azg_); - if(_azg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rg_]; - throw _azg_} - try - {var - _ayv_=function(param){return zone}, - _ayw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rl_,1)}, - _ayx_=caml_call4(Runtime_ocaml_Runtime[62],_Rm_,[0],_ayw_,_ayv_), - locatif_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rn_,embed_zone_d_habitation,_ayx_)} - catch(_azf_) - {_azf_ = caml_wrap_exception(_azf_); - if(_azf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rk_]; - throw _azf_} - try - {var - _ayy_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[3]; - case 1:return 0; - default:return 0}}, - _ayz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rp_,1)}, - _ayA_=caml_call4(Runtime_ocaml_Runtime[62],_Rq_,[0],_ayz_,_ayy_), - locatif_dot_logement_est_chamb= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rr_,Runtime_ocaml_Runtime[12],_ayA_)} - catch(_aze_) - {_aze_ = caml_wrap_exception(_aze_); - if(_aze_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ro_]; - throw _aze_} - try - {var - _ayB_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[5]; - case 1:return 0; - default:return 0}}, - _ayC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rt_,1)}, - _ayD_=caml_call4(Runtime_ocaml_Runtime[62],_Ru_,[0],_ayC_,_ayB_), - locatif_dot_agees_ou_handicap_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rv_,Runtime_ocaml_Runtime[12],_ayD_)} - catch(_azd_) - {_azd_ = caml_wrap_exception(_azd_); - if(_azd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rs_]; - throw _azd_} - try - {var - _ayE_=function(param){return type_aide}, - _ayF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rx_,1)}, - _ayG_=caml_call4(Runtime_ocaml_Runtime[62],_Ry_,[0],_ayF_,_ayE_), - locatif_dot_type_aide= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Rz_, - embed_type_aides_personnelle_l, - _ayG_)} - catch(_azc_) - {_azc_ = caml_wrap_exception(_azc_); - if(_azc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rw_]; - throw _azc_} - try - {var - _ayH_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[4]; - case 1:return 0; - default:return 0}}, - _ayI_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RB_,1)}, - _ayJ_=caml_call4(Runtime_ocaml_Runtime[62],_RC_,[0],_ayI_,_ayH_), - locatif_dot_colocation= - caml_call3 - (Runtime_ocaml_Runtime[28],_RD_,Runtime_ocaml_Runtime[12],_ayJ_)} - catch(_azb_) - {_azb_ = caml_wrap_exception(_azb_); - if(_azb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RA_]; - throw _azb_} - try - {var - _ayK_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[6]; - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$380); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$381)}}, - _ayL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RF_,1)}, - _ayM_=caml_call4(Runtime_ocaml_Runtime[62],_RG_,[0],_ayL_,_ayK_), - locatif_dot_reduction_loyer_so= - caml_call3 - (Runtime_ocaml_Runtime[28],_RH_,Runtime_ocaml_Runtime[13],_ayM_)} - catch(_aza_) - {_aza_ = caml_wrap_exception(_aza_); - if(_aza_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RE_]; - throw _aza_} - var - _ayN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_RI_,calcul_aide_personnalisee_loge), - [0, - locatif_dot_loyer_principal, - locatif_dot_ressources_menage_, - locatif_dot_beneficiaire_aide_, - locatif_dot_date_courante, - locatif_dot_nombre_personnes_a, - locatif_dot_situation_familial, - locatif_dot_zone, - locatif_dot_logement_est_chamb, - locatif_dot_agees_ou_handicap_, - locatif_dot_type_aide, - locatif_dot_colocation, - locatif_dot_reduction_loyer_so]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_RJ_,_ayN_), - locatif_dot_aide_finale_formul=result$1[6], - locatif_dot_traitement_aide_fi=result$1[7]; - function _ayO_(param) - {try - {var - _ayZ_= - function(param$0) - {switch(categorie_calcul_apl[0]) - {case 0: - var - _ay3_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RL_, - Runtime_ocaml_Runtime[13], - param), - _ay4_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _RM_, - locatif_dot_traitement_aide_fi), - _ay3_), - _ay5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RN_, - Runtime_ocaml_Runtime[13], - _ay4_); - return caml_call2(Runtime_ocaml_Runtime[27],_RO_,_ay5_); - case 1: - var - _ay6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RP_, - Runtime_ocaml_Runtime[13], - param), - _ay7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _RQ_, - accession_propriete_dot_traite), - _ay6_), - _ay8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RR_, - Runtime_ocaml_Runtime[13], - _ay7_); - return caml_call2(Runtime_ocaml_Runtime[27],_RS_,_ay8_); - default: - var - _ay9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RT_, - Runtime_ocaml_Runtime[13], - param), - _ay__= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _RU_, - logement_foyer_dot_traitement_), - _ay9_), - _ay$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RV_, - Runtime_ocaml_Runtime[13], - _ay__); - return caml_call2(Runtime_ocaml_Runtime[27],_RW_,_ay$_)}}, - _ay0_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_RX_,1)}, - _ay1_=caml_call4(Runtime_ocaml_Runtime[62],_RY_,[0],_ay0_,_ayZ_); - return _ay1_} - catch(_ay2_) - {_ay2_ = caml_wrap_exception(_ay2_); - if(_ay2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RK_]; - throw _ay2_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_RZ_,Runtime_ocaml_Runtime[10],_ayO_); - try - {var - _ayP_= - function(param) - {switch(categorie_calcul_apl[0]) - {case 0:return locatif_dot_aide_finale_formul; - case 1:return accession_propriete_dot_aide_f; - default:return logement_foyer_dot_aide_finale}}, - _ayQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_R1_,1)}, - _ayR_=caml_call4(Runtime_ocaml_Runtime[62],_R2_,[0],_ayQ_,_ayP_)} - catch(_ayY_) - {_ayY_ = caml_wrap_exception(_ayY_); - if(_ayY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_R0_]; - throw _ayY_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_R3_,Runtime_ocaml_Runtime[13],_ayR_); - switch(categorie_calcul_apl[0]) - {case 0:var _ayS_=0;break;case 1:var _ayS_=1;break;default:var _ayS_=0} - if(_ayS_) - switch(informations_calcul[0]) - {case 0:var _ayT_=0;break; - case 1:var _ayT_=0;break; - default:var _ayT_=1} - else - var _ayT_=1; - if(_ayT_) - {switch(categorie_calcul_apl[0]) - {case 0:var _ayU_=0;break; - case 1:var _ayU_=0;break; - default:var _ayU_=1} - if(_ayU_) - switch(informations_calcul[0]) - {case 0:var _ayV_=0;break; - case 1:var _ayV_=1;break; - default:var _ayV_=0} - else - var _ayV_=1; - if(_ayV_) - {switch(categorie_calcul_apl[0]) - {case 0:var _ayW_=1;break; - case 1:var _ayW_=0;break; - default:var _ayW_=0} - if(_ayW_) - switch(informations_calcul[0]) - {case 0:var _ayX_=1;break; - case 1:var _ayX_=0;break; - default:var _ayX_=0} - else - var _ayX_=1; - if(_ayX_)return [0,aide_finale_formule,traitement_aide_finale]; - throw [0,Runtime_ocaml_Runtime[3],_R4_]} - throw [0,Runtime_ocaml_Runtime[3],_R5_]} - throw [0,Runtime_ocaml_Runtime[3],_R6_]} - function eligibilite_prime_de_demenagem(eligibilite_prime_de_demenagem) - {var - date_emmenagement=eligibilite_prime_de_demenagem[1], - menage=eligibilite_prime_de_demenagem[2], - demandeur=eligibilite_prime_de_demenagem[3], - date_courante=eligibilite_prime_de_demenagem[4], - depenses_justifiees_reellement=eligibilite_prime_de_demenagem[5]; - try - {var - _avD_= - function(param){return caml_call3(Runtime_ocaml_Runtime[59],0,6,0)}, - _avE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_R8_,1)}, - _avF_=caml_call4(Runtime_ocaml_Runtime[62],_R9_,[0],_avE_,_avD_)} - catch(_aw4_) - {_aw4_ = caml_wrap_exception(_aw4_); - if(_aw4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_R7_]; - throw _aw4_} - var - delai_apres_emmenagement_l823_= - caml_call3 - (Runtime_ocaml_Runtime[28],_R__,Runtime_ocaml_Runtime[17],_avF_); - try - {var - _avG_=function(param){return 0}, - _avH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sa_,1)}, - _avI_= - [0, - function(param) - {function _awS_(param){return 1} - function _awT_(param) - {var - _awU_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$86), - _awV_=menage[7], - _awW_=menage[3], - _awX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$382); - function _awY_(acc,personne_a_charge) - {var _aw2_=0 === personne_a_charge[0]?1:0; - if(_aw2_) - {var _aw3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$259); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_aw3_)} - return acc} - var - _awZ_=caml_call3(Stdlib_Array[17],_awY_,_awX_,_awW_), - _aw0_=caml_call2(Runtime_ocaml_Runtime[75],_awZ_,_awV_), - _aw1_=caml_call2(Runtime_ocaml_Runtime[81],_aw0_,_awU_); - return caml_call2(Runtime_ocaml_Runtime[29],_Sb_,_aw1_)} - return caml_call4(Runtime_ocaml_Runtime[62],_Sc_,[0],_awT_,_awS_)}], - _avJ_=caml_call4(Runtime_ocaml_Runtime[62],_Sd_,_avI_,_avH_,_avG_)} - catch(_awR_) - {_awR_ = caml_wrap_exception(_awR_); - if(_awR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_R$_]; - throw _awR_} - var - condition_rang_enfant= - caml_call3 - (Runtime_ocaml_Runtime[28],_Se_,Runtime_ocaml_Runtime[12],_avJ_); - try - {var - _avK_=function(param){return date_courante}, - _avL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sg_,1)}, - _avM_=caml_call4(Runtime_ocaml_Runtime[62],_Sh_,[0],_avL_,_avK_), - base_mensuelle_allocations_fam= - caml_call3 - (Runtime_ocaml_Runtime[28],_Si_,Runtime_ocaml_Runtime[16],_avM_)} - catch(_awQ_) - {_awQ_ = caml_wrap_exception(_awQ_); - if(_awQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Sf_]; - throw _awQ_} - var - _avN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Sj_,base_mensuelle_allocations_fam$5), - [0,base_mensuelle_allocations_fam]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Sk_,_avN_), - base_mensuelle_allocations_fam$0=result[1]; - try - {var - _avO_=function(param){return menage}, - _avP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sm_,1)}, - _avQ_=caml_call4(Runtime_ocaml_Runtime[62],_Sn_,[0],_avP_,_avO_), - eligibilite_apl_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_So_,embed_menage,_avQ_)} - catch(_awP_) - {_awP_ = caml_wrap_exception(_awP_); - if(_awP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Sl_]; - throw _awP_} - try - {var - _avR_=function(param){return demandeur}, - _avS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sq_,1)}, - _avT_=caml_call4(Runtime_ocaml_Runtime[62],_Sr_,[0],_avS_,_avR_), - eligibilite_apl_dot_demandeur= - caml_call3(Runtime_ocaml_Runtime[28],_Ss_,embed_demandeur,_avT_)} - catch(_awO_) - {_awO_ = caml_wrap_exception(_awO_); - if(_awO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Sp_]; - throw _awO_} - try - {var - _avU_=function(param){return date_courante}, - _avV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Su_,1)}, - _avW_=caml_call4(Runtime_ocaml_Runtime[62],_Sv_,[0],_avV_,_avU_), - eligibilite_apl_dot_date_coura= - caml_call3 - (Runtime_ocaml_Runtime[28],_Sw_,Runtime_ocaml_Runtime[16],_avW_)} - catch(_awN_) - {_awN_ = caml_wrap_exception(_awN_); - if(_awN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_St_]; - throw _awN_} - function eligibilite_apl_dot_condition_(param) - {throw Runtime_ocaml_Runtime[2]} - function eligibilite_apl_dot_condition_$0(param) - {throw Runtime_ocaml_Runtime[2]} - var - _avX_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Sx_,eligibilite_aides_personnelle_), - [0, - eligibilite_apl_dot_menage, - eligibilite_apl_dot_demandeur, - eligibilite_apl_dot_date_coura, - eligibilite_apl_dot_condition_, - eligibilite_apl_dot_condition_$0]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_Sy_,_avX_), - eligibilite_apl_dot_date_coura$0=result$0[1], - eligibilite_apl_dot_eligibilit=result$0[2]; - try - {var - _avY_=function(param){return 0}, - _avZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SA_,1)}, - _av0_= - [0, - function(param) - {function _awD_(param){return 1} - function _awE_(param) - {var _awF_=menage[9]; - if(0 === _awF_[0]) - var _awG_=0; - else - {var date_naissance_ou_grossesse=_awF_[1]; - switch(date_naissance_ou_grossesse[0]) - {case 0: - var - date_naissance=date_naissance_ou_grossesse[1], - _awH_=caml_call3(Runtime_ocaml_Runtime[59],0,0,-1), - _awI_=caml_call3(Runtime_ocaml_Runtime[59],2,0,0), - _awJ_= - caml_call2(Runtime_ocaml_Runtime[95],date_naissance,_awI_), - _awK_=caml_call1(Runtime_ocaml_Runtime[57],_awJ_), - _awL_=caml_call2(Runtime_ocaml_Runtime[95],_awK_,_awH_), - _awM_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_awL_); - break; - case 1:var _awM_=0;break; - default:var _awM_=1} - var _awG_=_awM_} - return caml_call2(Runtime_ocaml_Runtime[29],_SB_,_awG_)} - return caml_call4(Runtime_ocaml_Runtime[62],_SC_,[0],_awE_,_awD_)}], - _av1_=caml_call4(Runtime_ocaml_Runtime[62],_SD_,_av0_,_avZ_,_avY_)} - catch(_awC_) - {_awC_ = caml_wrap_exception(_awC_); - if(_awC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Sz_]; - throw _awC_} - var - condition_periode_demenagement= - caml_call3 - (Runtime_ocaml_Runtime[28],_SE_,Runtime_ocaml_Runtime[12],_av1_); - try - {var - _av2_= - function(param) - {var - _awh_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$87), - _awi_=menage[3], - _awj_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$383); - function _awk_(acc,personne_a_charge) - {var _awA_=0 === personne_a_charge[0]?1:0; - if(_awA_) - {var _awB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$260); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_awB_)} - return acc} - var _awl_=caml_call3(Stdlib_Array[17],_awk_,_awj_,_awi_); - if(caml_call2(Runtime_ocaml_Runtime[83],_awl_,_awh_)) - var - _awm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$1), - _awn_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$88), - _awo_=menage[3], - _awp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$384), - _awq_= - function(acc,personne_a_charge) - {var _awy_=0 === personne_a_charge[0]?1:0; - if(_awy_) - {var _awz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$261); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_awz_)} - return acc}, - _awr_=caml_call3(Stdlib_Array[17],_awq_,_awp_,_awo_), - _aws_=caml_call2(Runtime_ocaml_Runtime[76],_awr_,_awn_), - _awt_=caml_call1(Runtime_ocaml_Runtime[41],_aws_), - _awu_=caml_call2(Runtime_ocaml_Runtime[88],_awt_,_awm_), - _awv_= - caml_call2 - (Runtime_ocaml_Runtime[65], - base_mensuelle_allocations_fam$0, - _awu_); - else - var _awv_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$385); - var - _aww_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_4), - _awx_= - caml_call2 - (Runtime_ocaml_Runtime[65], - base_mensuelle_allocations_fam$0, - _aww_); - return caml_call2(Runtime_ocaml_Runtime[67],_awx_,_awv_)}, - _av3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SG_,1)}, - _av4_=caml_call4(Runtime_ocaml_Runtime[62],_SH_,[0],_av3_,_av2_)} - catch(_awg_) - {_awg_ = caml_wrap_exception(_awg_); - if(_awg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SF_]; - throw _awg_} - var - plafond_d823_22= - caml_call3 - (Runtime_ocaml_Runtime[28],_SI_,Runtime_ocaml_Runtime[13],_av4_); - try - {var - _av5_=function(param){return 0}, - _av6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SK_,1)}, - _av7_= - [0, - function(param) - {function _awc_(param){return 1} - function _awd_(param) - {if(eligibilite_apl_dot_eligibilit) - if(condition_rang_enfant) - if(condition_periode_demenagement) - var - _awe_= - caml_call2 - (Runtime_ocaml_Runtime[96], - eligibilite_apl_dot_date_coura$0, - date_emmenagement), - _awf_= - caml_call2 - (Runtime_ocaml_Runtime[109], - _awe_, - delai_apres_emmenagement_l823_); - else - var _awf_=condition_periode_demenagement; - else - var _awf_=condition_rang_enfant; - else - var _awf_=eligibilite_apl_dot_eligibilit; - return caml_call2(Runtime_ocaml_Runtime[29],_SL_,_awf_)} - return caml_call4(Runtime_ocaml_Runtime[62],_SM_,[0],_awd_,_awc_)}], - _av8_=caml_call4(Runtime_ocaml_Runtime[62],_SN_,_av7_,_av6_,_av5_)} - catch(_awb_) - {_awb_ = caml_wrap_exception(_awb_); - if(_awb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SJ_]; - throw _awb_} - caml_call3 - (Runtime_ocaml_Runtime[28],_SO_,Runtime_ocaml_Runtime[12],_av8_); - try - {var - _av9_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[71], - depenses_justifiees_reellement, - plafond_d823_22) - ?depenses_justifiees_reellement - :plafond_d823_22}, - _av__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SQ_,1)}, - _av$_=caml_call4(Runtime_ocaml_Runtime[62],_SR_,[0],_av__,_av9_)} - catch(_awa_) - {_awa_ = caml_wrap_exception(_awa_); - if(_awa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SP_]; - throw _awa_} - var - montant_prime_demenagement= - caml_call3 - (Runtime_ocaml_Runtime[28],_SS_,Runtime_ocaml_Runtime[13],_av$_); - return [0,montant_prime_demenagement]} - function eligibilite_aide_personnalisee(eligibilite_aide_personnalisee) - {var - menage=eligibilite_aide_personnalisee[1], - demandeur=eligibilite_aide_personnalisee[2], - date_courante=eligibilite_aide_personnalisee[3]; - function _att_(param) - {try - {var - _avi_=function(param){return 0}, - _avj_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_SU_,1)}, - _avk_= - [0, - function(param$0) - {function _avn_(param){throw Runtime_ocaml_Runtime[2]} - function _avo_(param){return 0} - var - _avp_= - [0, - function(param$0) - {function _avq_(param){return 1} - function _avr_(param$0) - {var _avz_=0 === param[3][0]?1:0; - if(_avz_) - {switch(param[1][0]) - {case 0:var _avA_=1;break; - case 1:var _avA_=0;break; - case 2:var _avA_=0;break; - case 3:var _avA_=0;break; - default:var _avA_=0} - if(_avA_) - var _avB_=_avA_; - else - {switch(param[1][0]) - {case 0:var _avC_=0;break; - case 1:var _avC_=1;break; - case 2:var _avC_=0;break; - case 3:var _avC_=0;break; - default:var _avC_=0} - var _avB_=_avC_}} - else - var _avB_=_avz_; - return caml_call2(Runtime_ocaml_Runtime[29],_SV_,_avB_)} - var - _avs_= - [0, - function(param$0) - {function _avt_(param){return 1} - function _avu_(param$0) - {var _avv_=0 === param[3][0]?0:1; - if(_avv_) - {switch(param[1][0]) - {case 0:var _avw_=0;break; - case 1:var _avw_=0;break; - case 2:var _avw_=1;break; - case 3:var _avw_=0;break; - default:var _avw_=0} - if(_avw_) - var _avx_=_avw_; - else - {switch(param[1][0]) - {case 0:var _avy_=0;break; - case 1:var _avy_=0;break; - case 2:var _avy_=0;break; - case 3:var _avy_=1;break; - default:var _avy_=0} - var _avx_=_avy_}} - else - var _avx_=_avv_; - return caml_call2(Runtime_ocaml_Runtime[29],_SW_,_avx_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_SX_,[0],_avu_,_avt_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_SY_,_avs_,_avr_,_avq_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_SZ_,_avp_,_avo_,_avn_)}], - _avl_=caml_call4(Runtime_ocaml_Runtime[62],_S0_,_avk_,_avj_,_avi_); - return _avl_} - catch(_avm_) - {_avm_ = caml_wrap_exception(_avm_); - if(_avm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ST_]; - throw _avm_}} - var - caracteristiques_pret_l831_1_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_S1_,Runtime_ocaml_Runtime[10],_att_); - function _atu_(param) - {try - {var - _ave_=function(param){return 0}, - _avf_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_S3_,1)}, - _avg_=caml_call4(Runtime_ocaml_Runtime[62],_S4_,[0],_avf_,_ave_); - return _avg_} - catch(_avh_) - {_avh_ = caml_wrap_exception(_avh_); - if(_avh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_S2_]; - throw _avh_}} - var - caracteristiques_pret_l831_1_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_S5_,Runtime_ocaml_Runtime[10],_atu_); - try - {var - _atv_=function(param){return 0}, - _atw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S7_,1)}, - _atx_= - [0, - function(param) - {function _auQ_(param){return 1} - function _auR_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_S8_,1)} - var - _auS_= - [0, - function(param) - {function _auT_(param){return 0} - function _auU_(param) - {var _ava_=menage[2][3]; - switch(_ava_[0]) - {case 0:var _avb_=0;break; - case 1:var _avb_=0;break; - case 2: - var - propriete=_ava_[1], - _avc_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _avb_= - caml_call2(Runtime_ocaml_Runtime[98],propriete[1][2],_avc_); - break; - case 3:var _avb_=0;break; - default: - var - propriete$0=_ava_[1], - _avd_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _avb_= - caml_call2 - (Runtime_ocaml_Runtime[98],propriete$0[1][2],_avd_)} - return caml_call2(Runtime_ocaml_Runtime[29],_S9_,_avb_)} - var - _auV_= - [0, - function(param) - {function _auW_(param){return 1} - function _auX_(param) - {var _auY_=menage[2][3]; - switch(_auY_[0]) - {case 0:var _auZ_=0;break; - case 1:var _auZ_=0;break; - case 2: - var - propriete=_auY_[1], - _au0_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _au1_= - caml_call2(Runtime_ocaml_Runtime[98],propriete[1][2],_au0_); - if(_au1_) - {var - _au2_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _au3_= - caml_call2(Runtime_ocaml_Runtime[101],propriete[1][2],_au2_); - if(_au3_) - var _au4_=menage[2][9],_au5_=_au4_?menage[2][10]:_au4_; - else - var _au5_=_au3_} - else - var _au5_=_au1_; - var _auZ_=_au5_; - break; - case 3:var _auZ_=0;break; - default: - var - propriete$0=_auY_[1], - _au6_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1), - _au7_= - caml_call2 - (Runtime_ocaml_Runtime[98],propriete$0[1][2],_au6_); - if(_au7_) - {var - _au8_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1), - _au9_= - caml_call2 - (Runtime_ocaml_Runtime[101],propriete$0[1][2],_au8_); - if(_au9_) - var _au__=menage[2][9],_au$_=_au__?menage[2][10]:_au__; - else - var _au$_=_au9_} - else - var _au$_=_au7_; - var _auZ_=_au$_} - return caml_call2(Runtime_ocaml_Runtime[29],_S__,_auZ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_S$_,[0],_auX_,_auW_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_Ta_,_auV_,_auU_,_auT_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_Tb_,_auS_,_auR_,_auQ_)}], - _aty_=caml_call4(Runtime_ocaml_Runtime[62],_Tc_,_atx_,_atw_,_atv_)} - catch(_auP_) - {_auP_ = caml_wrap_exception(_auP_); - if(_auP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_S6_]; - throw _auP_} - var - condition_logement_pret= - caml_call3 - (Runtime_ocaml_Runtime[28],_Td_,Runtime_ocaml_Runtime[12],_aty_); - try - {var - _atz_=function(param){return menage}, - _atA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tf_,1)}, - _atB_=caml_call4(Runtime_ocaml_Runtime[62],_Tg_,[0],_atA_,_atz_), - eligibilite_commune_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_Th_,embed_menage,_atB_)} - catch(_auO_) - {_auO_ = caml_wrap_exception(_auO_); - if(_auO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Te_]; - throw _auO_} - try - {var - _atC_=function(param){return demandeur}, - _atD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tj_,1)}, - _atE_=caml_call4(Runtime_ocaml_Runtime[62],_Tk_,[0],_atD_,_atC_), - eligibilite_commune_dot_demand= - caml_call3(Runtime_ocaml_Runtime[28],_Tl_,embed_demandeur,_atE_)} - catch(_auN_) - {_auN_ = caml_wrap_exception(_auN_); - if(_auN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ti_]; - throw _auN_} - try - {var - _atF_=function(param){return date_courante}, - _atG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tn_,1)}, - _atH_=caml_call4(Runtime_ocaml_Runtime[62],_To_,[0],_atG_,_atF_), - eligibilite_commune_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_Tp_,Runtime_ocaml_Runtime[16],_atH_)} - catch(_auM_) - {_auM_ = caml_wrap_exception(_auM_); - if(_auM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Tm_]; - throw _auM_} - function eligibilite_commune_dot_condit(param) - {throw Runtime_ocaml_Runtime[2]} - function eligibilite_commune_dot_condit$0(param) - {throw Runtime_ocaml_Runtime[2]} - var - _atI_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Tq_,eligibilite_aides_personnelle_), - [0, - eligibilite_commune_dot_menage, - eligibilite_commune_dot_demand, - eligibilite_commune_dot_date_c, - eligibilite_commune_dot_condit, - eligibilite_commune_dot_condit$0]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Tr_,_atI_), - eligibilite_commune_dot_eligib=result[2], - eligibilite_commune_dot_nombre=result[3], - eligibilite_commune_dot_coeffi=result[4]; - try - {var - _atJ_=function(param){return 0}, - _atK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tt_,1)}, - _atL_= - function(param) - {function _aup_(param){throw Runtime_ocaml_Runtime[2]} - function _auq_(param){return 0} - var - _aur_= - [0, - function(param) - {function _aus_(param){return 1} - function _aut_(param) - {var _auH_=menage[2][3]; - switch(_auH_[0]) - {case 0:var _auI_=0;break; - case 1:var _auI_=0;break; - case 2: - var - propriete=_auH_[1], - _auJ_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Tv_,embed_pret,propriete[1]), - _auK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Tw_, - caracteristiques_pret_l831_1_1), - _auJ_), - _auL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Tx_, - Runtime_ocaml_Runtime[12], - _auK_), - _auI_=caml_call2(Runtime_ocaml_Runtime[27],_Ty_,_auL_); - break; - case 3:var _auI_=0;break; - default:var _auI_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Tu_,_auI_)} - var - _auu_= - [0, - function(param) - {function _auv_(param){return 1} - function _auw_(param) - {var _auC_=menage[2][3]; - switch(_auC_[0]) - {case 0:var _auD_=0;break; - case 1:var _auD_=0;break; - case 2:var _auD_=0;break; - case 3:var _auD_=0;break; - default: - var - propriete=_auC_[1], - _auE_= - caml_call3 - (Runtime_ocaml_Runtime[28],_TA_,embed_pret,propriete[1]), - _auF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _TB_, - caracteristiques_pret_l831_1_6), - _auE_), - _auG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _TC_, - Runtime_ocaml_Runtime[12], - _auF_), - _auD_=caml_call2(Runtime_ocaml_Runtime[27],_TD_,_auG_)} - return caml_call2(Runtime_ocaml_Runtime[29],_Tz_,_auD_)} - var - _aux_= - [0, - function(param) - {function _auy_(param){return 1} - function _auz_(param) - {var _auA_=menage[2][3]; - switch(_auA_[0]) - {case 0:var _auB_=0;break; - case 1: - var logement_foyer=_auA_[1],_auB_=logement_foyer[4];break; - case 2:var _auB_=0;break; - case 3:var _auB_=0;break; - default:var _auB_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_TE_,_auB_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_TF_,[0],_auz_,_auy_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_TG_,_aux_,_auw_,_auv_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_TH_,_auu_,_aut_,_aus_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_TI_,_aur_,_auq_,_aup_)}, - _atM_= - [0, - function(param) - {function _at5_(param){return 1} - function _at6_(param) - {var _aum_=menage[2][3]; - switch(_aum_[0]) - {case 0: - var - location=_aum_[1], - _aun_=0 === location[1][1][0]?location[1][2]:location[1][3], - _auo_=_aun_; - break; - case 1:var _auo_=0;break; - case 2:var _auo_=0;break; - case 3:var _auo_=0;break; - default:var _auo_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_TJ_,_auo_)} - var - _at7_= - [0, - function(param) - {function _at8_(param){return 1} - function _at9_(param) - {var _auf_=menage[2][3]; - switch(_auf_[0]) - {case 0: - var location=_auf_[1]; - if(0 === location[1][1][0]) - {var _aug_=location[1][4]; - if(_aug_) - var _auh_=location[1][2],_aui_=_auh_ || location[1][3]; - else - var _aui_=_aug_} - else - {var _auk_=location[1][4]; - if(_auk_) - var _aul_=location[1][2],_aui_=_aul_ || location[1][3]; - else - var _aui_=_auk_} - var _auj_=_aui_; - break; - case 1:var _auj_=0;break; - case 2:var _auj_=0;break; - case 3:var _auj_=0;break; - default:var _auj_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_TK_,_auj_)} - var - _at__= - [0, - function(param) - {function _at$_(param){return 0} - function _aua_(param) - {var _aub_=menage[2][3]; - switch(_aub_[0]) - {case 0: - var location=_aub_[1]; - if(0 === location[1][1][0]) - var _auc_=0; - else - var - _aue_=location[1][5], - _auc_=_aue_?1 - location[1][2]:_aue_; - var _aud_=_auc_; - break; - case 1:var _aud_=0;break; - case 2:var _aud_=0;break; - case 3:var _aud_=0;break; - default:var _aud_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_TL_,_aud_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_TM_,[0],_aua_,_at$_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_TN_,_at__,_at9_,_at8_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_TO_,_at7_,_at6_,_at5_)}, - _atL_], - _atN_=caml_call4(Runtime_ocaml_Runtime[62],_TP_,_atM_,_atK_,_atJ_)} - catch(_at4_) - {_at4_ = caml_wrap_exception(_at4_); - if(_at4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ts_]; - throw _at4_} - var - condition_logement_bailleur= - caml_call3 - (Runtime_ocaml_Runtime[28],_TQ_,Runtime_ocaml_Runtime[12],_atN_); - try - {var - _atO_=function(param){return eligibilite_commune_dot_coeffi}, - _atP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TS_,1)}, - _atQ_=caml_call4(Runtime_ocaml_Runtime[62],_TT_,[0],_atP_,_atO_)} - catch(_at3_) - {_at3_ = caml_wrap_exception(_at3_); - if(_at3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TR_]; - throw _at3_} - var - _atR_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_TU_,_atR_,_atQ_); - try - {var - _atS_=function(param){return eligibilite_commune_dot_nombre}, - _atT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TW_,1)}, - _atU_=caml_call4(Runtime_ocaml_Runtime[62],_TX_,[0],_atT_,_atS_)} - catch(_at2_) - {_at2_ = caml_wrap_exception(_at2_); - if(_at2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TV_]; - throw _at2_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_TY_,Runtime_ocaml_Runtime[14],_atU_); - try - {var - _atV_=function(param){return 0}, - _atW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T0_,1)}, - _atX_= - [0, - function(param) - {function _at0_(param){return 1} - function _at1_(param) - {var - eligibilite_commune_dot_eligib$0= - condition_logement_bailleur - ?condition_logement_pret - ?eligibilite_commune_dot_eligib - :condition_logement_pret - :condition_logement_bailleur; - return caml_call2 - (Runtime_ocaml_Runtime[29], - _T1_, - eligibilite_commune_dot_eligib$0)} - return caml_call4(Runtime_ocaml_Runtime[62],_T2_,[0],_at1_,_at0_)}], - _atY_=caml_call4(Runtime_ocaml_Runtime[62],_T3_,_atX_,_atW_,_atV_)} - catch(_atZ_) - {_atZ_ = caml_wrap_exception(_atZ_); - if(_atZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TZ_]; - throw _atZ_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_T4_,Runtime_ocaml_Runtime[12],_atY_); - return [0, - date_courante, - eligibilite, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte]} - function eligibilite_allocation_logemen(eligibilite_allocation_logemen) - {var - date_courante=eligibilite_allocation_logemen[1], - menage=eligibilite_allocation_logemen[2], - demandeur=eligibilite_allocation_logemen[3], - beneficie_aide_personnalisee_l=eligibilite_allocation_logemen[4], - informations_calcul=eligibilite_allocation_logemen[5]; - try - {var - _aqj_= - function(param){return caml_call3(Runtime_ocaml_Runtime[59],5,0,0)}, - _aqk_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T6_,1)}, - _aql_=caml_call4(Runtime_ocaml_Runtime[62],_T7_,[0],_aqk_,_aqj_)} - catch(_ats_) - {_ats_ = caml_wrap_exception(_ats_); - if(_ats_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_T5_]; - throw _ats_} - var - duree_l841_1_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_T8_,Runtime_ocaml_Runtime[17],_aql_); - try - {var - _aqm_=function(param){return date_courante}, - _aqn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T__,1)}, - _aqo_=caml_call4(Runtime_ocaml_Runtime[62],_T$_,[0],_aqn_,_aqm_), - prestations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ua_,Runtime_ocaml_Runtime[16],_aqo_)} - catch(_atr_) - {_atr_ = caml_wrap_exception(_atr_); - if(_atr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_T9_]; - throw _atr_} - try - {var - _aqp_=function(param){return _Uc_}, - _aqq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ud_,1)}, - _aqr_=caml_call4(Runtime_ocaml_Runtime[62],_Ue_,[0],_aqq_,_aqp_), - prestations_familiales_dot_pre= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Uf_, - embed_element_prestations_fami$0, - _aqr_)} - catch(_atq_) - {_atq_ = caml_wrap_exception(_atq_); - if(_atq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ub_]; - throw _atq_} - try - {var - _aqs_=function(param){return _Uh_}, - _aqt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ui_,1)}, - _aqu_=caml_call4(Runtime_ocaml_Runtime[62],_Uj_,[0],_aqt_,_aqs_), - prestations_familiales_dot_res= - caml_call3 - (Runtime_ocaml_Runtime[28],_Uk_,embed_collectivite$0,_aqu_)} - catch(_atp_) - {_atp_ = caml_wrap_exception(_atp_); - if(_atp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ug_]; - throw _atp_} - var - _aqv_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Ul_,eligibilite_prestations_famili), - [0, - prestations_familiales_dot_dat, - prestations_familiales_dot_pre, - prestations_familiales_dot_res]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Um_,_aqv_), - prestations_familiales_dot_dro=result[1]; - try - {var - _aqw_=function(param){return menage}, - _aqx_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Uo_,1)}, - _aqy_=caml_call4(Runtime_ocaml_Runtime[62],_Up_,[0],_aqx_,_aqw_), - eligibilite_commune_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_Uq_,embed_menage,_aqy_)} - catch(_ato_) - {_ato_ = caml_wrap_exception(_ato_); - if(_ato_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Un_]; - throw _ato_} - try - {var - _aqz_=function(param){return demandeur}, - _aqA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Us_,1)}, - _aqB_=caml_call4(Runtime_ocaml_Runtime[62],_Ut_,[0],_aqA_,_aqz_), - eligibilite_commune_dot_demand= - caml_call3(Runtime_ocaml_Runtime[28],_Uu_,embed_demandeur,_aqB_)} - catch(_atn_) - {_atn_ = caml_wrap_exception(_atn_); - if(_atn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ur_]; - throw _atn_} - try - {var - _aqC_=function(param){return date_courante}, - _aqD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Uw_,1)}, - _aqE_=caml_call4(Runtime_ocaml_Runtime[62],_Ux_,[0],_aqD_,_aqC_), - eligibilite_commune_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_Uy_,Runtime_ocaml_Runtime[16],_aqE_)} - catch(_atm_) - {_atm_ = caml_wrap_exception(_atm_); - if(_atm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Uv_]; - throw _atm_} - function eligibilite_commune_dot_condit(param) - {function _ate_(param){return 0} - function _atf_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Uz_,1)} - var - _atg_= - [0, - function(param) - {function _ati_(param){return 1} - function _atj_(param) - {var _atk_=menage[2][3]; - switch(_atk_[0]) - {case 0:var _atl_=0;break; - case 1: - var logement_foyer=_atk_[1],_atl_=logement_foyer[5];break; - case 2:var _atl_=0;break; - case 3:var _atl_=0;break; - default:var _atl_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_UA_,_atl_)} - return caml_call4(Runtime_ocaml_Runtime[62],_UB_,[0],_atj_,_ati_)}], - _ath_=caml_call4(Runtime_ocaml_Runtime[62],_UC_,_atg_,_atf_,_ate_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _UD_, - Runtime_ocaml_Runtime[12], - _ath_)} - function eligibilite_commune_dot_condit$0(param) - {function _as8_(param){return 0} - function _as9_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_UE_,1)} - var - _as__= - [0, - function(param) - {function _ata_(param){return 1} - function _atb_(param) - {var _atc_=menage[2][3]; - switch(_atc_[0]) - {case 0:var _atd_=0;break; - case 1: - var logement_foyer=_atc_[1],_atd_=logement_foyer[5];break; - case 2:var _atd_=0;break; - case 3:var _atd_=0;break; - default:var _atd_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_UF_,_atd_)} - return caml_call4(Runtime_ocaml_Runtime[62],_UG_,[0],_atb_,_ata_)}], - _as$_=caml_call4(Runtime_ocaml_Runtime[62],_UH_,_as__,_as9_,_as8_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _UI_, - Runtime_ocaml_Runtime[12], - _as$_)} - var - _aqF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_UJ_,eligibilite_aides_personnelle_), - [0, - eligibilite_commune_dot_menage, - eligibilite_commune_dot_demand, - eligibilite_commune_dot_date_c, - eligibilite_commune_dot_condit, - eligibilite_commune_dot_condit$0]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_UK_,_aqF_), - eligibilite_commune_dot_eligib=result$0[2], - eligibilite_commune_dot_nombre=result$0[3], - eligibilite_commune_dot_coeffi=result$0[4], - eligibilite_commune_dot_condit$1=result$0[5]; - try - {var - _aqG_=function(param){return 0}, - _aqH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UM_,1)}, - _aqI_= - [0, - function(param) - {function _as6_(param){return 1} - function _as7_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_UN_,demandeur[7])} - return caml_call4(Runtime_ocaml_Runtime[62],_UO_,[0],_as7_,_as6_)}], - _aqJ_=caml_call4(Runtime_ocaml_Runtime[62],_UP_,_aqI_,_aqH_,_aqG_)} - catch(_as5_) - {_as5_ = caml_wrap_exception(_as5_); - if(_as5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UL_]; - throw _as5_} - var - eligibilite_allocation_logemen$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_UQ_,Runtime_ocaml_Runtime[12],_aqJ_); - try - {var - _aqK_=function(param){return 0}, - _aqL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_US_,1)}, - _aqM_= - [0, - function(param) - {function _asB_(param){throw Runtime_ocaml_Runtime[2]} - function _asC_(param){return 0} - var - _asD_= - [0, - function(param) - {function _asE_(param){return 1} - function _asF_(param) - {switch(informations_calcul[0]) - {case 0:var _asY_=0;break; - case 1:var _asY_=0;break; - default: - var infos=informations_calcul[1],_asZ_=menage[2][3]; - switch(_asZ_[0]) - {case 0:var _as0_=0;break; - case 1:var _as0_=0;break; - case 2: - var - proprietaire=_asZ_[1], - _as1_=0 === proprietaire[1][3][0]?1:0; - if(_as1_) - {switch(infos[6][0]) - {case 0:var _as2_=0;break; - case 1:var _as2_=0;break; - case 2:var _as2_=0;break; - default:var _as2_=1} - if(_as2_) - var _as3_=_as2_; - else - {switch(infos[6][0]) - {case 0:var _as4_=1;break; - case 1:var _as4_=0;break; - case 2:var _as4_=0;break; - default:var _as4_=0} - var _as3_=_as4_}} - else - var _as3_=_as1_; - var _as0_=_as3_; - break; - case 3:var _as0_=0;break; - default:var _as0_=0} - var _asY_=_as0_} - return caml_call2(Runtime_ocaml_Runtime[29],_UT_,_asY_)} - var - _asG_= - [0, - function(param) - {function _asH_(param){return 1} - function _asI_(param) - {switch(informations_calcul[0]) - {case 0:var _asS_=0;break; - case 1:var _asS_=0;break; - default: - var infos=informations_calcul[1],_asT_=menage[2][3]; - switch(_asT_[0]) - {case 0:var _asU_=0;break; - case 1:var _asU_=0;break; - case 2: - var - proprietaire=_asT_[1], - _asV_=0 === proprietaire[1][3][0]?1:0; - if(_asV_) - {switch(infos[6][0]) - {case 0:var _asW_=0;break; - case 1:var _asW_=1;break; - case 2:var _asW_=0;break; - default:var _asW_=0} - var _asX_=_asW_} - else - var _asX_=_asV_; - var _asU_=_asX_; - break; - case 3:var _asU_=0;break; - default:var _asU_=0} - var _asS_=_asU_} - return caml_call2(Runtime_ocaml_Runtime[29],_UU_,_asS_)} - var - _asJ_= - [0, - function(param) - {function _asK_(param){return 1} - function _asL_(param) - {switch(informations_calcul[0]) - {case 0:var _asM_=0;break; - case 1:var _asM_=0;break; - default: - var infos=informations_calcul[1],_asN_=menage[2][3]; - switch(_asN_[0]) - {case 0:var _asO_=0;break; - case 1:var _asO_=0;break; - case 2: - var - proprietaire=_asN_[1], - _asP_=0 === proprietaire[1][3][0]?1:0; - if(_asP_) - {switch(infos[6][0]) - {case 0:var _asQ_=0;break; - case 1:var _asQ_=0;break; - case 2:var _asQ_=1;break; - default:var _asQ_=0} - var _asR_=_asQ_} - else - var _asR_=_asP_; - var _asO_=_asR_; - break; - case 3:var _asO_=0;break; - default:var _asO_=0} - var _asM_=_asO_} - return caml_call2(Runtime_ocaml_Runtime[29],_UV_,_asM_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_UW_,[0],_asL_,_asK_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_UX_,_asJ_,_asI_,_asH_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_UY_,_asG_,_asF_,_asE_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_UZ_,_asD_,_asC_,_asB_)}], - _aqN_=caml_call4(Runtime_ocaml_Runtime[62],_U0_,_aqM_,_aqL_,_aqK_)} - catch(_asA_) - {_asA_ = caml_wrap_exception(_asA_); - if(_asA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UR_]; - throw _asA_} - var - condition_logement= - caml_call3 - (Runtime_ocaml_Runtime[28],_U1_,Runtime_ocaml_Runtime[12],_aqN_); - try - {var - _aqO_=function(param){return eligibilite_commune_dot_coeffi}, - _aqP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U3_,1)}, - _aqQ_=caml_call4(Runtime_ocaml_Runtime[62],_U4_,[0],_aqP_,_aqO_)} - catch(_asz_) - {_asz_ = caml_wrap_exception(_asz_); - if(_asz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_U2_]; - throw _asz_} - var - _aqR_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_U5_,_aqR_,_aqQ_); - try - {var - _aqS_=function(param){return eligibilite_commune_dot_nombre}, - _aqT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U7_,1)}, - _aqU_=caml_call4(Runtime_ocaml_Runtime[62],_U8_,[0],_aqT_,_aqS_)} - catch(_asy_) - {_asy_ = caml_wrap_exception(_asy_); - if(_asy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_U6_]; - throw _asy_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_U9_,Runtime_ocaml_Runtime[14],_aqU_); - try - {var - _aqV_= - function(param){return eligibilite_commune_dot_eligib?_U$_:_Va_}, - _aqW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vb_,1)}, - _aqX_=caml_call4(Runtime_ocaml_Runtime[62],_Vc_,[0],_aqW_,_aqV_)} - catch(_asx_) - {_asx_ = caml_wrap_exception(_asx_); - if(_asx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_U__]; - throw _asx_} - var - eligibilite_dispositions_commu= - caml_call3 - (Runtime_ocaml_Runtime[28],_Vd_,embed_eligibilite_allocation_l,_aqX_); - try - {var - _aqY_=function(param){return 0}, - _aqZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vf_,1)}, - _aq0_= - [0, - function(param) - {function _arf_(param){return 1} - function _arg_(param) - {var _asq_=menage[1],_asr_=0; - function _ass_(acc,prestation) - {if(acc) - var acc$0=acc; - else - {var _asu_=caml_equal(prestation,_Vg_); - if(_asu_) - var acc$0=_asu_; - else - {var _asv_=caml_equal(prestation,_Vh_); - if(_asv_) - var acc$0=_asv_; - else - var - _asw_=caml_equal(prestation,_Vi_), - acc$0=_asw_ || caml_equal(prestation,_Vj_)}} - return acc$0} - var _ast_=caml_call3(Stdlib_Array[17],_ass_,_asr_,_asq_); - return caml_call2(Runtime_ocaml_Runtime[29],_Vk_,_ast_)} - var - _arh_= - [0, - function(param) - {function _ari_(param){return 1} - function _arj_(param) - {var - _asd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$262), - _ase_=menage[3], - _asf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$386); - function _asg_(acc,personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _asi_=enfant[2], - _asj_=enfant[3]; - switch(enfant[7][0]) - {case 0:var _ask_=_Vl_;break; - case 1:var _ask_=_Vq_;break; - default:var _ask_=_Vr_} - var - _asl_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vm_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - enfant[8], - _ask_, - _asj_, - _asi_]), - _asm_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Vn_, - prestations_familiales_dot_dro), - _asl_), - _asn_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vo_, - Runtime_ocaml_Runtime[12], - _asm_), - _aso_=caml_call2(Runtime_ocaml_Runtime[27],_Vp_,_asn_)} - else - var _aso_=0; - if(_aso_) - {var _asp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$263); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_asp_)} - return acc} - var - _ash_= - caml_equal - (caml_call3(Stdlib_Array[17],_asg_,_asf_,_ase_),_asd_); - return caml_call2(Runtime_ocaml_Runtime[29],_Vs_,_ash_)} - var - _ark_= - [0, - function(param) - {function _arl_(param){return 1} - function _arm_(param) - {var - _arY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$387), - _arZ_=menage[3], - _ar0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$388); - function _ar1_(acc,personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _ar7_=enfant[2], - _ar8_=enfant[3]; - switch(enfant[7][0]) - {case 0:var _ar9_=_Vt_;break; - case 1:var _ar9_=_Vy_;break; - default:var _ar9_=_Vz_} - var - _ar__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vu_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - enfant[8], - _ar9_, - _ar8_, - _ar7_]), - _ar$_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Vv_, - prestations_familiales_dot_dro), - _ar__), - _asa_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vw_, - Runtime_ocaml_Runtime[12], - _ar$_), - _asb_=1 - caml_call2(Runtime_ocaml_Runtime[27],_Vx_,_asa_)} - else - var _asb_=0; - if(_asb_) - {var _asc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$264); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_asc_)} - return acc} - var - _ar2_= - caml_equal - (caml_call3(Stdlib_Array[17],_ar1_,_ar0_,_arZ_),_arY_); - if(_ar2_) - {var _ar3_=menage[5]; - switch(_ar3_[0]) - {case 0:var _ar4_=0;break; - case 1: - var - date_mariage=_ar3_[1], - _ar6_= - caml_call2 - (Runtime_ocaml_Runtime[95],date_mariage,duree_l841_1_3), - _ar4_= - caml_call2(Runtime_ocaml_Runtime[99],date_courante,_ar6_); - break; - case 2:var _ar4_=0;break; - case 3:var _ar4_=0;break; - case 4:var _ar4_=0;break; - default:var _ar4_=0} - var _ar5_=_ar4_} - else - var _ar5_=_ar2_; - return caml_call2(Runtime_ocaml_Runtime[29],_VA_,_ar5_)} - var - _arn_= - [0, - function(param) - {function _aro_(param) - {function _arw_(param){throw Runtime_ocaml_Runtime[2]} - function _arx_(param){return 0} - var - _ary_= - [0, - function(param) - {function _arz_(param){return 1} - function _arA_(param) - {var - _arO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$265), - _arP_=menage[3], - _arQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$389); - function _arR_(acc,personne_a_charge) - {var - _arU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _VB_, - embed_personne_a_charge, - personne_a_charge), - _arV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _VC_, - eligibilite_commune_dot_condit$1), - _arU_), - _arW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _VD_, - Runtime_ocaml_Runtime[12], - _arV_); - if(caml_call2(Runtime_ocaml_Runtime[27],_VE_,_arW_)) - {var _arX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$266); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_arX_)} - return acc} - var - _arS_=caml_call3(Stdlib_Array[17],_arR_,_arQ_,_arP_), - _arT_=caml_call2(Runtime_ocaml_Runtime[81],_arS_,_arO_); - return caml_call2(Runtime_ocaml_Runtime[29],_VF_,_arT_)} - var - _arB_= - [0, - function(param) - {function _arC_(param){return 1} - function _arD_(param) - {var - _arE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$267), - _arF_=menage[3], - _arG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$390); - function _arH_(acc,personne_a_charge) - {if(0 === personne_a_charge[0]) - var _arK_=0; - else - var - parent=personne_a_charge[1], - _arM_=parent[3], - _arN_=_arM_?parent[5]:_arM_, - _arK_=_arN_; - if(_arK_) - {var _arL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$268); - return caml_call2(Runtime_ocaml_Runtime[75],acc,_arL_)} - return acc} - var - _arI_=caml_call3(Stdlib_Array[17],_arH_,_arG_,_arF_), - _arJ_=caml_call2(Runtime_ocaml_Runtime[81],_arI_,_arE_); - return caml_call2(Runtime_ocaml_Runtime[29],_VG_,_arJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_VH_,[0],_arD_,_arC_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VI_,_arB_,_arA_,_arz_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VJ_,_ary_,_arx_,_arw_)} - function _arp_(param){return 1} - var - _arq_= - [0, - function(param) - {function _arr_(param){return 1} - function _ars_(param) - {switch(menage[5][0]) - {case 0: - var - _art_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391), - _aru_= - caml_equal - (caml_call1(Runtime_ocaml_Runtime[113],menage[3]),_art_), - _arv_=_aru_?menage[8]:_aru_; - break; - case 1:var _arv_=0;break; - case 2:var _arv_=0;break; - case 3:var _arv_=0;break; - case 4:var _arv_=0;break; - default:var _arv_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_VK_,_arv_)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_VL_,[0],_ars_,_arr_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VM_,_arq_,_arp_,_aro_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VN_,_arn_,_arm_,_arl_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VO_,_ark_,_arj_,_ari_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_VP_,_arh_,_arg_,_arf_)}], - _aq1_=caml_call4(Runtime_ocaml_Runtime[62],_VQ_,_aq0_,_aqZ_,_aqY_)} - catch(_are_) - {_are_ = caml_wrap_exception(_are_); - if(_are_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ve_]; - throw _are_} - var - eligibilite_allocation_logemen$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_VR_,Runtime_ocaml_Runtime[12],_aq1_); - try - {var - _aq2_= - function(param) - {if - (! - caml_equal(eligibilite_dispositions_commu,_VT_) - && - ! - beneficie_aide_personnalisee_l) - return eligibilite_allocation_logemen$1 - ?_VV_ - :eligibilite_allocation_logemen$0?_VW_:_VX_; - return _VU_}, - _aq3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_VY_,1)}, - _aq4_= - [0, - function(param) - {function _aq$_(param){return _VZ_} - function _ara_(param) - {var _arb_=menage[2][3]; - switch(_arb_[0]) - {case 0:var _arc_=0;break; - case 1:var _arc_=0;break; - case 2: - var - proprietaire=_arb_[1], - _ard_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31), - _arc_= - caml_call2 - (Runtime_ocaml_Runtime[100],proprietaire[1][2],_ard_); - break; - case 3:var _arc_=0;break; - default:var _arc_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_V0_,_arc_)} - return caml_call4(Runtime_ocaml_Runtime[62],_V1_,[0],_ara_,_aq$_)}], - _aq5_=caml_call4(Runtime_ocaml_Runtime[62],_V2_,_aq4_,_aq3_,_aq2_)} - catch(_aq__) - {_aq__ = caml_wrap_exception(_aq__); - if(_aq__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_VS_]; - throw _aq__} - var - eligibilite_l841_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_V3_,embed_eligibilite_allocation_l,_aq5_); - try - {var - _aq6_= - function(param){return condition_logement?eligibilite_l841_2:_V5_}, - _aq7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_V6_,1)}, - _aq8_=caml_call4(Runtime_ocaml_Runtime[62],_V7_,[0],_aq7_,_aq6_)} - catch(_aq9_) - {_aq9_ = caml_wrap_exception(_aq9_); - if(_aq9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_V4_]; - throw _aq9_} - var - eligibilite_avec_condition_log= - caml_call3 - (Runtime_ocaml_Runtime[28],_V8_,embed_eligibilite_allocation_l,_aq8_); - return [0, - eligibilite_avec_condition_log, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte]} - function calcul_allocation_logement(calcul_allocation_logement_in) - {var - mode_occupation=calcul_allocation_logement_in[1], - informations_calcul=calcul_allocation_logement_in[2], - ressources_menage_sans_arrondi=calcul_allocation_logement_in[3], - situation_familiale=calcul_allocation_logement_in[4], - nombre_personnes_a_charge=calcul_allocation_logement_in[5], - zone=calcul_allocation_logement_in[6], - date_courante=calcul_allocation_logement_in[7], - type_aide=calcul_allocation_logement_in[8]; - try - {var - _anq_= - function(param) - {switch(mode_occupation[0]) - {case 0:return _V__; - case 1:return _V$_; - case 2:return _Wa_; - case 3:return _Wb_; - default:return _Wc_}}, - _anr_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wd_,1)}, - _ans_=caml_call4(Runtime_ocaml_Runtime[62],_We_,[0],_anr_,_anq_)} - catch(_aqi_) - {_aqi_ = caml_wrap_exception(_aqi_); - if(_aqi_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_V9_]; - throw _aqi_} - var - categorie_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_Wf_,embed_categorie_calcul_a_p_l,_ans_); - try - {var - _ant_= - function(param) - {var - _aqc_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), - _aqd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$1), - _aqe_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999$1), - _aqf_= - caml_call2 - (Runtime_ocaml_Runtime[67], - ressources_menage_sans_arrondi, - _aqe_), - _aqg_=caml_call2(Runtime_ocaml_Runtime[65],_aqf_,_aqd_), - _aqh_=caml_call1(Runtime_ocaml_Runtime[38],_aqg_); - return caml_call2(Runtime_ocaml_Runtime[65],_aqh_,_aqc_)}, - _anu_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wh_,1)}, - _anv_=caml_call4(Runtime_ocaml_Runtime[62],_Wi_,[0],_anu_,_ant_)} - catch(_aqb_) - {_aqb_ = caml_wrap_exception(_aqb_); - if(_aqb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Wg_]; - throw _aqb_} - var - ressources_menage_avec_arrondi= - caml_call3 - (Runtime_ocaml_Runtime[28],_Wj_,Runtime_ocaml_Runtime[13],_anv_); - try - {var - _anw_= - function(param) - {switch(situation_familiale[0]) - {case 0:return _Wl_; - case 1:return _Wm_; - case 2:return _Wn_; - case 3:return _Wo_; - case 4:return _Wp_; - default:return _Wq_}}, - _anx_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wr_,1)}, - _any_=caml_call4(Runtime_ocaml_Runtime[62],_Ws_,[0],_anx_,_anw_)} - catch(_aqa_) - {_aqa_ = caml_wrap_exception(_aqa_); - if(_aqa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Wk_]; - throw _aqa_} - var - situation_familiale_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_Wt_,embed_situation_familiale_calc,_any_); - try - {var - _anz_=function(param){return ressources_menage_avec_arrondi}, - _anA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wv_,1)}, - _anB_=caml_call4(Runtime_ocaml_Runtime[62],_Ww_,[0],_anA_,_anz_), - accession_propriete_dot_ressou= - caml_call3 - (Runtime_ocaml_Runtime[28],_Wx_,Runtime_ocaml_Runtime[13],_anB_)} - catch(_ap$_) - {_ap$_ = caml_wrap_exception(_ap$_); - if(_ap$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Wu_]; - throw _ap$_} - try - {var - _anC_=function(param){return nombre_personnes_a_charge}, - _anD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wz_,1)}, - _anE_=caml_call4(Runtime_ocaml_Runtime[62],_WA_,[0],_anD_,_anC_), - accession_propriete_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_WB_,Runtime_ocaml_Runtime[14],_anE_)} - catch(_ap__) - {_ap__ = caml_wrap_exception(_ap__); - if(_ap__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Wy_]; - throw _ap__} - try - {var - _anF_=function(param){return situation_familiale_calcul_apl}, - _anG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WD_,1)}, - _anH_=caml_call4(Runtime_ocaml_Runtime[62],_WE_,[0],_anG_,_anF_), - accession_propriete_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _WF_, - embed_situation_familiale_calc, - _anH_)} - catch(_ap9_) - {_ap9_ = caml_wrap_exception(_ap9_); - if(_ap9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WC_]; - throw _ap9_} - try - {var - _anI_=function(param){return zone}, - _anJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WH_,1)}, - _anK_=caml_call4(Runtime_ocaml_Runtime[62],_WI_,[0],_anJ_,_anI_), - accession_propriete_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_WJ_,embed_zone_d_habitation,_anK_)} - catch(_ap8_) - {_ap8_ = caml_wrap_exception(_ap8_); - if(_ap8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WG_]; - throw _ap8_} - try - {var - _anL_=function(param){return date_courante}, - _anM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WL_,1)}, - _anN_=caml_call4(Runtime_ocaml_Runtime[62],_WM_,[0],_anM_,_anL_), - accession_propriete_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_WN_,Runtime_ocaml_Runtime[16],_anN_)} - catch(_ap7_) - {_ap7_ = caml_wrap_exception(_ap7_); - if(_ap7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WK_]; - throw _ap7_} - try - {var - _anO_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$392); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$393); - default:var infos=informations_calcul[1];return infos[1]}}, - _anP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WP_,1)}, - _anQ_=caml_call4(Runtime_ocaml_Runtime[62],_WQ_,[0],_anP_,_anO_), - accession_propriete_dot_mensua= - caml_call3 - (Runtime_ocaml_Runtime[28],_WR_,Runtime_ocaml_Runtime[13],_anQ_)} - catch(_ap6_) - {_ap6_ = caml_wrap_exception(_ap6_); - if(_ap6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WO_]; - throw _ap6_} - try - {var - _anR_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[9]}}, - _anS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WT_,1)}, - _anT_=caml_call4(Runtime_ocaml_Runtime[62],_WU_,[0],_anS_,_anR_), - accession_propriete_dot_situat$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_WV_,Runtime_ocaml_Runtime[12],_anT_)} - catch(_ap5_) - {_ap5_ = caml_wrap_exception(_ap5_); - if(_ap5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WS_]; - throw _ap5_} - try - {var - _anU_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - default:var infos=informations_calcul[1];return infos[3]}}, - _anV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WX_,1)}, - _anW_=caml_call4(Runtime_ocaml_Runtime[62],_WY_,[0],_anV_,_anU_), - accession_propriete_dot_date_s= - caml_call3 - (Runtime_ocaml_Runtime[28],_WZ_,Runtime_ocaml_Runtime[16],_anW_)} - catch(_ap4_) - {_ap4_ = caml_wrap_exception(_ap4_); - if(_ap4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_WW_]; - throw _ap4_} - try - {var - _anX_= - function(param) - {switch(informations_calcul[0]) - {case 0:return _W1_; - case 1:return _W2_; - default:var infos=informations_calcul[1];return infos[6]}}, - _anY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W3_,1)}, - _anZ_=caml_call4(Runtime_ocaml_Runtime[62],_W4_,[0],_anY_,_anX_), - accession_propriete_dot_type_t= - caml_call3 - (Runtime_ocaml_Runtime[28], - _W5_, - embed_type_travaux_logement_r8, - _anZ_)} - catch(_ap3_) - {_ap3_ = caml_wrap_exception(_ap3_); - if(_ap3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_W0_]; - throw _ap3_} - try - {var - _an0_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[7]}}, - _an1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W7_,1)}, - _an2_=caml_call4(Runtime_ocaml_Runtime[62],_W8_,[0],_an1_,_an0_), - accession_propriete_dot_local_= - caml_call3 - (Runtime_ocaml_Runtime[28],_W9_,Runtime_ocaml_Runtime[12],_an2_)} - catch(_ap2_) - {_ap2_ = caml_wrap_exception(_ap2_); - if(_ap2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_W6_]; - throw _ap2_} - try - {var - _an3_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1); - default:var infos=informations_calcul[1];return infos[4]}}, - _an4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W$_,1)}, - _an5_=caml_call4(Runtime_ocaml_Runtime[62],_Xa_,[0],_an4_,_an3_), - accession_propriete_dot_date_e= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xb_,Runtime_ocaml_Runtime[16],_an5_)} - catch(_ap1_) - {_ap1_ = caml_wrap_exception(_ap1_); - if(_ap1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_W__]; - throw _ap1_} - try - {var - _an6_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$394); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$395); - default:var infos=informations_calcul[1];return infos[2]}}, - _an7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xd_,1)}, - _an8_=caml_call4(Runtime_ocaml_Runtime[62],_Xe_,[0],_an7_,_an6_), - accession_propriete_dot_charge= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xf_,Runtime_ocaml_Runtime[13],_an8_)} - catch(_ap0_) - {_ap0_ = caml_wrap_exception(_ap0_); - if(_ap0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xc_]; - throw _ap0_} - try - {var - _an9_= - function(param) - {switch(informations_calcul[0]) - {case 0:return 0; - case 1:return 0; - default:var infos=informations_calcul[1];return infos[8]}}, - _an__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xh_,1)}, - _an$_=caml_call4(Runtime_ocaml_Runtime[62],_Xi_,[0],_an__,_an9_), - accession_propriete_dot_coprop= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xj_,Runtime_ocaml_Runtime[12],_an$_)} - catch(_apZ_) - {_apZ_ = caml_wrap_exception(_apZ_); - if(_apZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xg_]; - throw _apZ_} - var - _aoa_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Xk_,calcul_allocation_logement_acc), - [0, - accession_propriete_dot_ressou, - accession_propriete_dot_nombre, - accession_propriete_dot_situat, - accession_propriete_dot_zone, - accession_propriete_dot_date_c, - accession_propriete_dot_mensua, - accession_propriete_dot_situat$0, - accession_propriete_dot_date_s, - accession_propriete_dot_type_t, - accession_propriete_dot_local_, - accession_propriete_dot_date_e, - accession_propriete_dot_charge, - accession_propriete_dot_coprop]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Xl_,_aoa_), - accession_propriete_dot_aide_f=result[1], - accession_propriete_dot_traite=result[2]; - try - {var - _aob_= - function(param) - {switch(informations_calcul[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$396); - case 1:var infos=informations_calcul[1];return infos[1]; - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$397)}}, - _aoc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xn_,1)}, - _aod_=caml_call4(Runtime_ocaml_Runtime[62],_Xo_,[0],_aoc_,_aob_), - logement_foyer_dot_redevance= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xp_,Runtime_ocaml_Runtime[13],_aod_)} - catch(_apY_) - {_apY_ = caml_wrap_exception(_apY_); - if(_apY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xm_]; - throw _apY_} - try - {var - _aoe_=function(param){return mode_occupation}, - _aof_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xr_,1)}, - _aog_=caml_call4(Runtime_ocaml_Runtime[62],_Xs_,[0],_aof_,_aoe_), - logement_foyer_dot_mode_occupa= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xt_,embed_mode_occupation,_aog_)} - catch(_apX_) - {_apX_ = caml_wrap_exception(_apX_); - if(_apX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xq_]; - throw _apX_} - try - {var - _aoh_=function(param){return ressources_menage_avec_arrondi}, - _aoi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xv_,1)}, - _aoj_=caml_call4(Runtime_ocaml_Runtime[62],_Xw_,[0],_aoi_,_aoh_), - logement_foyer_dot_ressources_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Xx_,Runtime_ocaml_Runtime[13],_aoj_)} - catch(_apW_) - {_apW_ = caml_wrap_exception(_apW_); - if(_apW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xu_]; - throw _apW_} - try - {var - _aok_=function(param){return nombre_personnes_a_charge}, - _aol_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xz_,1)}, - _aom_=caml_call4(Runtime_ocaml_Runtime[62],_XA_,[0],_aol_,_aok_), - logement_foyer_dot_nombre_pers= - caml_call3 - (Runtime_ocaml_Runtime[28],_XB_,Runtime_ocaml_Runtime[14],_aom_)} - catch(_apV_) - {_apV_ = caml_wrap_exception(_apV_); - if(_apV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Xy_]; - throw _apV_} - try - {var - _aon_=function(param){return situation_familiale_calcul_apl}, - _aoo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XD_,1)}, - _aop_=caml_call4(Runtime_ocaml_Runtime[62],_XE_,[0],_aoo_,_aon_), - logement_foyer_dot_situation_f= - caml_call3 - (Runtime_ocaml_Runtime[28], - _XF_, - embed_situation_familiale_calc, - _aop_)} - catch(_apU_) - {_apU_ = caml_wrap_exception(_apU_); - if(_apU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_XC_]; - throw _apU_} - try - {var - _aoq_=function(param){return zone}, - _aor_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XH_,1)}, - _aos_=caml_call4(Runtime_ocaml_Runtime[62],_XI_,[0],_aor_,_aoq_), - logement_foyer_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_XJ_,embed_zone_d_habitation,_aos_)} - catch(_apT_) - {_apT_ = caml_wrap_exception(_apT_); - if(_apT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_XG_]; - throw _apT_} - try - {var - _aot_=function(param){return date_courante}, - _aou_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XL_,1)}, - _aov_=caml_call4(Runtime_ocaml_Runtime[62],_XM_,[0],_aou_,_aot_), - logement_foyer_dot_date_couran= - caml_call3 - (Runtime_ocaml_Runtime[28],_XN_,Runtime_ocaml_Runtime[16],_aov_)} - catch(_apS_) - {_apS_ = caml_wrap_exception(_apS_); - if(_apS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_XK_]; - throw _apS_} - try - {var - _aow_= - function(param) - {switch(informations_calcul[0]) - {case 0:return _XP_; - case 1:var infos=informations_calcul[1];return infos[2]; - default:return _XQ_}}, - _aox_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XR_,1)}, - _aoy_=caml_call4(Runtime_ocaml_Runtime[62],_XS_,[0],_aox_,_aow_), - logement_foyer_dot_categorie_e= - caml_call3 - (Runtime_ocaml_Runtime[28], - _XT_, - embed_categorie_equivalence_lo, - _aoy_)} - catch(_apR_) - {_apR_ = caml_wrap_exception(_apR_); - if(_apR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_XO_]; - throw _apR_} - var - _aoz_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_XU_,calcul_allocation_logement_foy), - [0, - logement_foyer_dot_redevance, - logement_foyer_dot_mode_occupa, - logement_foyer_dot_ressources_, - logement_foyer_dot_nombre_pers, - logement_foyer_dot_situation_f, - logement_foyer_dot_zone, - logement_foyer_dot_date_couran, - logement_foyer_dot_categorie_e]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_XV_,_aoz_), - logement_foyer_dot_aide_finale=result$0[5], - logement_foyer_dot_traitement_=result$0[6]; - try - {var - _aoA_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[1]; - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$398); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$399)}}, - _aoB_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XX_,1)}, - _aoC_=caml_call4(Runtime_ocaml_Runtime[62],_XY_,[0],_aoB_,_aoA_), - locatif_dot_loyer_principal= - caml_call3 - (Runtime_ocaml_Runtime[28],_XZ_,Runtime_ocaml_Runtime[13],_aoC_)} - catch(_apQ_) - {_apQ_ = caml_wrap_exception(_apQ_); - if(_apQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_XW_]; - throw _apQ_} - try - {var - _aoD_=function(param){return ressources_menage_avec_arrondi}, - _aoE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X1_,1)}, - _aoF_=caml_call4(Runtime_ocaml_Runtime[62],_X2_,[0],_aoE_,_aoD_), - locatif_dot_ressources_menage_= - caml_call3 - (Runtime_ocaml_Runtime[28],_X3_,Runtime_ocaml_Runtime[13],_aoF_)} - catch(_apP_) - {_apP_ = caml_wrap_exception(_apP_); - if(_apP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_X0_]; - throw _apP_} - try - {var - _aoG_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[2]; - case 1:return 0; - default:return 0}}, - _aoH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X5_,1)}, - _aoI_=caml_call4(Runtime_ocaml_Runtime[62],_X6_,[0],_aoH_,_aoG_), - locatif_dot_beneficiaire_aide_= - caml_call3 - (Runtime_ocaml_Runtime[28],_X7_,Runtime_ocaml_Runtime[12],_aoI_)} - catch(_apO_) - {_apO_ = caml_wrap_exception(_apO_); - if(_apO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_X4_]; - throw _apO_} - try - {var - _aoJ_=function(param){return date_courante}, - _aoK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X9_,1)}, - _aoL_=caml_call4(Runtime_ocaml_Runtime[62],_X__,[0],_aoK_,_aoJ_), - locatif_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_X$_,Runtime_ocaml_Runtime[16],_aoL_)} - catch(_apN_) - {_apN_ = caml_wrap_exception(_apN_); - if(_apN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_X8_]; - throw _apN_} - try - {var - _aoM_=function(param){return nombre_personnes_a_charge}, - _aoN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yb_,1)}, - _aoO_=caml_call4(Runtime_ocaml_Runtime[62],_Yc_,[0],_aoN_,_aoM_), - locatif_dot_nombre_personnes_a= - caml_call3 - (Runtime_ocaml_Runtime[28],_Yd_,Runtime_ocaml_Runtime[14],_aoO_)} - catch(_apM_) - {_apM_ = caml_wrap_exception(_apM_); - if(_apM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ya_]; - throw _apM_} - try - {var - _aoP_=function(param){return situation_familiale_calcul_apl}, - _aoQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yf_,1)}, - _aoR_=caml_call4(Runtime_ocaml_Runtime[62],_Yg_,[0],_aoQ_,_aoP_), - locatif_dot_situation_familial= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Yh_, - embed_situation_familiale_calc, - _aoR_)} - catch(_apL_) - {_apL_ = caml_wrap_exception(_apL_); - if(_apL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ye_]; - throw _apL_} - try - {var - _aoS_=function(param){return zone}, - _aoT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yj_,1)}, - _aoU_=caml_call4(Runtime_ocaml_Runtime[62],_Yk_,[0],_aoT_,_aoS_), - locatif_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_Yl_,embed_zone_d_habitation,_aoU_)} - catch(_apK_) - {_apK_ = caml_wrap_exception(_apK_); - if(_apK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Yi_]; - throw _apK_} - try - {var - _aoV_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[3]; - case 1:return 0; - default:return 0}}, - _aoW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yn_,1)}, - _aoX_=caml_call4(Runtime_ocaml_Runtime[62],_Yo_,[0],_aoW_,_aoV_), - locatif_dot_logement_est_chamb= - caml_call3 - (Runtime_ocaml_Runtime[28],_Yp_,Runtime_ocaml_Runtime[12],_aoX_)} - catch(_apJ_) - {_apJ_ = caml_wrap_exception(_apJ_); - if(_apJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ym_]; - throw _apJ_} - try - {var - _aoY_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[5]; - case 1:return 0; - default:return 0}}, - _aoZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yr_,1)}, - _ao0_=caml_call4(Runtime_ocaml_Runtime[62],_Ys_,[0],_aoZ_,_aoY_), - locatif_dot_agees_ou_handicap_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Yt_,Runtime_ocaml_Runtime[12],_ao0_)} - catch(_apI_) - {_apI_ = caml_wrap_exception(_apI_); - if(_apI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Yq_]; - throw _apI_} - try - {var - _ao1_=function(param){return type_aide}, - _ao2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yv_,1)}, - _ao3_=caml_call4(Runtime_ocaml_Runtime[62],_Yw_,[0],_ao2_,_ao1_), - locatif_dot_type_aide= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Yx_, - embed_type_aides_personnelle_l, - _ao3_)} - catch(_apH_) - {_apH_ = caml_wrap_exception(_apH_); - if(_apH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Yu_]; - throw _apH_} - try - {var - _ao4_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[4]; - case 1:return 0; - default:return 0}}, - _ao5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yz_,1)}, - _ao6_=caml_call4(Runtime_ocaml_Runtime[62],_YA_,[0],_ao5_,_ao4_), - locatif_dot_colocation= - caml_call3 - (Runtime_ocaml_Runtime[28],_YB_,Runtime_ocaml_Runtime[12],_ao6_)} - catch(_apG_) - {_apG_ = caml_wrap_exception(_apG_); - if(_apG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Yy_]; - throw _apG_} - try - {var - _ao7_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[6]; - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$400); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$401)}}, - _ao8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YD_,1)}, - _ao9_=caml_call4(Runtime_ocaml_Runtime[62],_YE_,[0],_ao8_,_ao7_), - locatif_dot_reduction_loyer_so= - caml_call3 - (Runtime_ocaml_Runtime[28],_YF_,Runtime_ocaml_Runtime[13],_ao9_)} - catch(_apF_) - {_apF_ = caml_wrap_exception(_apF_); - if(_apF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_YC_]; - throw _apF_} - try - {var - _ao__= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[7]; - case 1:return 0; - default:return 0}}, - _ao$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YH_,1)}, - _apa_=caml_call4(Runtime_ocaml_Runtime[62],_YI_,[0],_ao$_,_ao__), - locatif_dot_logement_meuble_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_YJ_,Runtime_ocaml_Runtime[12],_apa_)} - catch(_apE_) - {_apE_ = caml_wrap_exception(_apE_); - if(_apE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_YG_]; - throw _apE_} - try - {var - _apb_= - function(param) - {switch(informations_calcul[0]) - {case 0:var infos=informations_calcul[1];return infos[8]; - case 1:return _YL_; - default:return _YM_}}, - _apc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YN_,1)}, - _apd_=caml_call4(Runtime_ocaml_Runtime[62],_YO_,[0],_apc_,_apb_), - locatif_dot_changement_logemen= - caml_call3 - (Runtime_ocaml_Runtime[28], - _YP_, - embed_changement_logement_d842, - _apd_)} - catch(_apD_) - {_apD_ = caml_wrap_exception(_apD_); - if(_apD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_YK_]; - throw _apD_} - var - _ape_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_YQ_,calcul_allocation_logement_loc), - [0, - locatif_dot_loyer_principal, - locatif_dot_ressources_menage_, - locatif_dot_beneficiaire_aide_, - locatif_dot_date_courante, - locatif_dot_nombre_personnes_a, - locatif_dot_situation_familial, - locatif_dot_zone, - locatif_dot_logement_est_chamb, - locatif_dot_agees_ou_handicap_, - locatif_dot_type_aide, - locatif_dot_colocation, - locatif_dot_reduction_loyer_so, - locatif_dot_logement_meuble_d8, - locatif_dot_changement_logemen]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_YR_,_ape_), - locatif_dot_aide_finale_formul=result$1[1], - locatif_dot_traitement_aide_fi=result$1[2]; - function _apf_(param) - {try - {var - _apq_= - function(param$0) - {switch(categorie_calcul_apl[0]) - {case 0: - var - _apu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _YT_, - Runtime_ocaml_Runtime[13], - param), - _apv_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _YU_, - locatif_dot_traitement_aide_fi), - _apu_), - _apw_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _YV_, - Runtime_ocaml_Runtime[13], - _apv_); - return caml_call2(Runtime_ocaml_Runtime[27],_YW_,_apw_); - case 1: - var - _apx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _YX_, - Runtime_ocaml_Runtime[13], - param), - _apy_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _YY_, - accession_propriete_dot_traite), - _apx_), - _apz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _YZ_, - Runtime_ocaml_Runtime[13], - _apy_); - return caml_call2(Runtime_ocaml_Runtime[27],_Y0_,_apz_); - default: - var - _apA_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Y1_, - Runtime_ocaml_Runtime[13], - param), - _apB_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Y2_, - logement_foyer_dot_traitement_), - _apA_), - _apC_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Y3_, - Runtime_ocaml_Runtime[13], - _apB_); - return caml_call2(Runtime_ocaml_Runtime[27],_Y4_,_apC_)}}, - _apr_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Y5_,1)}, - _aps_=caml_call4(Runtime_ocaml_Runtime[62],_Y6_,[0],_apr_,_apq_); - return _aps_} - catch(_apt_) - {_apt_ = caml_wrap_exception(_apt_); - if(_apt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_YS_]; - throw _apt_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Y7_,Runtime_ocaml_Runtime[10],_apf_); - try - {var - _apg_= - function(param) - {switch(categorie_calcul_apl[0]) - {case 0:return locatif_dot_aide_finale_formul; - case 1:return accession_propriete_dot_aide_f; - default:return logement_foyer_dot_aide_finale}}, - _aph_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Y9_,1)}, - _api_=caml_call4(Runtime_ocaml_Runtime[62],_Y__,[0],_aph_,_apg_)} - catch(_app_) - {_app_ = caml_wrap_exception(_app_); - if(_app_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Y8_]; - throw _app_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_Y$_,Runtime_ocaml_Runtime[13],_api_); - switch(categorie_calcul_apl[0]) - {case 0:var _apj_=0;break;case 1:var _apj_=1;break;default:var _apj_=0} - if(_apj_) - switch(informations_calcul[0]) - {case 0:var _apk_=0;break; - case 1:var _apk_=0;break; - default:var _apk_=1} - else - var _apk_=1; - if(_apk_) - {switch(categorie_calcul_apl[0]) - {case 0:var _apl_=0;break; - case 1:var _apl_=0;break; - default:var _apl_=1} - if(_apl_) - switch(informations_calcul[0]) - {case 0:var _apm_=0;break; - case 1:var _apm_=1;break; - default:var _apm_=0} - else - var _apm_=1; - if(_apm_) - {switch(categorie_calcul_apl[0]) - {case 0:var _apn_=1;break; - case 1:var _apn_=0;break; - default:var _apn_=0} - if(_apn_) - switch(informations_calcul[0]) - {case 0:var _apo_=1;break; - case 1:var _apo_=0;break; - default:var _apo_=0} - else - var _apo_=1; - if(_apo_)return [0,aide_finale_formule,traitement_aide_finale]; - throw [0,Runtime_ocaml_Runtime[3],_Za_]} - throw [0,Runtime_ocaml_Runtime[3],_Zb_]} - throw [0,Runtime_ocaml_Runtime[3],_Zc_]} - function calculette_aides_au_logement(calculette_aides_au_logement_i) - {var - menage=calculette_aides_au_logement_i[1], - demandeur=calculette_aides_au_logement_i[2], - informations_calcul=calculette_aides_au_logement_i[3], - date_courante=calculette_aides_au_logement_i[4], - ressources_menage_prises_en_co=calculette_aides_au_logement_i[5]; - try - {var - _akW_=function(param){return date_courante}, - _akX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ze_,1)}, - _akY_=caml_call4(Runtime_ocaml_Runtime[62],_Zf_,[0],_akX_,_akW_), - eligibilite_allocation_logemen$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Zg_,Runtime_ocaml_Runtime[16],_akY_)} - catch(_anp_) - {_anp_ = caml_wrap_exception(_anp_); - if(_anp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zd_]; - throw _anp_} - try - {var - _akZ_=function(param){return menage}, - _ak0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zi_,1)}, - _ak1_=caml_call4(Runtime_ocaml_Runtime[62],_Zj_,[0],_ak0_,_akZ_), - eligibilite_allocation_logemen$1= - caml_call3(Runtime_ocaml_Runtime[28],_Zk_,embed_menage,_ak1_)} - catch(_ano_) - {_ano_ = caml_wrap_exception(_ano_); - if(_ano_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zh_]; - throw _ano_} - try - {var - _ak2_=function(param){return demandeur}, - _ak3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zm_,1)}, - _ak4_=caml_call4(Runtime_ocaml_Runtime[62],_Zn_,[0],_ak3_,_ak2_), - eligibilite_allocation_logemen$2= - caml_call3(Runtime_ocaml_Runtime[28],_Zo_,embed_demandeur,_ak4_)} - catch(_ann_) - {_ann_ = caml_wrap_exception(_ann_); - if(_ann_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zl_]; - throw _ann_} - try - {var - _ak5_=function(param){return 0}, - _ak6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zq_,1)}, - _ak7_=caml_call4(Runtime_ocaml_Runtime[62],_Zr_,[0],_ak6_,_ak5_), - eligibilite_allocation_logemen$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_Zs_,Runtime_ocaml_Runtime[12],_ak7_)} - catch(_anm_) - {_anm_ = caml_wrap_exception(_anm_); - if(_anm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zp_]; - throw _anm_} - try - {var - _ak8_=function(param){return informations_calcul}, - _ak9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zu_,1)}, - _ak__=caml_call4(Runtime_ocaml_Runtime[62],_Zv_,[0],_ak9_,_ak8_), - eligibilite_allocation_logemen$4= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Zw_, - embed_informations_calcul_a_p_$2, - _ak__)} - catch(_anl_) - {_anl_ = caml_wrap_exception(_anl_); - if(_anl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zt_]; - throw _anl_} - var - _ak$_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Zx_,eligibilite_allocation_logemen), - [0, - eligibilite_allocation_logemen$0, - eligibilite_allocation_logemen$1, - eligibilite_allocation_logemen$2, - eligibilite_allocation_logemen$3, - eligibilite_allocation_logemen$4]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Zy_,_ak$_), - eligibilite_allocation_logemen$5=result[1], - eligibilite_allocation_logemen$6=result[2]; - try - {var - _ala_=function(param){return menage}, - _alb_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZA_,1)}, - _alc_=caml_call4(Runtime_ocaml_Runtime[62],_ZB_,[0],_alb_,_ala_), - eligibilite_aide_personnalisee$0= - caml_call3(Runtime_ocaml_Runtime[28],_ZC_,embed_menage,_alc_)} - catch(_ank_) - {_ank_ = caml_wrap_exception(_ank_); - if(_ank_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Zz_]; - throw _ank_} - try - {var - _ald_=function(param){return demandeur}, - _ale_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZE_,1)}, - _alf_=caml_call4(Runtime_ocaml_Runtime[62],_ZF_,[0],_ale_,_ald_), - eligibilite_aide_personnalisee$1= - caml_call3(Runtime_ocaml_Runtime[28],_ZG_,embed_demandeur,_alf_)} - catch(_anj_) - {_anj_ = caml_wrap_exception(_anj_); - if(_anj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ZD_]; - throw _anj_} - try - {var - _alg_=function(param){return date_courante}, - _alh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZI_,1)}, - _ali_=caml_call4(Runtime_ocaml_Runtime[62],_ZJ_,[0],_alh_,_alg_), - eligibilite_aide_personnalisee$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_ZK_,Runtime_ocaml_Runtime[16],_ali_)} - catch(_ani_) - {_ani_ = caml_wrap_exception(_ani_); - if(_ani_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ZH_]; - throw _ani_} - var - _alj_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_ZL_,eligibilite_aide_personnalisee), - [0, - eligibilite_aide_personnalisee$0, - eligibilite_aide_personnalisee$1, - eligibilite_aide_personnalisee$2]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_ZM_,_alj_), - eligibilite_aide_personnalisee$3=result$0[2], - eligibilite_aide_personnalisee$4=result$0[3], - eligibilite_aide_personnalisee$5=result$0[4]; - try - {var - _alk_=function(param){return menage[2][3]}, - _all_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZO_,1)}, - _alm_=caml_call4(Runtime_ocaml_Runtime[62],_ZP_,[0],_all_,_alk_), - calcul_allocation_logement_dot= - caml_call3 - (Runtime_ocaml_Runtime[28],_ZQ_,embed_mode_occupation,_alm_)} - catch(_anh_) - {_anh_ = caml_wrap_exception(_anh_); - if(_anh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ZN_]; - throw _anh_} - try - {var - _aln_=function(param){throw Runtime_ocaml_Runtime[2]}, - _alo_=function(param){return 0}, - _alp_= - [0, - function(param) - {function _anc_(param){return informations_calcul} - function _and_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_ZS_,1)} - var - _ane_= - [0, - function(param) - {function _anf_(param){return informations_calcul} - function _ang_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_ZT_,1)} - return caml_call4 - (Runtime_ocaml_Runtime[62],_ZU_,[0],_ang_,_anf_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],_ZV_,_ane_,_and_,_anc_)}], - _alq_=caml_call4(Runtime_ocaml_Runtime[62],_ZW_,_alp_,_alo_,_aln_), - calcul_allocation_logement_dot$0= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ZX_, - embed_informations_calcul_a_p_$2, - _alq_)} - catch(_anb_) - {_anb_ = caml_wrap_exception(_anb_); - if(_anb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ZR_]; - throw _anb_} - try - {var - _alr_=function(param){return ressources_menage_prises_en_co}, - _als_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZZ_,1)}, - _alt_=caml_call4(Runtime_ocaml_Runtime[62],_Z0_,[0],_als_,_alr_), - calcul_allocation_logement_dot$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_Z1_,Runtime_ocaml_Runtime[13],_alt_)} - catch(_ana_) - {_ana_ = caml_wrap_exception(_ana_); - if(_ana_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ZY_]; - throw _ana_} - try - {var - _alu_=function(param){return menage[5]}, - _alv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z3_,1)}, - _alw_=caml_call4(Runtime_ocaml_Runtime[62],_Z4_,[0],_alv_,_alu_), - calcul_allocation_logement_dot$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Z5_,embed_situation_familiale,_alw_)} - catch(_am$_) - {_am$_ = caml_wrap_exception(_am$_); - if(_am$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Z2_]; - throw _am$_} - try - {var - _alx_=function(param){return eligibilite_allocation_logemen$6}, - _aly_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z7_,1)}, - _alz_=caml_call4(Runtime_ocaml_Runtime[62],_Z8_,[0],_aly_,_alx_), - calcul_allocation_logement_dot$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_Z9_,Runtime_ocaml_Runtime[14],_alz_)} - catch(_am__) - {_am__ = caml_wrap_exception(_am__); - if(_am__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Z6_]; - throw _am__} - try - {var - _alA_=function(param){return menage[2][11]}, - _alB_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z$_,1)}, - _alC_=caml_call4(Runtime_ocaml_Runtime[62],__a_,[0],_alB_,_alA_), - calcul_allocation_logement_dot$4= - caml_call3 - (Runtime_ocaml_Runtime[28],__b_,embed_zone_d_habitation,_alC_)} - catch(_am9_) - {_am9_ = caml_wrap_exception(_am9_); - if(_am9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Z__]; - throw _am9_} - try - {var - _alD_=function(param){return date_courante}, - _alE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__d_,1)}, - _alF_=caml_call4(Runtime_ocaml_Runtime[62],__e_,[0],_alE_,_alD_), - calcul_allocation_logement_dot$5= - caml_call3 - (Runtime_ocaml_Runtime[28],__f_,Runtime_ocaml_Runtime[16],_alF_)} - catch(_am8_) - {_am8_ = caml_wrap_exception(_am8_); - if(_am8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__c_]; - throw _am8_} - try - {var - _alG_= - function(param) - {switch(eligibilite_allocation_logemen$5[0]) - {case 0:return __h_;case 1:return __i_;default:return __j_}}, - _alH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__k_,1)}, - _alI_=caml_call4(Runtime_ocaml_Runtime[62],__l_,[0],_alH_,_alG_), - calcul_allocation_logement_dot$6= - caml_call3 - (Runtime_ocaml_Runtime[28], - __m_, - embed_type_aides_personnelle_l, - _alI_)} - catch(_am7_) - {_am7_ = caml_wrap_exception(_am7_); - if(_am7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__g_]; - throw _am7_} - var - _alJ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],__n_,calcul_allocation_logement), - [0, - calcul_allocation_logement_dot, - calcul_allocation_logement_dot$0, - calcul_allocation_logement_dot$1, - calcul_allocation_logement_dot$2, - calcul_allocation_logement_dot$3, - calcul_allocation_logement_dot$4, - calcul_allocation_logement_dot$5, - calcul_allocation_logement_dot$6]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],__o_,_alJ_), - calcul_allocation_logement_dot$7=result$1[1], - calcul_allocation_logement_dot$8=result$1[2]; - try - {var - _alK_=function(param){return menage[2][3]}, - _alL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__q_,1)}, - _alM_=caml_call4(Runtime_ocaml_Runtime[62],__r_,[0],_alL_,_alK_), - calcul_aide_personnalisee_loge= - caml_call3 - (Runtime_ocaml_Runtime[28],__s_,embed_mode_occupation,_alM_)} - catch(_am6_) - {_am6_ = caml_wrap_exception(_am6_); - if(_am6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__p_]; - throw _am6_} - try - {var - _alN_=function(param){return __u_}, - _alO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__v_,1)}, - _alP_=caml_call4(Runtime_ocaml_Runtime[62],__w_,[0],_alO_,_alN_), - calcul_aide_personnalisee_loge$0= - caml_call3 - (Runtime_ocaml_Runtime[28], - __x_, - embed_type_aides_personnelle_l, - _alP_)} - catch(_am5_) - {_am5_ = caml_wrap_exception(_am5_); - if(_am5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__t_]; - throw _am5_} - try - {var - _alQ_=function(param){throw Runtime_ocaml_Runtime[2]}, - _alR_=function(param){return 0}, - _alS_= - [0, - function(param) - {function _am0_(param){return informations_calcul} - function _am1_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],__z_,1)} - var - _am2_= - [0, - function(param) - {function _am3_(param){return informations_calcul} - function _am4_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],__A_,1)} - return caml_call4 - (Runtime_ocaml_Runtime[62],__B_,[0],_am4_,_am3_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[62],__C_,_am2_,_am1_,_am0_)}], - _alT_=caml_call4(Runtime_ocaml_Runtime[62],__D_,_alS_,_alR_,_alQ_), - calcul_aide_personnalisee_loge$1= - caml_call3 - (Runtime_ocaml_Runtime[28], - __E_, - embed_informations_calcul_a_p_$2, - _alT_)} - catch(_amZ_) - {_amZ_ = caml_wrap_exception(_amZ_); - if(_amZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__y_]; - throw _amZ_} - try - {var - _alU_=function(param){return ressources_menage_prises_en_co}, - _alV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__G_,1)}, - _alW_=caml_call4(Runtime_ocaml_Runtime[62],__H_,[0],_alV_,_alU_), - calcul_aide_personnalisee_loge$3= - caml_call3 - (Runtime_ocaml_Runtime[28],__I_,Runtime_ocaml_Runtime[13],_alW_)} - catch(_amY_) - {_amY_ = caml_wrap_exception(_amY_); - if(_amY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__F_]; - throw _amY_} - try - {var - _alX_=function(param){return menage[5]}, - _alY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__K_,1)}, - _alZ_=caml_call4(Runtime_ocaml_Runtime[62],__L_,[0],_alY_,_alX_), - calcul_aide_personnalisee_loge$4= - caml_call3 - (Runtime_ocaml_Runtime[28],__M_,embed_situation_familiale,_alZ_)} - catch(_amX_) - {_amX_ = caml_wrap_exception(_amX_); - if(_amX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__J_]; - throw _amX_} - try - {var - _al0_=function(param){return eligibilite_aide_personnalisee$4}, - _al1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__O_,1)}, - _al2_=caml_call4(Runtime_ocaml_Runtime[62],__P_,[0],_al1_,_al0_), - calcul_aide_personnalisee_loge$5= - caml_call3 - (Runtime_ocaml_Runtime[28],__Q_,Runtime_ocaml_Runtime[14],_al2_)} - catch(_amW_) - {_amW_ = caml_wrap_exception(_amW_); - if(_amW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__N_]; - throw _amW_} - try - {var - _al3_=function(param){return menage[2][11]}, - _al4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__S_,1)}, - _al5_=caml_call4(Runtime_ocaml_Runtime[62],__T_,[0],_al4_,_al3_), - calcul_aide_personnalisee_loge$6= - caml_call3 - (Runtime_ocaml_Runtime[28],__U_,embed_zone_d_habitation,_al5_)} - catch(_amV_) - {_amV_ = caml_wrap_exception(_amV_); - if(_amV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__R_]; - throw _amV_} - try - {var - _al6_=function(param){return date_courante}, - _al7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__W_,1)}, - _al8_=caml_call4(Runtime_ocaml_Runtime[62],__X_,[0],_al7_,_al6_), - calcul_aide_personnalisee_loge$7= - caml_call3 - (Runtime_ocaml_Runtime[28],__Y_,Runtime_ocaml_Runtime[16],_al8_)} - catch(_amU_) - {_amU_ = caml_wrap_exception(_amU_); - if(_amU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__V_]; - throw _amU_} - var - _al9_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],__Z_,calcul_aide_personnalisee_loge$2), - [0, - calcul_aide_personnalisee_loge, - calcul_aide_personnalisee_loge$0, - calcul_aide_personnalisee_loge$1, - calcul_aide_personnalisee_loge$3, - calcul_aide_personnalisee_loge$4, - calcul_aide_personnalisee_loge$5, - calcul_aide_personnalisee_loge$6, - calcul_aide_personnalisee_loge$7]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],__0_,_al9_), - calcul_aide_personnalisee_loge$8=result$2[1], - calcul_aide_personnalisee_loge$9=result$2[2]; - try - {var - _al__=function(param){return eligibilite_aide_personnalisee$5}, - _al$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__2_,1)}, - _ama_=caml_call4(Runtime_ocaml_Runtime[62],__3_,[0],_al$_,_al__)} - catch(_amT_) - {_amT_ = caml_wrap_exception(_amT_); - if(_amT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__1_]; - throw _amT_} - var - _amb_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],__4_,_amb_,_ama_); - try - {var - _amc_= - function(param) - {if(eligibilite_aide_personnalisee$3) - return eligibilite_aide_personnalisee$3; - switch(eligibilite_allocation_logemen$5[0]) - {case 0:return 0;case 1:return 1;default:return 1}}, - _amd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],__6_,1)}, - _ame_=caml_call4(Runtime_ocaml_Runtime[62],__7_,[0],_amd_,_amc_)} - catch(_amS_) - {_amS_ = caml_wrap_exception(_amS_); - if(_amS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__5_]; - throw _amS_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],__8_,Runtime_ocaml_Runtime[12],_ame_); - function _amf_(param) - {try - {var - _amt_= - function(param$0) - {if(eligibilite) - {if(eligibilite_aide_personnalisee$3) - {switch(eligibilite_allocation_logemen$5[0]) - {case 0:var _amx_=1;break; - case 1:var _amx_=0;break; - default:var _amx_=0} - if(! _amx_) - {var - _amE_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$g_, - Runtime_ocaml_Runtime[13], - calcul_allocation_logement_dot$7), - _amF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$h_, - calcul_allocation_logement_dot$8), - _amE_), - _amG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$i_, - Runtime_ocaml_Runtime[13], - _amF_), - _amH_=caml_call2(Runtime_ocaml_Runtime[27],_$j_,_amG_), - _amI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$k_, - Runtime_ocaml_Runtime[13], - calcul_aide_personnalisee_loge$8), - _amJ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$l_, - calcul_aide_personnalisee_loge$9), - _amI_), - _amK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$m_, - Runtime_ocaml_Runtime[13], - _amJ_), - _amL_=caml_call2(Runtime_ocaml_Runtime[27],_$n_,_amK_); - if(caml_call2(Runtime_ocaml_Runtime[74],_amL_,_amH_)) - {var - _amM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$o_, - Runtime_ocaml_Runtime[13], - param), - _amN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$p_, - calcul_aide_personnalisee_loge$9), - _amM_), - _amO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$q_, - Runtime_ocaml_Runtime[13], - _amN_); - return caml_call2(Runtime_ocaml_Runtime[27],_$r_,_amO_)} - var - _amP_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$s_, - Runtime_ocaml_Runtime[13], - param), - _amQ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$t_, - calcul_allocation_logement_dot$8), - _amP_), - _amR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$u_, - Runtime_ocaml_Runtime[13], - _amQ_); - return caml_call2(Runtime_ocaml_Runtime[27],_$v_,_amR_)}} - if(eligibilite_aide_personnalisee$3) - {var - _amy_= - caml_call3 - (Runtime_ocaml_Runtime[28], - ____, - Runtime_ocaml_Runtime[13], - param), - _amz_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - __$_, - calcul_aide_personnalisee_loge$9), - _amy_), - _amA_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$a_, - Runtime_ocaml_Runtime[13], - _amz_); - return caml_call2(Runtime_ocaml_Runtime[27],_$b_,_amA_)} - var - _amB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$c_, - Runtime_ocaml_Runtime[13], - param), - _amC_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$d_, - calcul_allocation_logement_dot$8), - _amB_), - _amD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$e_, - Runtime_ocaml_Runtime[13], - _amC_); - return caml_call2(Runtime_ocaml_Runtime[27],_$f_,_amD_)} - return param}, - _amu_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_$w_,1)}, - _amv_=caml_call4(Runtime_ocaml_Runtime[62],_$x_,[0],_amu_,_amt_); - return _amv_} - catch(_amw_) - {_amw_ = caml_wrap_exception(_amw_); - if(_amw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],__9_]; - throw _amw_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_$y_,Runtime_ocaml_Runtime[10],_amf_); - try - {var - _amg_= - function(param) - {if(eligibilite) - {if(eligibilite_aide_personnalisee$3) - {switch(eligibilite_allocation_logemen$5[0]) - {case 0:var _amk_=1;break; - case 1:var _amk_=0;break; - default:var _amk_=0} - if(! _amk_) - {var - _aml_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$A_, - Runtime_ocaml_Runtime[13], - calcul_allocation_logement_dot$7), - _amm_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$B_, - calcul_allocation_logement_dot$8), - _aml_), - _amn_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$C_, - Runtime_ocaml_Runtime[13], - _amm_), - _amo_=caml_call2(Runtime_ocaml_Runtime[27],_$D_,_amn_), - _amp_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$E_, - Runtime_ocaml_Runtime[13], - calcul_aide_personnalisee_loge$8), - _amq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _$F_, - calcul_aide_personnalisee_loge$9), - _amp_), - _amr_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$G_, - Runtime_ocaml_Runtime[13], - _amq_), - _ams_=caml_call2(Runtime_ocaml_Runtime[27],_$H_,_amr_); - return caml_call2(Runtime_ocaml_Runtime[74],_ams_,_amo_) - ?calcul_aide_personnalisee_loge$8 - :calcul_allocation_logement_dot$7}} - return eligibilite_aide_personnalisee$3 - ?calcul_aide_personnalisee_loge$8 - :calcul_allocation_logement_dot$7} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$402)}, - _amh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$I_,1)}, - _ami_=caml_call4(Runtime_ocaml_Runtime[62],_$J_,[0],_amh_,_amg_)} - catch(_amj_) - {_amj_ = caml_wrap_exception(_amj_); - if(_amj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$z_]; - throw _amj_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_$K_,Runtime_ocaml_Runtime[13],_ami_); - return [0, - eligibilite, - aide_finale_formule, - traitement_aide_finale, - coefficents_enfants_garde_alte]} - function calculette_aides_au_logement_g(calculette_aides_au_logement_g) - {var - menage=calculette_aides_au_logement_g[1], - demandeur=calculette_aides_au_logement_g[2], - informations_calcul=calculette_aides_au_logement_g[3], - date_courante=calculette_aides_au_logement_g[4], - ressources_menage_prises_en_co=calculette_aides_au_logement_g[5]; - try - {var - _ajF_= - function(param) - {var - _akN_=menage[9], - _akO_=menage[8], - _akP_=menage[7], - _akQ_=menage[6], - _akR_=menage[5], - _akS_=menage[4], - _akT_=menage[3]; - function _akU_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[9][0]?1:0} - return 1} - var _akV_=caml_call2(Runtime_ocaml_Runtime[112],_akU_,_akT_); - return [0, - menage[1], - menage[2], - _akV_, - _akS_, - _akR_, - _akQ_, - _akP_, - _akO_, - _akN_]}, - _ajG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$M_,1)}, - _ajH_=caml_call4(Runtime_ocaml_Runtime[62],_$N_,[0],_ajG_,_ajF_)} - catch(_akM_) - {_akM_ = caml_wrap_exception(_akM_); - if(_akM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$L_]; - throw _akM_} - var - menage_sans_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_$O_,embed_menage,_ajH_); - try - {var - _ajI_=function(param){return menage}, - _ajJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$Q_,1)}, - _ajK_=caml_call4(Runtime_ocaml_Runtime[62],_$R_,[0],_ajJ_,_ajI_), - calculette_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_$S_,embed_menage,_ajK_)} - catch(_akL_) - {_akL_ = caml_wrap_exception(_akL_); - if(_akL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$P_]; - throw _akL_} - try - {var - _ajL_=function(param){return demandeur}, - _ajM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$U_,1)}, - _ajN_=caml_call4(Runtime_ocaml_Runtime[62],_$V_,[0],_ajM_,_ajL_), - calculette_dot_demandeur= - caml_call3(Runtime_ocaml_Runtime[28],_$W_,embed_demandeur,_ajN_)} - catch(_akK_) - {_akK_ = caml_wrap_exception(_akK_); - if(_akK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$T_]; - throw _akK_} - try - {var - _ajO_=function(param){return informations_calcul}, - _ajP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$Y_,1)}, - _ajQ_=caml_call4(Runtime_ocaml_Runtime[62],_$Z_,[0],_ajP_,_ajO_), - calculette_dot_informations_ca= - caml_call3 - (Runtime_ocaml_Runtime[28], - _$0_, - embed_informations_calcul_a_p_$2, - _ajQ_)} - catch(_akJ_) - {_akJ_ = caml_wrap_exception(_akJ_); - if(_akJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$X_]; - throw _akJ_} - try - {var - _ajR_=function(param){return date_courante}, - _ajS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$2_,1)}, - _ajT_=caml_call4(Runtime_ocaml_Runtime[62],_$3_,[0],_ajS_,_ajR_), - calculette_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_$4_,Runtime_ocaml_Runtime[16],_ajT_)} - catch(_akI_) - {_akI_ = caml_wrap_exception(_akI_); - if(_akI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$1_]; - throw _akI_} - try - {var - _ajU_=function(param){return ressources_menage_prises_en_co}, - _ajV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$6_,1)}, - _ajW_=caml_call4(Runtime_ocaml_Runtime[62],_$7_,[0],_ajV_,_ajU_), - calculette_dot_ressources_mena= - caml_call3 - (Runtime_ocaml_Runtime[28],_$8_,Runtime_ocaml_Runtime[13],_ajW_)} - catch(_akH_) - {_akH_ = caml_wrap_exception(_akH_); - if(_akH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$5_]; - throw _akH_} - var - _ajX_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_$9_,calculette_aides_au_logement), - [0, - calculette_dot_menage, - calculette_dot_demandeur, - calculette_dot_informations_ca, - calculette_dot_date_courante, - calculette_dot_ressources_mena]), - result=caml_call2(Runtime_ocaml_Runtime[27],_$__,_ajX_), - calculette_dot_eligibilite=result[1], - calculette_dot_aide_finale_for=result[2], - calculette_dot_traitement_aide=result[3], - calculette_dot_coefficents_enf=result[4]; - try - {var - _ajY_=function(param){return menage_sans_enfants_garde_alte}, - _ajZ_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aaa_,1)}, - _aj0_=caml_call4(Runtime_ocaml_Runtime[62],_aab_,[0],_ajZ_,_ajY_), - calculette_sans_garde_alternee= - caml_call3(Runtime_ocaml_Runtime[28],_aac_,embed_menage,_aj0_)} - catch(_akG_) - {_akG_ = caml_wrap_exception(_akG_); - if(_akG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_$$_]; - throw _akG_} - try - {var - _aj1_=function(param){return demandeur}, - _aj2_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aae_,1)}, - _aj3_=caml_call4(Runtime_ocaml_Runtime[62],_aaf_,[0],_aj2_,_aj1_), - calculette_sans_garde_alternee$0= - caml_call3(Runtime_ocaml_Runtime[28],_aag_,embed_demandeur,_aj3_)} - catch(_akF_) - {_akF_ = caml_wrap_exception(_akF_); - if(_akF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aad_]; - throw _akF_} - try - {var - _aj4_=function(param){return informations_calcul}, - _aj5_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aai_,1)}, - _aj6_=caml_call4(Runtime_ocaml_Runtime[62],_aaj_,[0],_aj5_,_aj4_), - calculette_sans_garde_alternee$1= - caml_call3 - (Runtime_ocaml_Runtime[28], - _aak_, - embed_informations_calcul_a_p_$2, - _aj6_)} - catch(_akE_) - {_akE_ = caml_wrap_exception(_akE_); - if(_akE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aah_]; - throw _akE_} - try - {var - _aj7_=function(param){return date_courante}, - _aj8_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aam_,1)}, - _aj9_=caml_call4(Runtime_ocaml_Runtime[62],_aan_,[0],_aj8_,_aj7_), - calculette_sans_garde_alternee$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_aao_,Runtime_ocaml_Runtime[16],_aj9_)} - catch(_akD_) - {_akD_ = caml_wrap_exception(_akD_); - if(_akD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aal_]; - throw _akD_} - try - {var - _aj__=function(param){return ressources_menage_prises_en_co}, - _aj$_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aaq_,1)}, - _aka_=caml_call4(Runtime_ocaml_Runtime[62],_aar_,[0],_aj$_,_aj__), - calculette_sans_garde_alternee$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_aas_,Runtime_ocaml_Runtime[13],_aka_)} - catch(_akC_) - {_akC_ = caml_wrap_exception(_akC_); - if(_akC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aap_]; - throw _akC_} - var - _akb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_aat_,calculette_aides_au_logement), - [0, - calculette_sans_garde_alternee, - calculette_sans_garde_alternee$0, - calculette_sans_garde_alternee$1, - calculette_sans_garde_alternee$2, - calculette_sans_garde_alternee$3]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_aau_,_akb_), - calculette_sans_garde_alternee$4=result$0[2]; - try - {var - _akc_=function(param){return calculette_dot_eligibilite}, - _akd_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aaw_,1)}, - _ake_=caml_call4(Runtime_ocaml_Runtime[62],_aax_,[0],_akd_,_akc_)} - catch(_akB_) - {_akB_ = caml_wrap_exception(_akB_); - if(_akB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aav_]; - throw _akB_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_aay_,Runtime_ocaml_Runtime[12],_ake_); - try - {var - _akf_=function(param){return calculette_dot_coefficents_enf}, - _akg_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aaA_,1)}, - _akh_=caml_call4(Runtime_ocaml_Runtime[62],_aaB_,[0],_akg_,_akf_)} - catch(_akA_) - {_akA_ = caml_wrap_exception(_akA_); - if(_akA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aaz_]; - throw _akA_} - var - _aki_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_aaC_,_aki_,_akh_); - try - {var - _akj_= - function(param) - {var _akn_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$403); - if - (caml_equal - (caml_call1 - (Runtime_ocaml_Runtime[113],coefficents_enfants_garde_alte), - _akn_)) - var _ako_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$404); - else - var - _akt_= - caml_call1 - (Runtime_ocaml_Runtime[113],coefficents_enfants_garde_alte), - _aku_=caml_call1(Runtime_ocaml_Runtime[41],_akt_), - _akv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$405), - _akw_= - function(acc,coeff) - {return caml_call2(Runtime_ocaml_Runtime[85],acc,coeff)}, - _akx_= - caml_call3 - (Stdlib_Array[17],_akw_,_akv_,coefficents_enfants_garde_alte), - _aky_=caml_call2(Runtime_ocaml_Runtime[89],_akx_,_aku_), - _akz_= - caml_call2 - (Runtime_ocaml_Runtime[68], - calculette_dot_aide_finale_for, - calculette_sans_garde_alternee$4), - _ako_=caml_call2(Runtime_ocaml_Runtime[65],_akz_,_aky_); - var - _akp_= - caml_call2 - (Runtime_ocaml_Runtime[67], - calculette_sans_garde_alternee$4, - _ako_), - _akq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _aaE_, - Runtime_ocaml_Runtime[13], - _akp_), - _akr_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _aaF_, - calculette_dot_traitement_aide), - _akq_), - _aks_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _aaG_, - Runtime_ocaml_Runtime[13], - _akr_); - return caml_call2(Runtime_ocaml_Runtime[27],_aaH_,_aks_)}, - _akk_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_aaI_,1)}, - _akl_=caml_call4(Runtime_ocaml_Runtime[62],_aaJ_,[0],_akk_,_akj_)} - catch(_akm_) - {_akm_ = caml_wrap_exception(_akm_); - if(_akm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_aaD_]; - throw _akm_} - var - aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_aaK_,Runtime_ocaml_Runtime[13],_akl_); - return [0,eligibilite,aide_finale]} - var - Law_source_Aides_logement= - [0, - TypeBailleur, - embed_type_bailleur, - TypePret, - embed_type_pret, - TitulairePret, - embed_titulaire_pret, - TypeTravauxLogementD83215, - embed_type_travaux_logement_d8, - TypeTravauxLogementR8425, - embed_type_travaux_logement_r8, - AmelioreParOccupant, - embed_ameliore_par_occupant, - LimiteTranche, - embed_limite_tranche, - LimiteTrancheDecimal, - embed_limite_tranche_decimal, - PrestationRecue, - embed_prestation_recue, - TypeContratTravail, - embed_type_contrat_travail, - ParentOuAutre, - embed_parent_ou_autre, - SituationGardeAlternee, - embed_situation_garde_alternee, - Parente, - embed_parente, - DateDeNaissanceOuMoisDeGrosses, - embed_date_de_naissance_ou_moi, - Nationalite, - embed_nationalite, - ZoneDHabitation, - embed_zone_d_habitation, - CategorieCalculAPL, - embed_categorie_calcul_a_p_l, - PaiementLogementDistinctProfes, - embed_paiement_logement_distin, - VersementA, - embed_versement_a, - DepenseLogement, - embed_depense_logement, - ModeOccupationImpaye, - embed_mode_occupation_impaye, - EligibiliteAllocationLogement, - embed_eligibilite_allocation_l, - TypeAidesPersonnelleLogement, - embed_type_aides_personnelle_l, - SituationFamiliale, - embed_situation_familiale, - PriseEnCharge$0, - embed_prise_en_charge$0, - TypeLogementFoyer, - embed_type_logement_foyer, - CategorieEquivalenceLoyerAlloc, - embed_categorie_equivalence_lo, - SituationFamilialeCalculAPL, - embed_situation_familiale_calc, - Collectivite$0, - embed_collectivite$0, - PriseEnChargeEnfant, - embed_prise_en_charge_enfant, - SituationObligationScolaire$0, - embed_situation_obligation_sco$0, - ElementPrestationsFamiliales$0, - embed_element_prestations_fami$0, - PersonneSousLocation, - embed_personne_sous_location, - Patrimoine, - embed_patrimoine, - PersonneVivantHabituellementAu, - embed_personne_vivant_habituel, - InfosChangementLogementD8424, - embed_infos_changement_logemen, - Bailleur, - embed_bailleur, - Pret, - embed_pret, - NeufOuAncien, - embed_neuf_ou_ancien, - TrancheRevenu, - embed_tranche_revenu, - TrancheRevenuDecimal, - embed_tranche_revenu_decimal, - AutrePersonneACharge, - embed_autre_personne_a_charge, - DateNaissanceTroisiemeOuDernie, - embed_date_naissance_troisieme, - InformationsCalculAPLLogementF, - embed_informations_calcul_a_p_, - EnfantPrestationsFamiliales, - embed_enfant_prestations_famil, - EnfantACharge, - embed_enfant_a_charge, - LoueOuSousLoueADesTiers, - embed_loue_ou_sous_loue_a_des_, - Demandeur, - embed_demandeur, - ChangementLogementD8424, - embed_changement_logement_d842, - Location, - embed_location, - Proprietaire, - embed_proprietaire, - InformationsCalculAPLAccession, - embed_informations_calcul_a_p_$0, - PersonneACharge, - embed_personne_a_charge, - InformationsCalculAPLLocatif, - embed_informations_calcul_a_p_$1, - LogementFoyer, - embed_logement_foyer, - InformationsCalculAPL, - embed_informations_calcul_a_p_$2, - ModeOccupation, - embed_mode_occupation, - Logement, - embed_logement, - Menage, - embed_menage, - EligibiliteAidesPersonnelleLog, - embed_eligibilite_aides_person, - EligibiliteAidesPersonnelleLog$0, - embed_eligibilite_aides_person$0, - EligibiliteAidePersonnaliseeLo, - embed_eligibilite_aide_personn, - EligibiliteAidePersonnaliseeLo$0, - embed_eligibilite_aide_personn$0, - EligibiliteAllocationLogementO, - embed_eligibilite_allocation_l$0, - EligibiliteAllocationLogementI, - embed_eligibilite_allocation_l$1, - EligibilitePrimeDeDemenagement, - embed_eligibilite_prime_de_dem, - EligibilitePrimeDeDemenagement$0, - embed_eligibilite_prime_de_dem$0, - RessourcesAidesPersonnelleLoge, - embed_ressources_aides_personn, - RessourcesAidesPersonnelleLoge$0, - embed_ressources_aides_personn$0, - ContributionsSocialesAidesPers, - embed_contributions_sociales_a, - ContributionsSocialesAidesPers$0, - embed_contributions_sociales_a$0, - CalculAidePersonnaliseeLogemen, - embed_calcul_aide_personnalise, - CalculAidePersonnaliseeLogemen$0, - embed_calcul_aide_personnalise$0, - CalculEquivalenceLoyerMinimale, - embed_calcul_equivalence_loyer, - CalculEquivalenceLoyerMinimale$0, - embed_calcul_equivalence_loyer$0, - CalculNombrePartLogementFoyerO, - embed_calcul_nombre_part_logem, - CalculNombrePartLogementFoyerI, - embed_calcul_nombre_part_logem$0, - CalculAidePersonnaliseeLogemen$1, - embed_calcul_aide_personnalise$1, - CalculAidePersonnaliseeLogemen$2, - embed_calcul_aide_personnalise$2, - CalculNombrePartsAccessionProp, - embed_calcul_nombre_parts_acce, - CalculNombrePartsAccessionProp$0, - embed_calcul_nombre_parts_acce$0, - CalculAidePersonnaliseeLogemen$3, - embed_calcul_aide_personnalise$3, - CalculAidePersonnaliseeLogemen$4, - embed_calcul_aide_personnalise$4, - CalculAidePersonnaliseeLogemen$5, - embed_calcul_aide_personnalise$5, - CalculAidePersonnaliseeLogemen$6, - embed_calcul_aide_personnalise$6, - CalculAllocationLogementLocati, - embed_calcul_allocation_logeme, - CalculAllocationLogementLocati$0, - embed_calcul_allocation_logeme$0, - CalculAllocationLogementAccess, - embed_calcul_allocation_logeme$1, - CalculAllocationLogementAccess$0, - embed_calcul_allocation_logeme$2, - CalculAllocationLogementFoyerO, - embed_calcul_allocation_logeme$3, - CalculAllocationLogementFoyerI, - embed_calcul_allocation_logeme$4, - CalculAllocationLogementOut, - embed_calcul_allocation_logeme$5, - CalculAllocationLogementIn, - embed_calcul_allocation_logeme$6, - OuvertureDroitsRetraiteOut, - embed_ouverture_droits_retrait, - OuvertureDroitsRetraiteIn, - embed_ouverture_droits_retrait$0, - ImpayeDepenseLogementOut, - embed_impaye_depense_logement_, - ImpayeDepenseLogementIn, - embed_impaye_depense_logement_$0, - CalculetteAidesAuLogementOut, - embed_calculette_aides_au_loge, - CalculetteAidesAuLogementIn, - embed_calculette_aides_au_loge$0, - CalculetteAidesAuLogementGarde, - embed_calculette_aides_au_loge$1, - CalculetteAidesAuLogementGarde$0, - embed_calculette_aides_au_loge$2, - BaseMensuelleAllocationsFamili$1, - embed_base_mensuelle_allocatio$1, - BaseMensuelleAllocationsFamili$2, - embed_base_mensuelle_allocatio$2, - SmicOut$0, - embed_smic_out$0, - SmicIn$0, - embed_smic_in$0, - EligibilitePrestationsFamilial, - embed_eligibilite_prestations_, - EligibilitePrestationsFamilial$0, - embed_eligibilite_prestations_$0, - contributions_sociales_aides_p, - calcul_equivalence_loyer_minim, - calcul_nombre_part_logement_fo, - calcul_nombre_parts_accession_, - ouverture_droits_retraite, - impaye_depense_logement, - base_mensuelle_allocations_fam$5, - smic$1, - calcul_aide_personnalisee_loge, - calcul_aide_personnalisee_loge$0, - calcul_aide_personnalisee_loge$1, - eligibilite_aides_personnelle_, - ressources_aides_personnelle_l, - eligibilite_prestations_famili, - calcul_allocation_logement_loc, - calcul_allocation_logement_foy, - calcul_allocation_logement_acc, - calcul_aide_personnalisee_loge$2, - eligibilite_prime_de_demenagem, - eligibilite_aide_personnalisee, - eligibilite_allocation_logemen, - calcul_allocation_logement, - calculette_aides_au_logement, - calculette_aides_au_logement_g]; - caml_register_global - (8859,Law_source_Aides_logement,"Law_source__Aides_logement"); - function type_bailleur_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"BailleurSocial","payload":arg}} - var arg$0=param[1]; - return {"kind":"BailleurPrive","payload":arg$0}} - function type_bailleur_of_jsoo(type_bailleur) - {var cons=caml_string_of_jsstring(type_bailleur.kind); - if(caml_string_notequal(cons,cst_BailleurPrive)) - {if(caml_string_notequal(cons,cst_BailleurSocial$0)) - {var _ajE_=caml_call2(Stdlib_Printf[4],_aaL_,cons); - return caml_call1(Stdlib[2],_ajE_)} - return _aaM_} - return _aaN_} - function type_pret_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"D331_32","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"D331_63_64","payload":arg$0}; - case 2:var arg$1=param[1];return {"kind":"D331_59_8","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"D331_76_1","payload":arg$2}; - default:var arg$3=param[1];return {"kind":"Autre","payload":arg$3}}} - function type_pret_of_jsoo(type_pret) - {var cons=caml_string_of_jsstring(type_pret.kind); - if(caml_string_notequal(cons,cst_Autre$2)) - {if(caml_string_notequal(cons,cst_D331_32$0)) - {if(caml_string_notequal(cons,cst_D331_59_8$0)) - {if(caml_string_notequal(cons,cst_D331_63_64$0)) - {if(caml_string_notequal(cons,cst_D331_76_1$0)) - {var _ajD_=caml_call2(Stdlib_Printf[4],_aaO_,cons); - return caml_call1(Stdlib[2],_ajD_)} - return _aaP_} - return _aaQ_} - return _aaR_} - return _aaS_} - return _aaT_} - function titulaire_pret_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Demandeur","payload":arg}} - var arg$0=param[1]; - return {"kind":"VendeurQuandDemandeurAContratLocationAccession", - "payload":arg$0}} - function titulaire_pret_of_jsoo(titulaire_pret) - {var cons=caml_string_of_jsstring(titulaire_pret.kind); - if(caml_string_notequal(cons,cst_Demandeur$0)) - {if(caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0)) - {var _ajC_=caml_call2(Stdlib_Printf[4],_aaU_,cons); - return caml_call1(Stdlib[2],_ajC_)} - return _aaV_} - return _aaW_} - function type_travaux_logement_d832_15_(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"TravauxPourAcquisitionD832_15_1","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"TravauxSurLogementDejaAcquisD832_15_2", - "payload":arg$0}; - default: - var arg$1=param[1];return {"kind":"PasDeTravaux","payload":arg$1}}} - function type_travaux_logement_d832_15_$0(type_travaux_logement_d832_15) - {var cons=caml_string_of_jsstring(type_travaux_logement_d832_15.kind); - if(caml_string_notequal(cons,cst_PasDeTravaux$1)) - {if(caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0)) - {if(caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu)) - {var _ajB_=caml_call2(Stdlib_Printf[4],_aaX_,cons); - return caml_call1(Stdlib[2],_ajB_)} - return _aaY_} - return _aaZ_} - return _aa0_} - function type_travaux_logement_r842_5_t(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"ObjectifDecenceLogement","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"PrevuDansListeR321_15","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"AgrandirOuRendreHabitableD331_63","payload":arg$1}; - default: - var arg$2=param[1];return {"kind":"PasDeTravaux","payload":arg$2}}} - function type_travaux_logement_r842_5_o(type_travaux_logement_r842_5) - {var cons=caml_string_of_jsstring(type_travaux_logement_r842_5.kind); - if(caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0)) - {if(caml_string_notequal(cons,cst_ObjectifDecenceLogement)) - {if(caml_string_notequal(cons,cst_PasDeTravaux$2)) - {if(caml_string_notequal(cons,cst_PrevuDansListeR321_15)) - {var _ajA_=caml_call2(Stdlib_Printf[4],_aa1_,cons); - return caml_call1(Stdlib[2],_ajA_)} - return _aa2_} - return _aa3_} - return _aa4_} - return _aa5_} - function ameliore_par_occupant_to_jsoo(param) - {if(0 === param[0]){var arg=param[1];return {"kind":"Oui","payload":arg}} - var arg$0=param[1]; - return {"kind":"Non","payload":arg$0}} - function ameliore_par_occupant_of_jsoo(ameliore_par_occupant) - {var cons=caml_string_of_jsstring(ameliore_par_occupant.kind); - if(caml_string_notequal(cons,cst_Non$2)) - {if(caml_string_notequal(cons,cst_Oui$1)) - {var _ajz_=caml_call2(Stdlib_Printf[4],_aa6_,cons); - return caml_call1(Stdlib[2],_ajz_)} - return _aa7_} - return _aa8_} - function limite_tranche_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t43=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"Revenu","payload":t43}} - var arg$0=param[1]; - return {"kind":"Infini","payload":arg$0}} - function limite_tranche_of_jsoo(limite_tranche) - {var cons=caml_string_of_jsstring(limite_tranche.kind); - if(caml_string_notequal(cons,cst_Infini$1)) - {if(caml_string_notequal(cons,cst_Revenu$1)) - {var _ajx_=caml_call2(Stdlib_Printf[4],_aa9_,cons); - return caml_call1(Stdlib[2],_ajx_)} - var - _ajy_= - caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajy_)]} - return _aa__} - function limite_tranche_decimal_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t49=caml_call1(Runtime_ocaml_Runtime[43],arg); - return {"kind":"Revenu","payload":t49}} - var arg$0=param[1]; - return {"kind":"Infini","payload":arg$0}} - function limite_tranche_decimal_of_jsoo(limite_tranche_decimal) - {var cons=caml_string_of_jsstring(limite_tranche_decimal.kind); - if(caml_string_notequal(cons,cst_Infini$2)) - {if(caml_string_notequal(cons,cst_Revenu$2)) - {var _ajw_=caml_call2(Stdlib_Printf[4],_aa$_,cons); - return caml_call1(Stdlib[2],_ajw_)} - return [0, - caml_call1 - (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]} - return _aba_} - function prestation_recue_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ComplementFamilial","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"AllocationJeuneEnfant","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationSoutienEnfantHandicape","payload":arg$3}; - default: - var arg$4=param[1]; - return {"kind":"AllocationAdulteHandicape","payload":arg$4}}} - function prestation_recue_of_jsoo(prestation_recue) - {var cons=caml_string_of_jsstring(prestation_recue.kind); - if(caml_string_notequal(cons,cst_AllocationAdulteHandicape)) - {if(caml_string_notequal(cons,cst_AllocationJeuneEnfant$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$3)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$3)) - {if(caml_string_notequal(cons,cst_ComplementFamilial$0)) - {var _ajv_=caml_call2(Stdlib_Printf[4],_abb_,cons); - return caml_call1(Stdlib[2],_ajv_)} - return _abc_} - return _abd_} - return _abe_} - return _abf_} - return _abg_} - return _abh_} - function type_contrat_travail_to_jsoo(param) - {if(0 === param[0]){var arg=param[1];return {"kind":"CDI","payload":arg}} - var arg$0=param[1]; - return {"kind":"Autres","payload":arg$0}} - function type_contrat_travail_of_jsoo(type_contrat_travail) - {var cons=caml_string_of_jsstring(type_contrat_travail.kind); - if(caml_string_notequal(cons,cst_Autres$0)) - {if(caml_string_notequal(cons,cst_CDI$0)) - {var _aju_=caml_call2(Stdlib_Printf[4],_abi_,cons); - return caml_call1(Stdlib[2],_aju_)} - return _abj_} - return _abk_} - function parent_ou_autre_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t73=caml_call1(Runtime_ocaml_Runtime[43],arg); - return {"kind":"DemandeurOuConjointOuParentOuViaPartsSocietes", - "payload":t73}} - var arg$0=param[1]; - return {"kind":"Autre","payload":arg$0}} - function parent_ou_autre_of_jsoo(parent_ou_autre) - {var cons=caml_string_of_jsstring(parent_ou_autre.kind); - if(caml_string_notequal(cons,cst_Autre$3)) - {if(caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0)) - {var _ajt_=caml_call2(Stdlib_Printf[4],_abl_,cons); - return caml_call1(Stdlib[2],_ajt_)} - return [0, - caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]} - return _abm_} - function situation_garde_alternee_to_js(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}} - var arg$0=param[1],t81=caml_call1(Runtime_ocaml_Runtime[43],arg$0); - return {"kind":"GardeAlterneeCoefficientPriseEnCharge","payload":t81}} - function situation_garde_alternee_of_js(situation_garde_alternee) - {var cons=caml_string_of_jsstring(situation_garde_alternee.kind); - if(caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr)) - {if(caml_string_notequal(cons,cst_PasDeGardeAlternee)) - {var _ajs_=caml_call2(Stdlib_Printf[4],_abn_,cons); - return caml_call1(Stdlib[2],_ajs_)} - return _abo_} - return [1, - caml_call1 - (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]} - function parente_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"Descendant","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"CollateralDeuxiemeTroisiemeDegre","payload":arg$1}}} - function parente_of_jsoo(parente) - {var cons=caml_string_of_jsstring(parente.kind); - if(caml_string_notequal(cons,cst_Ascendant$0)) - {if(caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem)) - {if(caml_string_notequal(cons,cst_Descendant$0)) - {var _ajr_=caml_call2(Stdlib_Printf[4],_abp_,cons); - return caml_call1(Stdlib[2],_ajr_)} - return _abq_} - return _abr_} - return _abs_} - function date_de_naissance_ou_mois_de_g(param) - {switch(param[0]) - {case 0: - var arg=param[1],t92=caml_call1(Runtime_jsoo_Runtime[5],arg); - return {"kind":"DateDeNaissance","payload":t92}; - case 1: - var arg$0=param[1]; - return {"kind":"AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse", - "payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse", - "payload":arg$1}}} - function date_de_naissance_ou_mois_de_g$0(date_de_naissance_ou_mois_de_g) - {var cons=caml_string_of_jsstring(date_de_naissance_ou_mois_de_g.kind); - if(caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT)) - {if(caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0)) - {if(caml_string_notequal(cons,cst_DateDeNaissance$0)) - {var _ajq_=caml_call2(Stdlib_Printf[4],_abt_,cons); - return caml_call1(Stdlib[2],_ajq_)} - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - date_de_naissance_ou_mois_de_g.payload)]} - return _abu_} - return _abv_} - function nationalite_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Francaise","payload":arg}} - var arg$0=param[1]; - return {"kind":"Etrangere","payload":arg$0}} - function nationalite_of_jsoo(nationalite) - {var cons=caml_string_of_jsstring(nationalite.kind); - if(caml_string_notequal(cons,cst_Etrangere)) - {if(caml_string_notequal(cons,cst_Francaise)) - {var _ajp_=caml_call2(Stdlib_Printf[4],_abw_,cons); - return caml_call1(Stdlib[2],_ajp_)} - return _abx_} - return _aby_} - function zone_d_habitation_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Zone2","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Zone3","payload":arg$1}}} - function zone_d_habitation_of_jsoo(zone_d_habitation) - {var cons=caml_string_of_jsstring(zone_d_habitation.kind); - if(caml_string_notequal(cons,cst_Zone1$0)) - {if(caml_string_notequal(cons,cst_Zone2$0)) - {if(caml_string_notequal(cons,cst_Zone3$0)) - {var _ajo_=caml_call2(Stdlib_Printf[4],_abz_,cons); - return caml_call1(Stdlib[2],_ajo_)} - return _abA_} - return _abB_} - return _abC_} - function categorie_calcul_a_p_l_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Location","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AccessionPropriete","payload":arg$0}; - default: - var arg$1=param[1];return {"kind":"LogementFoyer","payload":arg$1}}} - function categorie_calcul_a_p_l_of_jsoo(categorie_calcul_a_p_l) - {var cons=caml_string_of_jsstring(categorie_calcul_a_p_l.kind); - if(caml_string_notequal(cons,cst_AccessionPropriete)) - {if(caml_string_notequal(cons,cst_Location$0)) - {if(caml_string_notequal(cons,cst_LogementFoyer$0)) - {var _ajn_=caml_call2(Stdlib_Printf[4],_abD_,cons); - return caml_call1(Stdlib[2],_ajn_)} - return _abE_} - return _abF_} - return _abG_} - function paiement_logement_distinct_pro(param) - {if(0 === param[0]) - {var arg=param[1],t119=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"OuiAvecLoyerOuCharges","payload":t119}} - var arg$0=param[1]; - return {"kind":"Non","payload":arg$0}} - function paiement_logement_distinct_pro$0(paiement_logement_distinct_pro) - {var cons=caml_string_of_jsstring(paiement_logement_distinct_pro.kind); - if(caml_string_notequal(cons,cst_Non$3)) - {if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0)) - {var _ajl_=caml_call2(Stdlib_Printf[4],_abH_,cons); - return caml_call1(Stdlib[2],_ajl_)} - var - _ajm_= - caml_call1 - (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajm_)]} - return _abI_} - function versement_a_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"Beneficiaire","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"EtablissementHabilite","payload":arg$1}}} - function versement_a_of_jsoo(versement_a) - {var cons=caml_string_of_jsstring(versement_a.kind); - if(caml_string_notequal(cons,cst_Bailleur$0)) - {if(caml_string_notequal(cons,cst_Beneficiaire)) - {if(caml_string_notequal(cons,cst_EtablissementHabilite)) - {var _ajk_=caml_call2(Stdlib_Printf[4],_abJ_,cons); - return caml_call1(Stdlib[2],_ajk_)} - return _abK_} - return _abL_} - return _abM_} - function depense_logement_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t132=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"TotalAnnuelEcheances","payload":t132}; - case 1: - var arg$0=param[1],t134=caml_call1(Runtime_ocaml_Runtime[35],arg$0); - return {"kind":"Mensualite","payload":t134}; - default: - var arg$1=param[1],t136=caml_call1(Runtime_ocaml_Runtime[35],arg$1); - return {"kind":"Loyer","payload":t136}}} - function depense_logement_of_jsoo(depense_logement) - {var cons=caml_string_of_jsstring(depense_logement.kind); - if(caml_string_notequal(cons,cst_Loyer$0)) - {if(caml_string_notequal(cons,cst_Mensualite)) - {if(caml_string_notequal(cons,cst_TotalAnnuelEcheances)) - {var _ajg_=caml_call2(Stdlib_Printf[4],_abN_,cons); - return caml_call1(Stdlib[2],_ajg_)} - var - _ajh_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajh_)]} - var - _aji_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [1,caml_call1(Runtime_ocaml_Runtime[33],_aji_)]} - var - _ajj_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [2,caml_call1(Runtime_ocaml_Runtime[33],_ajj_)]} - function mode_occupation_impaye_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}} - var arg$0=param[1]; - return {"kind":"ImpayePret","payload":arg$0}} - function mode_occupation_impaye_of_jsoo(mode_occupation_impaye) - {var cons=caml_string_of_jsstring(mode_occupation_impaye.kind); - if(caml_string_notequal(cons,cst_ImpayeLoyer)) - {if(caml_string_notequal(cons,cst_ImpayePret)) - {var _ajf_=caml_call2(Stdlib_Printf[4],_abO_,cons); - return caml_call1(Stdlib[2],_ajf_)} - return _abP_} - return _abQ_} - function eligibilite_allocation_logemen$0(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationLogementFamiliale","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"AllocationLogementSociale","payload":arg$1}}} - function eligibilite_allocation_logemen$1(eligibilite_allocation_logemen) - {var cons=caml_string_of_jsstring(eligibilite_allocation_logemen.kind); - if(caml_string_notequal(cons,cst_AllocationLogementFamilial$1)) - {if(caml_string_notequal(cons,cst_AllocationLogementSociale$1)) - {if(caml_string_notequal(cons,cst_PasEligible)) - {var _aje_=caml_call2(Stdlib_Printf[4],_abR_,cons); - return caml_call1(Stdlib[2],_aje_)} - return _abS_} - return _abT_} - return _abU_} - function type_aides_personnelle_logemen(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"AidePersonnaliseeLogement","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationLogementFamiliale","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"AllocationLogementSociale","payload":arg$1}}} - function type_aides_personnelle_logemen$0(type_aides_personnelle_logemen) - {var cons=caml_string_of_jsstring(type_aides_personnelle_logemen.kind); - if(caml_string_notequal(cons,cst_AidePersonnaliseeLogement)) - {if(caml_string_notequal(cons,cst_AllocationLogementFamilial$2)) - {if(caml_string_notequal(cons,cst_AllocationLogementSociale$2)) - {var _ajd_=caml_call2(Stdlib_Printf[4],_abV_,cons); - return caml_call1(Stdlib[2],_ajd_)} - return _abW_} - return _abX_} - return _abY_} - function situation_familiale_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg}; - case 1: - var arg$0=param[1],t163=caml_call1(Runtime_jsoo_Runtime[5],arg$0); - return {"kind":"Maries","payload":t163}; - case 2:var arg$1=param[1];return {"kind":"Pacses","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"Concubins","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"CelibataireSepareDeFait","payload":arg$3}; - default: - var arg$4=param[1]; - return {"kind":"ConcubinageDontSepareDeFait","payload":arg$4}}} - function situation_familiale_of_jsoo(situation_familiale) - {var cons=caml_string_of_jsstring(situation_familiale.kind); - if(caml_string_notequal(cons,cst_Celibataire)) - {if(caml_string_notequal(cons,cst_CelibataireSepareDeFait)) - {if(caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai)) - {if(caml_string_notequal(cons,cst_Concubins$0)) - {if(caml_string_notequal(cons,cst_Maries)) - {if(caml_string_notequal(cons,cst_Pacses)) - {var _ajc_=caml_call2(Stdlib_Printf[4],_abZ_,cons); - return caml_call1(Stdlib[2],_ajc_)} - return _ab0_} - return [1, - caml_call1 - (Runtime_jsoo_Runtime[4],situation_familiale.payload)]} - return _ab1_} - return _ab2_} - return _ab3_} - return _ab4_} - function prise_en_charge_to_jsoo$0(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ResidenceAlterneeAllocataireUnique","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"ResidenceAlterneeAllocationsPartagee", - "payload":arg$1}}} - function prise_en_charge_of_jsoo$0(prise_en_charge) - {var cons=caml_string_of_jsstring(prise_en_charge.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$3)) - {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai)) - {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio)) - {var _ajb_=caml_call2(Stdlib_Printf[4],_ab5_,cons); - return caml_call1(Stdlib[2],_ajb_)} - return _ab6_} - return _ab7_} - return _ab8_} - function type_logement_foyer_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"LogementPersonnesAgeesOuHandicapees","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ResidenceSociale","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind": - "FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995", - "payload":arg$1}; - default:var arg$2=param[1];return {"kind":"Autre","payload":arg$2}}} - function type_logement_foyer_of_jsoo(type_logement_foyer) - {var cons=caml_string_of_jsstring(type_logement_foyer.kind); - if(caml_string_notequal(cons,cst_Autre$4)) - {if(caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0)) - {if(caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa)) - {if(caml_string_notequal(cons,cst_ResidenceSociale)) - {var _aja_=caml_call2(Stdlib_Printf[4],_ab9_,cons); - return caml_call1(Stdlib[2],_aja_)} - return _ab__} - return _ab$_} - return _aca_} - return _acb_} - function categorie_equivalence_loyer_al(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"EtudiantLogeEnChambre","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"EtudiantLogeEnChambreRehabilitee","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"PersonnesAgeesSelon3DeD842_16","payload":arg$1}; - default: - var arg$2=param[1];return {"kind":"AutresPersonnes","payload":arg$2}}} - function categorie_equivalence_loyer_al$0(categorie_equivalence_loyer_al) - {var cons=caml_string_of_jsstring(categorie_equivalence_loyer_al.kind); - if(caml_string_notequal(cons,cst_AutresPersonnes$0)) - {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambre)) - {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreRehab)) - {if(caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842)) - {var _ai$_=caml_call2(Stdlib_Printf[4],_acc_,cons); - return caml_call1(Stdlib[2],_ai$_)} - return _acd_} - return _ace_} - return _acf_} - return _acg_} - function situation_familiale_calcul_a_p(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}} - var arg$0=param[1]; - return {"kind":"Couple","payload":arg$0}} - function situation_familiale_calcul_a_p$0(situation_familiale_calcul_a_p) - {var cons=caml_string_of_jsstring(situation_familiale_calcul_a_p.kind); - if(caml_string_notequal(cons,cst_Couple$0)) - {if(caml_string_notequal(cons,cst_PersonneSeule$0)) - {var _ai__=caml_call2(Stdlib_Printf[4],_ach_,cons); - return caml_call1(Stdlib[2],_ai__)} - return _aci_} - return _acj_} - function collectivite_to_jsoo$0(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; - case 2: - var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; - case 4: - var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; - case 5: - var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; - case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; - case 7: - var arg$6=param[1]; - return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; - default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} - function collectivite_of_jsoo$0(collectivite) - {var cons=caml_string_of_jsstring(collectivite.kind); - if(caml_string_notequal(cons,cst_Guadeloupe$2)) - {if(caml_string_notequal(cons,cst_Guyane$2)) - {if(caml_string_notequal(cons,cst_LaReunion$0)) - {if(caml_string_notequal(cons,cst_Martinique$2)) - {if(caml_string_notequal(cons,cst_Mayotte$2)) - {if(caml_string_notequal(cons,cst_Metropole$0)) - {if(caml_string_notequal(cons,cst_SaintBarthelemy$0)) - {if(caml_string_notequal(cons,cst_SaintMartin$2)) - {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2)) - {var _ai9_=caml_call2(Stdlib_Printf[4],_ack_,cons); - return caml_call1(Stdlib[2],_ai9_)} - return _acl_} - return _acm_} - return _acn_} - return _aco_} - return _acp_} - return _acq_} - return _acr_} - return _acs_} - return _act_} - function prise_en_charge_enfant_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"GardeAlterneePartageAllocations","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeALaFamille", - "payload":arg$2}; - default: - var arg$3=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", - "payload":arg$3}}} - function prise_en_charge_enfant_of_jsoo(prise_en_charge_enfant) - {var cons=caml_string_of_jsstring(prise_en_charge_enfant.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$4)) - {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0)) - {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6)) - {var _ai8_=caml_call2(Stdlib_Printf[4],_acu_,cons); - return caml_call1(Stdlib[2],_ai8_)} - return _acv_} - return _acw_} - return _acx_} - return _acy_} - return _acz_} - function situation_obligation_scolaire_$1(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} - function situation_obligation_scolaire_$2(situation_obligation_scolaire) - {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); - if(caml_string_notequal(cons,cst_Apres$0)) - {if(caml_string_notequal(cons,cst_Avant$2)) - {if(caml_string_notequal(cons,cst_Pendant$2)) - {var _ai7_=caml_call2(Stdlib_Printf[4],_acA_,cons); - return caml_call1(Stdlib[2],_ai7_)} - return _acB_} - return _acC_} - return _acD_} - function element_prestations_familiales$1(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"ComplementFamilial","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationLogement","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; - case 5: - var arg$4=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$4}; - case 6: - var arg$5=param[1]; - return {"kind":"AllocationRentreeScolaire","payload":arg$5}; - default: - var arg$6=param[1]; - return {"kind":"AllocationJournalierePresenceParentale", - "payload":arg$6}}} - function element_prestations_familiales$2(element_prestations_familiales) - {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); - if(caml_string_notequal(cons,cst_AllocationEducationEnfantH$0)) - {if(caml_string_notequal(cons,cst_AllocationJournalierePrese$0)) - {if(caml_string_notequal(cons,cst_AllocationLogement$2)) - {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$4)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$4)) - {if(caml_string_notequal(cons,cst_ComplementFamilial$1)) - {if - (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2)) - {var _ai6_=caml_call2(Stdlib_Printf[4],_acE_,cons); - return caml_call1(Stdlib[2],_ai6_)} - return _acF_} - return _acG_} - return _acH_} - return _acI_} - return _acJ_} - return _acK_} - return _acL_} - return _acM_} - function personne_sous_location_to_jsoo(personne_sous_location) - {var - t259=! ! personne_sous_location[2], - t258=caml_call1(Runtime_ocaml_Runtime[48],personne_sous_location[1]); - return {"agePersonneSousLocation":t258,"conformeArticleL4421":t259}} - function personne_sous_location_of_jsoo(personne_sous_location) - {var _ai5_=personne_sous_location.conformeArticleL4421 | 0; - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - personne_sous_location.agePersonneSousLocation), - _ai5_]} - function patrimoine_to_jsoo(patrimoine) - {var - t263=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[2]), - t262=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[1]); - return {"produisantRevenuPeriodeR82233R8224":t262, - "neProduisantPasRevenuPeriodeR82233R8224":t263}} - function patrimoine_of_jsoo(patrimoine) - {var - _ai2_= - caml_call1 - (Runtime_ocaml_Runtime[42], - patrimoine.neProduisantPasRevenuPeriodeR82233R8224), - _ai3_=caml_call1(Runtime_ocaml_Runtime[33],_ai2_), - _ai4_= - caml_call1 - (Runtime_ocaml_Runtime[42], - patrimoine.produisantRevenuPeriodeR82233R8224); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ai4_),_ai3_]} - function personne_vivant_habituellement(personne_vivant_habituellement) - {var - t267= - caml_call1 - (Runtime_ocaml_Runtime[35],personne_vivant_habituellement[2]), - t266=! ! personne_vivant_habituellement[1]; - return {"dureeResidenceDurantPeriodeR82231SuperieureA6Mois":t266, - "ressources":t267}} - function personne_vivant_habituellement$0(personne_vivant_habituellement) - {var - _ai0_= - caml_call1 - (Runtime_ocaml_Runtime[42],personne_vivant_habituellement.ressources), - _ai1_=caml_call1(Runtime_ocaml_Runtime[33],_ai0_); - return [0, - personne_vivant_habituellement.dureeResidenceDurantPeriodeR82231SuperieureA6Mois - | - 0, - _ai1_]} - function infos_changement_logement_d842(infos_changement_logement_d842) - {var - t271= - caml_call1 - (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[2]), - t270= - caml_call1 - (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[1]); - return {"ancienLoyerPrincipal":t270,"ancienneAllocationLogement":t271}} - function infos_changement_logement_d842$0(infos_changement_logement_d842) - {var - _aiX_= - caml_call1 - (Runtime_ocaml_Runtime[42], - infos_changement_logement_d842.ancienneAllocationLogement), - _aiY_=caml_call1(Runtime_ocaml_Runtime[33],_aiX_), - _aiZ_= - caml_call1 - (Runtime_ocaml_Runtime[42], - infos_changement_logement_d842.ancienLoyerPrincipal); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aiZ_),_aiY_]} - function bailleur_to_jsoo(bailleur) - {var - t278=! ! bailleur[5], - t277=! ! bailleur[4], - t276=! ! bailleur[3], - t275=! ! bailleur[2], - t274=type_bailleur_to_jsoo(bailleur[1]); - return {"typeBailleur":t274, - "respecteConventionTitreV":t275, - "respecteConventionTitreII":t276, - "construitAmelioreConditionsL83114":t277, - "acquisitionAidesEtatPretTitreIIOuLivreIII":t278}} - function bailleur_of_jsoo(bailleur) - {var - _aiT_=bailleur.acquisitionAidesEtatPretTitreIIOuLivreIII | 0, - _aiU_=bailleur.construitAmelioreConditionsL83114 | 0, - _aiV_=bailleur.respecteConventionTitreII | 0, - _aiW_=bailleur.respecteConventionTitreV | 0; - return [0, - type_bailleur_of_jsoo(bailleur.typeBailleur), - _aiW_, - _aiV_, - _aiU_, - _aiT_]} - function pret_to_jsoo(pret) - {var - t286=titulaire_pret_to_jsoo(pret[3]), - t285=caml_call1(Runtime_jsoo_Runtime[5],pret[2]), - t284=type_pret_to_jsoo(pret[1]); - return {"typePret":t284,"dateSignature":t285,"titulairePret":t286}} - function pret_of_jsoo(pret) - {var - _aiR_=titulaire_pret_of_jsoo(pret.titulairePret), - _aiS_=caml_call1(Runtime_jsoo_Runtime[4],pret.dateSignature); - return [0,type_pret_of_jsoo(pret.typePret),_aiS_,_aiR_]} - function neuf_ou_ancien_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Neuf","payload":arg}} - var arg$0=param[1],t293=ameliore_par_occupant_to_jsoo(arg$0); - return {"kind":"Ancien","payload":t293}} - function neuf_ou_ancien_of_jsoo(neuf_ou_ancien) - {var cons=caml_string_of_jsstring(neuf_ou_ancien.kind); - if(caml_string_notequal(cons,cst_Ancien$0)) - {if(caml_string_notequal(cons,cst_Neuf$0)) - {var _aiQ_=caml_call2(Stdlib_Printf[4],_acN_,cons); - return caml_call1(Stdlib[2],_aiQ_)} - return _acO_} - return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]} - function tranche_revenu_to_jsoo(tranche_revenu) - {var - t298=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]), - t297=caml_call1(Runtime_ocaml_Runtime[35],tranche_revenu[2]), - t296=limite_tranche_to_jsoo(tranche_revenu[1]); - return {"haut":t296,"bas":t297,"taux":t298}} - function tranche_revenu_of_jsoo(tranche_revenu) - {var - _aiN_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.taux), - _aiO_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.bas), - _aiP_=caml_call1(Runtime_ocaml_Runtime[33],_aiO_); - return [0,limite_tranche_of_jsoo(tranche_revenu.haut),_aiP_,_aiN_]} - function tranche_revenu_decimal_to_jsoo(tranche_revenu_decimal) - {var - t304=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[3]), - t303=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[2]), - t302=limite_tranche_decimal_to_jsoo(tranche_revenu_decimal[1]); - return {"haut":t302,"bas":t303,"taux":t304}} - function tranche_revenu_decimal_of_jsoo(tranche_revenu_decimal) - {var - _aiL_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.taux), - _aiM_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.bas); - return [0, - limite_tranche_decimal_of_jsoo(tranche_revenu_decimal.haut), - _aiM_, - _aiL_]} - function autre_personne_a_charge_to_jso(autre_personne_a_charge) - {var - t314=! ! autre_personne_a_charge[7], - t313=! ! autre_personne_a_charge[6], - t312=! ! autre_personne_a_charge[5], - t311=parente_to_jsoo(autre_personne_a_charge[4]), - t310=! ! autre_personne_a_charge[3], - t309=caml_call1(Runtime_ocaml_Runtime[35],autre_personne_a_charge[2]), - t308=caml_call1(Runtime_jsoo_Runtime[5],autre_personne_a_charge[1]); - return {"dateNaissance":t308, - "ressources":t309, - "ascendantDescendantCollateralDeuxiemeTroisiemeDegre":t310, - "parente":t311, - "incapacite80PourcentOuRestrictionEmploi":t312, - "beneficiaireL16119L3518L6433Secu":t313, - "titulaireAllocationPersonneAgee":t314}} - function autre_personne_a_charge_of_jso(autre_personne_a_charge) - {var - _aiE_=autre_personne_a_charge.titulaireAllocationPersonneAgee | 0, - _aiF_=autre_personne_a_charge.beneficiaireL16119L3518L6433Secu | 0, - _aiG_= - autre_personne_a_charge.incapacite80PourcentOuRestrictionEmploi - | - 0, - _aiH_=parente_of_jsoo(autre_personne_a_charge.parente), - _aiI_= - autre_personne_a_charge.ascendantDescendantCollateralDeuxiemeTroisiemeDegre - | - 0, - _aiJ_= - caml_call1 - (Runtime_ocaml_Runtime[42],autre_personne_a_charge.ressources), - _aiK_=caml_call1(Runtime_ocaml_Runtime[33],_aiJ_); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4],autre_personne_a_charge.dateNaissance), - _aiK_, - _aiI_, - _aiH_, - _aiG_, - _aiF_, - _aiE_]} - function date_naissance_troisieme_ou_de(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"MoinsDeTroisEnfants","payload":arg}} - var arg$0=param[1],t325=date_de_naissance_ou_mois_de_g(arg$0); - return {"kind":"PlusDeTroisEnfants","payload":t325}} - function date_naissance_troisieme_ou_de$0(date_naissance_troisieme_ou_de) - {var cons=caml_string_of_jsstring(date_naissance_troisieme_ou_de.kind); - if(caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0)) - {if(caml_string_notequal(cons,cst_PlusDeTroisEnfants$0)) - {var _aiD_=caml_call2(Stdlib_Printf[4],_acP_,cons); - return caml_call1(Stdlib[2],_aiD_)} - return [1, - date_de_naissance_ou_mois_de_g$0 - (date_naissance_troisieme_ou_de.payload)]} - return _acQ_} - function informations_calcul_a_p_l_loge(informations_calcul_a_p_l_loge) - {var - t329=categorie_equivalence_loyer_al(informations_calcul_a_p_l_loge[2]), - t328= - caml_call1 - (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loge[1]); - return {"redevance":t328,"categorieEquivalenceLoyerD84216":t329}} - function informations_calcul_a_p_l_loge$0(informations_calcul_a_p_l_loge) - {var - _aiB_= - categorie_equivalence_loyer_al$0 - (informations_calcul_a_p_l_loge.categorieEquivalenceLoyerD84216), - _aiC_= - caml_call1 - (Runtime_ocaml_Runtime[42],informations_calcul_a_p_l_loge.redevance); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aiC_),_aiB_]} - function enfant_prestations_familiales_(enfant_prestations_familiales) - {var - t339=! ! enfant_prestations_familiales[8], - t338=! ! enfant_prestations_familiales[7], - t337=prise_en_charge_enfant_to_jsoo(enfant_prestations_familiales[6]), - t336= - caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[5]), - t335= - caml_call1(Runtime_jsoo_Runtime[5],enfant_prestations_familiales[4]), - t334= - caml_call1(Runtime_ocaml_Runtime[35],enfant_prestations_familiales[3]), - t333=situation_obligation_scolaire_$1(enfant_prestations_familiales[2]), - t332= - caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[1]); - return {"identifiant":t332, - "obligationScolaire":t333, - "remunerationMensuelle":t334, - "dateDeNaissance":t335, - "age":t336, - "priseEnCharge":t337, - "aDejaOuvertDroitAuxAllocationsFamiliales":t338, - "beneficieTitrePersonnelAidePersonnelleLogement":t339}} - function enfant_prestations_familiales_$0(enfant_prestations_familiales) - {var - _ait_= - enfant_prestations_familiales.beneficieTitrePersonnelAidePersonnelleLogement - | - 0, - _aiu_= - enfant_prestations_familiales.aDejaOuvertDroitAuxAllocationsFamiliales - | - 0, - _aiv_= - prise_en_charge_enfant_of_jsoo - (enfant_prestations_familiales.priseEnCharge), - _aiw_= - caml_call1 - (Runtime_ocaml_Runtime[49],enfant_prestations_familiales.age), - _aix_= - caml_call1 - (Runtime_jsoo_Runtime[4], - enfant_prestations_familiales.dateDeNaissance), - _aiy_= - caml_call1 - (Runtime_ocaml_Runtime[42], - enfant_prestations_familiales.remunerationMensuelle), - _aiz_=caml_call1(Runtime_ocaml_Runtime[33],_aiy_), - _aiA_= - situation_obligation_scolaire_$2 - (enfant_prestations_familiales.obligationScolaire); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - enfant_prestations_familiales.identifiant), - _aiA_, - _aiz_, - _aix_, - _aiw_, - _aiv_, - _aiu_, - _ait_]} - function enfant_a_charge_to_jsoo(enfant_a_charge) - {var - t356=situation_garde_alternee_to_js(enfant_a_charge[9]), - t355=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[8]), - t354=prise_en_charge_to_jsoo$0(enfant_a_charge[7]), - t353=situation_obligation_scolaire_$1(enfant_a_charge[6]), - t352=caml_call1(Runtime_ocaml_Runtime[35],enfant_a_charge[5]), - t351=caml_call1(Runtime_jsoo_Runtime[5],enfant_a_charge[4]), - t350=! ! enfant_a_charge[3], - t349=! ! enfant_a_charge[2], - t348=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[1]); - return {"identifiant":t348, - "beneficieTitrePersonnelAidePersonnelleLogement":t349, - "aDejaOuvertDroitAuxAllocationsFamiliales":t350, - "dateDeNaissance":t351, - "remunerationMensuelle":t352, - "obligationScolaire":t353, - "priseEnCharge":t354, - "age":t355, - "situationGardeAlternee":t356}} - function enfant_a_charge_of_jsoo(enfant_a_charge) - {var - _aik_= - situation_garde_alternee_of_js(enfant_a_charge.situationGardeAlternee), - _ail_=caml_call1(Runtime_ocaml_Runtime[49],enfant_a_charge.age), - _aim_=prise_en_charge_of_jsoo$0(enfant_a_charge.priseEnCharge), - _ain_= - situation_obligation_scolaire_$2(enfant_a_charge.obligationScolaire), - _aio_= - caml_call1 - (Runtime_ocaml_Runtime[42],enfant_a_charge.remunerationMensuelle), - _aip_=caml_call1(Runtime_ocaml_Runtime[33],_aio_), - _aiq_= - caml_call1(Runtime_jsoo_Runtime[4],enfant_a_charge.dateDeNaissance), - _air_=enfant_a_charge.aDejaOuvertDroitAuxAllocationsFamiliales | 0, - _ais_= - enfant_a_charge.beneficieTitrePersonnelAidePersonnelleLogement - | - 0; - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49],enfant_a_charge.identifiant), - _ais_, - _air_, - _aiq_, - _aip_, - _ain_, - _aim_, - _ail_, - _aik_]} - function loue_ou_sous_loue_a_des_tiers_(param) - {if(0 === param[0]){var arg=param[1];return {"kind":"Non","payload":arg}} - var arg$0=param[1],t369=personne_sous_location_to_jsoo(arg$0); - return {"kind":"Oui","payload":t369}} - function loue_ou_sous_loue_a_des_tiers_$0(loue_ou_sous_loue_a_des_tiers) - {var cons=caml_string_of_jsstring(loue_ou_sous_loue_a_des_tiers.kind); - if(caml_string_notequal(cons,cst_Non$4)) - {if(caml_string_notequal(cons,cst_Oui$2)) - {var _aij_=caml_call2(Stdlib_Printf[4],_acR_,cons); - return caml_call1(Stdlib[2],_aij_)} - return [1, - personne_sous_location_of_jsoo - (loue_ou_sous_loue_a_des_tiers.payload)]} - return _acS_} - function demandeur_to_jsoo(demandeur) - {var - t378=! ! demandeur[7], - t377=patrimoine_to_jsoo(demandeur[6]), - t376=nationalite_to_jsoo(demandeur[5]), - t375=type_contrat_travail_to_jsoo(demandeur[4]), - t374=caml_call1(Runtime_jsoo_Runtime[5],demandeur[3]), - t373=caml_call1(Runtime_ocaml_Runtime[48],demandeur[2]), - t372=! ! demandeur[1]; - return {"satisfaitConditionsL5122CodeSecuriteSociale":t372, - "ageDemandeur":t373, - "dateNaissance":t374, - "contratDeTravail":t375, - "nationalite":t376, - "patrimoine":t377, - "personneHebergeeCentreSoinLL162223SecuriteSociale":t378}} - function demandeur_of_jsoo(demandeur) - {var - _aid_=demandeur.personneHebergeeCentreSoinLL162223SecuriteSociale | 0, - _aie_=patrimoine_of_jsoo(demandeur.patrimoine), - _aif_=nationalite_of_jsoo(demandeur.nationalite), - _aig_=type_contrat_travail_of_jsoo(demandeur.contratDeTravail), - _aih_=caml_call1(Runtime_jsoo_Runtime[4],demandeur.dateNaissance), - _aii_=caml_call1(Runtime_ocaml_Runtime[49],demandeur.ageDemandeur); - return [0, - demandeur.satisfaitConditionsL5122CodeSecuriteSociale | 0, - _aii_, - _aih_, - _aig_, - _aif_, - _aie_, - _aid_]} - function changement_logement_d842_4_to_(param) - {if(0 === param[0]) - {var arg=param[1],t387=infos_changement_logement_d842(arg); - return {"kind":"Changement","payload":t387}} - var arg$0=param[1]; - return {"kind":"PasDeChangement","payload":arg$0}} - function changement_logement_d842_4_of_(changement_logement_d842_4) - {var cons=caml_string_of_jsstring(changement_logement_d842_4.kind); - if(caml_string_notequal(cons,cst_Changement$0)) - {if(caml_string_notequal(cons,cst_PasDeChangement$0)) - {var _aic_=caml_call2(Stdlib_Printf[4],_acT_,cons); - return caml_call1(Stdlib[2],_aic_)} - return _acU_} - return [0, - infos_changement_logement_d842$0 - (changement_logement_d842_4.payload)]} - function location_to_jsoo(location) - {var t392=bailleur_to_jsoo(location[1]);return {"bailleur":t392}} - function location_of_jsoo(location) - {return [0,bailleur_of_jsoo(location.bailleur)]} - function proprietaire_to_jsoo(proprietaire) - {var t394=pret_to_jsoo(proprietaire[1]);return {"pret":t394}} - function proprietaire_of_jsoo(proprietaire) - {return [0,pret_of_jsoo(proprietaire.pret)]} - function informations_calcul_a_p_l_acce(informations_calcul_a_p_l_acce) - {var - t406=neuf_ou_ancien_to_jsoo(informations_calcul_a_p_l_acce[11]), - t405=type_pret_to_jsoo(informations_calcul_a_p_l_acce[10]), - t404=! ! informations_calcul_a_p_l_acce[9], - t403=! ! informations_calcul_a_p_l_acce[8], - t402=! ! informations_calcul_a_p_l_acce[7], - t401=type_travaux_logement_r842_5_t(informations_calcul_a_p_l_acce[6]), - t400=type_travaux_logement_d832_15_(informations_calcul_a_p_l_acce[5]), - t399= - caml_call1(Runtime_jsoo_Runtime[5],informations_calcul_a_p_l_acce[4]), - t398= - caml_call1(Runtime_jsoo_Runtime[5],informations_calcul_a_p_l_acce[3]), - t397= - caml_call1 - (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_acce[2]), - t396= - caml_call1 - (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_acce[1]); - return {"mensualitePrincipale":t396, - "chargesMensuellesPret":t397, - "dateSignaturePret":t398, - "dateEntreeLogement":t399, - "typeTravauxLogementD83215":t400, - "typeTravauxLogementR8425":t401, - "localHabitePremiereFoisBeneficiaire":t402, - "copropriete":t403, - "situationR822111317":t404, - "typePret":t405, - "ancienneteLogement":t406}} - function informations_calcul_a_p_l_acce$0(informations_calcul_a_p_l_acce) - {var - _ah2_= - neuf_ou_ancien_of_jsoo - (informations_calcul_a_p_l_acce.ancienneteLogement), - _ah3_=type_pret_of_jsoo(informations_calcul_a_p_l_acce.typePret), - _ah4_=informations_calcul_a_p_l_acce.situationR822111317 | 0, - _ah5_=informations_calcul_a_p_l_acce.copropriete | 0, - _ah6_= - informations_calcul_a_p_l_acce.localHabitePremiereFoisBeneficiaire - | - 0, - _ah7_= - type_travaux_logement_r842_5_o - (informations_calcul_a_p_l_acce.typeTravauxLogementR8425), - _ah8_= - type_travaux_logement_d832_15_$0 - (informations_calcul_a_p_l_acce.typeTravauxLogementD83215), - _ah9_= - caml_call1 - (Runtime_jsoo_Runtime[4], - informations_calcul_a_p_l_acce.dateEntreeLogement), - _ah__= - caml_call1 - (Runtime_jsoo_Runtime[4], - informations_calcul_a_p_l_acce.dateSignaturePret), - _ah$_= - caml_call1 - (Runtime_ocaml_Runtime[42], - informations_calcul_a_p_l_acce.chargesMensuellesPret), - _aia_=caml_call1(Runtime_ocaml_Runtime[33],_ah$_), - _aib_= - caml_call1 - (Runtime_ocaml_Runtime[42], - informations_calcul_a_p_l_acce.mensualitePrincipale); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_aib_), - _aia_, - _ah__, - _ah9_, - _ah8_, - _ah7_, - _ah6_, - _ah5_, - _ah4_, - _ah3_, - _ah2_]} - function personne_a_charge_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t419=enfant_a_charge_to_jsoo(arg); - return {"kind":"EnfantACharge","payload":t419}} - var arg$0=param[1],t421=autre_personne_a_charge_to_jso(arg$0); - return {"kind":"AutrePersonneACharge","payload":t421}} - function personne_a_charge_of_jsoo(personne_a_charge) - {var cons=caml_string_of_jsstring(personne_a_charge.kind); - if(caml_string_notequal(cons,cst_AutrePersonneACharge)) - {if(caml_string_notequal(cons,cst_EnfantACharge)) - {var _ah1_=caml_call2(Stdlib_Printf[4],_acV_,cons); - return caml_call1(Stdlib[2],_ah1_)} - return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]} - return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]} - function informations_calcul_a_p_l_loca(informations_calcul_a_p_l_loca) - {var - t432=changement_logement_d842_4_to_(informations_calcul_a_p_l_loca[8]), - t431=! ! informations_calcul_a_p_l_loca[7], - t430= - caml_call1 - (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loca[6]), - t429=! ! informations_calcul_a_p_l_loca[5], - t428=! ! informations_calcul_a_p_l_loca[4], - t427=! ! informations_calcul_a_p_l_loca[3], - t426=! ! informations_calcul_a_p_l_loca[2], - t425= - caml_call1 - (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loca[1]); - return {"loyerPrincipal":t425, - "beneficiaireAideAdulteOuEnfantHandicapes":t426, - "logementEstChambre":t427, - "colocation":t428, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliers":t429, - "reductionLoyerSolidarite":t430, - "logementMeubleD8422":t431, - "changementLogementD8424":t432}} - function informations_calcul_a_p_l_loca$0(informations_calcul_a_p_l_loca) - {var - _ahS_= - changement_logement_d842_4_of_ - (informations_calcul_a_p_l_loca.changementLogementD8424), - _ahT_=informations_calcul_a_p_l_loca.logementMeubleD8422 | 0, - _ahU_= - caml_call1 - (Runtime_ocaml_Runtime[42], - informations_calcul_a_p_l_loca.reductionLoyerSolidarite), - _ahV_=caml_call1(Runtime_ocaml_Runtime[33],_ahU_), - _ahW_= - informations_calcul_a_p_l_loca.ageesOuHandicapAdultesHebergeesOnereuxParticuliers - | - 0, - _ahX_=informations_calcul_a_p_l_loca.colocation | 0, - _ahY_=informations_calcul_a_p_l_loca.logementEstChambre | 0, - _ahZ_= - informations_calcul_a_p_l_loca.beneficiaireAideAdulteOuEnfantHandicapes - | - 0, - _ah0_= - caml_call1 - (Runtime_ocaml_Runtime[42], - informations_calcul_a_p_l_loca.loyerPrincipal); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_ah0_), - _ahZ_, - _ahY_, - _ahX_, - _ahW_, - _ahV_, - _ahT_, - _ahS_]} - function logement_foyer_to_jsoo(logement_foyer) - {var - t445=! ! logement_foyer[5], - t444=! ! logement_foyer[4], - t443=location_to_jsoo(logement_foyer[3]), - t442=caml_call1(Runtime_jsoo_Runtime[5],logement_foyer[2]), - t441=type_logement_foyer_to_jsoo(logement_foyer[1]); - return {"typeUser":t441, - "dateConventionnement":t442, - "location":t443, - "remplitConditionsR83221":t444, - "construitApplicationLoi195712III":t445}} - function logement_foyer_of_jsoo(logement_foyer) - {var - _ahO_=logement_foyer.construitApplicationLoi195712III | 0, - _ahP_=logement_foyer.remplitConditionsR83221 | 0, - _ahQ_=location_of_jsoo(logement_foyer.location), - _ahR_= - caml_call1 - (Runtime_jsoo_Runtime[4],logement_foyer.dateConventionnement); - return [0, - type_logement_foyer_of_jsoo(logement_foyer.typeUser), - _ahR_, - _ahQ_, - _ahP_, - _ahO_]} - function informations_calcul_a_p_l_to_j(param) - {switch(param[0]) - {case 0: - var arg=param[1],t452=informations_calcul_a_p_l_loca(arg); - return {"kind":"InfosLocatif","payload":t452}; - case 1: - var arg$0=param[1],t454=informations_calcul_a_p_l_loge(arg$0); - return {"kind":"InfosLogementFoyer","payload":t454}; - default: - var arg$1=param[1],t456=informations_calcul_a_p_l_acce(arg$1); - return {"kind":"InfosAccessionPropriete","payload":t456}}} - function informations_calcul_a_p_l_of_j(informations_calcul_a_p_l) - {var cons=caml_string_of_jsstring(informations_calcul_a_p_l.kind); - if(caml_string_notequal(cons,cst_InfosAccessionPropriete)) - {if(caml_string_notequal(cons,cst_InfosLocatif$0)) - {if(caml_string_notequal(cons,cst_InfosLogementFoyer$0)) - {var _ahN_=caml_call2(Stdlib_Printf[4],_acW_,cons); - return caml_call1(Stdlib[2],_ahN_)} - return [1, - informations_calcul_a_p_l_loge$0 - (informations_calcul_a_p_l.payload)]} - return [0, - informations_calcul_a_p_l_loca$0 - (informations_calcul_a_p_l.payload)]} - return [2, - informations_calcul_a_p_l_acce$0 - (informations_calcul_a_p_l.payload)]} - function mode_occupation_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t462=location_to_jsoo(arg); - return {"kind":"Locataire","payload":t462}; - case 1: - var arg$0=param[1],t464=logement_foyer_to_jsoo(arg$0); - return {"kind":"ResidentLogementFoyer","payload":t464}; - case 2: - var arg$1=param[1],t466=proprietaire_to_jsoo(arg$1); - return {"kind":"AccessionProprieteLocalUsageExclusifHabitation", - "payload":t466}; - case 3: - var arg$2=param[1],t468=location_to_jsoo(arg$2); - return {"kind":"SousLocataire","payload":t468}; - default: - var arg$3=param[1],t470=proprietaire_to_jsoo(arg$3); - return {"kind":"LocationAccession","payload":t470}}} - function mode_occupation_of_jsoo(mode_occupation) - {var cons=caml_string_of_jsstring(mode_occupation.kind); - if(caml_string_notequal(cons,cst_AccessionProprieteLocalUsa)) - {if(caml_string_notequal(cons,cst_Locataire$0)) - {if(caml_string_notequal(cons,cst_LocationAccession$0)) - {if(caml_string_notequal(cons,cst_ResidentLogementFoyer)) - {if(caml_string_notequal(cons,cst_SousLocataire$0)) - {var _ahM_=caml_call2(Stdlib_Printf[4],_acX_,cons); - return caml_call1(Stdlib[2],_ahM_)} - return [3,location_of_jsoo(mode_occupation.payload)]} - return [1,logement_foyer_of_jsoo(mode_occupation.payload)]} - return [4,proprietaire_of_jsoo(mode_occupation.payload)]} - return [0,location_of_jsoo(mode_occupation.payload)]} - return [2,proprietaire_of_jsoo(mode_occupation.payload)]} - function logement_to_jsoo(logement) - {var - t487=zone_d_habitation_to_jsoo(logement[11]), - t486=! ! logement[10], - t485=! ! logement[9], - t484=caml_call1(Runtime_ocaml_Runtime[48],logement[8]), - t483=! ! logement[7], - t482=parent_ou_autre_to_jsoo(logement[6]), - t481=loue_ou_sous_loue_a_des_tiers_(logement[5]), - t480=parent_ou_autre_to_jsoo(logement[4]), - t479=mode_occupation_to_jsoo(logement[3]), - t478=! ! logement[2], - t477=! ! logement[1]; - return {"residencePrincipale":t477, - "estEhpadOuMaisonAutonomieL31312Asf":t478, - "modeOccupation":t479, - "proprietaire":t480, - "loueOuSousLoueADesTiers":t481, - "usufruit":t482, - "logementDecentL89462":t483, - "surfaceMCarres":t484, - "estAncienL8312":t485, - "situeCommuneDesequilibreL8312":t486, - "zone":t487}} - function logement_of_jsoo(logement) - {var - _ahD_=zone_d_habitation_of_jsoo(logement.zone), - _ahE_=logement.situeCommuneDesequilibreL8312 | 0, - _ahF_=logement.estAncienL8312 | 0, - _ahG_=caml_call1(Runtime_ocaml_Runtime[49],logement.surfaceMCarres), - _ahH_=logement.logementDecentL89462 | 0, - _ahI_=parent_ou_autre_of_jsoo(logement.usufruit), - _ahJ_= - loue_ou_sous_loue_a_des_tiers_$0(logement.loueOuSousLoueADesTiers), - _ahK_=parent_ou_autre_of_jsoo(logement.proprietaire), - _ahL_=mode_occupation_of_jsoo(logement.modeOccupation); - return [0, - logement.residencePrincipale | 0, - logement.estEhpadOuMaisonAutonomieL31312Asf | 0, - _ahL_, - _ahK_, - _ahJ_, - _ahI_, - _ahH_, - _ahG_, - _ahF_, - _ahE_, - _ahD_]} - function menage_to_jsoo(menage) - {var - t507=date_naissance_troisieme_ou_de(menage[9]), - t506=! ! menage[8], - t505=caml_call1(Runtime_ocaml_Runtime[48],menage[7]), - t504=! ! menage[6], - t503=situation_familiale_to_jsoo(menage[5]), - t502=caml_call1(Runtime_ocaml_Runtime[48],menage[4]), - _ahz_=menage[3]; - function _ahA_(x){return personne_a_charge_to_jsoo(x)} - var - t501=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahA_,_ahz_)), - t500=logement_to_jsoo(menage[2]), - _ahB_=menage[1]; - function _ahC_(x){return prestation_recue_to_jsoo(x)} - var t499=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahC_,_ahB_)); - return {"prestationsRecues":t499, - "logement":t500, - "personnesACharge":t501, - "nombreAutresOccupantsLogement":t502, - "situationFamiliale":t503, - "conditionRattacheFoyerFiscalParentIfi":t504, - "nombreEnfantsANaitreApresTroisiemeMoisGrossesse":t505, - "enfantANaitreApresQuatriemeMoisGrossesse":t506, - "dateNaissanceTroisiemeEnfantOuDernierSiPlus":t507}} - function menage_of_jsoo(menage) - {var - _ahn_= - date_naissance_troisieme_ou_de$0 - (menage.dateNaissanceTroisiemeEnfantOuDernierSiPlus), - _aho_=menage.enfantANaitreApresQuatriemeMoisGrossesse | 0, - _ahp_= - caml_call1 - (Runtime_ocaml_Runtime[49], - menage.nombreEnfantsANaitreApresTroisiemeMoisGrossesse), - _ahq_=menage.conditionRattacheFoyerFiscalParentIfi | 0, - _ahr_=situation_familiale_of_jsoo(menage.situationFamiliale), - _ahs_= - caml_call1 - (Runtime_ocaml_Runtime[49],menage.nombreAutresOccupantsLogement), - _aht_=caml_js_to_array(menage.personnesACharge); - function _ahu_(x){return personne_a_charge_of_jsoo(x)} - var - _ahv_=caml_call1(caml_call1(Stdlib_Array[15],_ahu_),_aht_), - _ahw_=logement_of_jsoo(menage.logement), - _ahx_=caml_js_to_array(menage.prestationsRecues); - function _ahy_(x){return prestation_recue_of_jsoo(x)} - return [0, - caml_call1(caml_call1(Stdlib_Array[15],_ahy_),_ahx_), - _ahw_, - _ahv_, - _ahs_, - _ahr_, - _ahq_, - _ahp_, - _aho_, - _ahn_]} - function eligibilite_aides_personnelle_$0(eligibilite_aides_personnelle_) - {function t521(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _ahm_=personne_a_charge_of_jsoo(input); - return ! - ! - caml_call1(eligibilite_aides_personnelle_[5],_ahm_)})} - var _ahk_=eligibilite_aides_personnelle_[4]; - function _ahl_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t520=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahl_,_ahk_)), - t519= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_aides_personnelle_[3]), - t518=! ! eligibilite_aides_personnelle_[2], - t517= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[1]); - return {"dateCouranteOut":t517, - "eligibiliteOut":t518, - "nombrePersonnesAChargePrisesEnCompteOut":t519, - "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t520, - "condition2R8234Out":caml_js_wrap_meth_callback(t521)}} - function eligibilite_aides_personnelle_$1(eligibilite_aides_personnelle_) - {var - _ahe_=caml_call1(Stdlib[2],cst_The_function_condition_2_r), - _ahf_= - caml_js_to_array - (eligibilite_aides_personnelle_.coefficentsEnfantsGardeAlterneePrisEnCompteOut); - function _ahg_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _ahh_=caml_call1(caml_call1(Stdlib_Array[15],_ahg_),_ahf_), - _ahi_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_aides_personnelle_.nombrePersonnesAChargePrisesEnCompteOut), - _ahj_=eligibilite_aides_personnelle_.eligibiliteOut | 0; - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aides_personnelle_.dateCouranteOut), - _ahj_, - _ahi_, - _ahh_, - _ahe_]} - function eligibilite_aides_personnelle_$2(eligibilite_aides_personnelle_) - {function t530(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(eligibilite_aides_personnelle_[5],input)})} - function t529(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(eligibilite_aides_personnelle_[4],input)})} - var - t528= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[3]), - t527=demandeur_to_jsoo(eligibilite_aides_personnelle_[2]), - t526=menage_to_jsoo(eligibilite_aides_personnelle_[1]); - return {"menageIn":t526, - "demandeurIn":t527, - "dateCouranteIn":t528, - "conditionLogementResidencePrincipaleIn": - caml_js_wrap_meth_callback(t529), - "conditionLogementSurfaceIn":caml_js_wrap_meth_callback(t530)}} - function eligibilite_aides_personnelle_$3(eligibilite_aides_personnelle_) - {var - _aha_=caml_call1(Stdlib[2],cst_The_function_condition_log), - _ahb_=caml_call1(Stdlib[2],cst_The_function_condition_log$0), - _ahc_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aides_personnelle_.dateCouranteIn), - _ahd_=demandeur_of_jsoo(eligibilite_aides_personnelle_.demandeurIn); - return [0, - menage_of_jsoo(eligibilite_aides_personnelle_.menageIn), - _ahd_, - _ahc_, - _ahb_, - _aha_]} - function eligibilite_aide_personnalisee$0(eligibilite_aide_personnalisee) - {var _ag__=eligibilite_aide_personnalisee[4]; - function _ag$_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t537=caml_js_from_array(caml_call2(Stdlib_Array[15],_ag$_,_ag__)), - t536= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_aide_personnalisee[3]), - t535=! ! eligibilite_aide_personnalisee[2], - t534= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[1]); - return {"dateCouranteOut":t534, - "eligibiliteOut":t535, - "nombrePersonnesAChargePrisesEnCompteOut":t536, - "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t537}} - function eligibilite_aide_personnalisee$1(eligibilite_aide_personnalisee) - {var - _ag5_= - caml_js_to_array - (eligibilite_aide_personnalisee.coefficentsEnfantsGardeAlterneePrisEnCompteOut); - function _ag6_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _ag7_=caml_call1(caml_call1(Stdlib_Array[15],_ag6_),_ag5_), - _ag8_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_aide_personnalisee.nombrePersonnesAChargePrisesEnCompteOut), - _ag9_=eligibilite_aide_personnalisee.eligibiliteOut | 0; - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aide_personnalisee.dateCouranteOut), - _ag9_, - _ag8_, - _ag7_]} - function eligibilite_aide_personnalisee$2(eligibilite_aide_personnalisee) - {var - t544= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[3]), - t543=demandeur_to_jsoo(eligibilite_aide_personnalisee[2]), - t542=menage_to_jsoo(eligibilite_aide_personnalisee[1]); - return {"menageIn":t542,"demandeurIn":t543,"dateCouranteIn":t544}} - function eligibilite_aide_personnalisee$3(eligibilite_aide_personnalisee) - {var - _ag3_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aide_personnalisee.dateCouranteIn), - _ag4_=demandeur_of_jsoo(eligibilite_aide_personnalisee.demandeurIn); - return [0, - menage_of_jsoo(eligibilite_aide_personnalisee.menageIn), - _ag4_, - _ag3_]} - function eligibilite_allocation_logemen$2(eligibilite_allocation_logemen) - {var _ag1_=eligibilite_allocation_logemen[3]; - function _ag2_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t550=caml_js_from_array(caml_call2(Stdlib_Array[15],_ag2_,_ag1_)), - t549= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_allocation_logemen[2]), - t548= - eligibilite_allocation_logemen$0(eligibilite_allocation_logemen[1]); - return {"eligibiliteAvecConditionLogementOut":t548, - "nombrePersonnesAChargePrisesEnCompteOut":t549, - "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t550}} - function eligibilite_allocation_logemen$3(eligibilite_allocation_logemen) - {var - _agX_= - caml_js_to_array - (eligibilite_allocation_logemen.coefficentsEnfantsGardeAlterneePrisEnCompteOut); - function _agY_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _agZ_=caml_call1(caml_call1(Stdlib_Array[15],_agY_),_agX_), - _ag0_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_allocation_logemen.nombrePersonnesAChargePrisesEnCompteOut); - return [0, - eligibilite_allocation_logemen$1 - (eligibilite_allocation_logemen.eligibiliteAvecConditionLogementOut), - _ag0_, - _agZ_]} - function eligibilite_allocation_logemen$4(eligibilite_allocation_logemen) - {var - t558=informations_calcul_a_p_l_to_j(eligibilite_allocation_logemen[5]), - t557=! ! eligibilite_allocation_logemen[4], - t556=demandeur_to_jsoo(eligibilite_allocation_logemen[3]), - t555=menage_to_jsoo(eligibilite_allocation_logemen[2]), - t554= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_allocation_logemen[1]); - return {"dateCouranteIn":t554, - "menageIn":t555, - "demandeurIn":t556, - "beneficieAidePersonnaliseeLogementIn":t557, - "informationsCalculIn":t558}} - function eligibilite_allocation_logemen$5(eligibilite_allocation_logemen) - {var - _agT_= - informations_calcul_a_p_l_of_j - (eligibilite_allocation_logemen.informationsCalculIn), - _agU_= - eligibilite_allocation_logemen.beneficieAidePersonnaliseeLogementIn - | - 0, - _agV_=demandeur_of_jsoo(eligibilite_allocation_logemen.demandeurIn), - _agW_=menage_of_jsoo(eligibilite_allocation_logemen.menageIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_allocation_logemen.dateCouranteIn), - _agW_, - _agV_, - _agU_, - _agT_]} - function eligibilite_prime_de_demenagem$0(eligibilite_prime_de_demenagem) - {var - t564= - caml_call1 - (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[1]); - return {"montantPrimeDemenagementOut":t564}} - function eligibilite_prime_de_demenagem$1(eligibilite_prime_de_demenagem) - {var - _agS_= - caml_call1 - (Runtime_ocaml_Runtime[42], - eligibilite_prime_de_demenagem.montantPrimeDemenagementOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_agS_)]} - function eligibilite_prime_de_demenagem$2(eligibilite_prime_de_demenagem) - {var - t570= - caml_call1 - (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[5]), - t569= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[4]), - t568=demandeur_to_jsoo(eligibilite_prime_de_demenagem[3]), - t567=menage_to_jsoo(eligibilite_prime_de_demenagem[2]), - t566= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[1]); - return {"dateEmmenagementIn":t566, - "menageIn":t567, - "demandeurIn":t568, - "dateCouranteIn":t569, - "depensesJustifieesReellementEngageesIn":t570}} - function eligibilite_prime_de_demenagem$3(eligibilite_prime_de_demenagem) - {var - _agN_= - caml_call1 - (Runtime_ocaml_Runtime[42], - eligibilite_prime_de_demenagem.depensesJustifieesReellementEngageesIn), - _agO_=caml_call1(Runtime_ocaml_Runtime[33],_agN_), - _agP_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prime_de_demenagem.dateCouranteIn), - _agQ_=demandeur_of_jsoo(eligibilite_prime_de_demenagem.demandeurIn), - _agR_=menage_of_jsoo(eligibilite_prime_de_demenagem.menageIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prime_de_demenagem.dateEmmenagementIn), - _agR_, - _agQ_, - _agP_, - _agO_]} - function ressources_aides_personnelle_l$0(ressources_aides_personnelle_l) - {var - t576= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); - return {"ressourcesPrisesEnCompteOut":t576}} - function ressources_aides_personnelle_l$1(ressources_aides_personnelle_l) - {var - _agM_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesPrisesEnCompteOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_agM_)]} - function ressources_aides_personnelle_l$2(ressources_aides_personnelle_l) - {var - t590= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[13]), - t589=paiement_logement_distinct_pro(ressources_aides_personnelle_l[12]), - t588= - caml_call1(Runtime_jsoo_Runtime[5],ressources_aides_personnelle_l[11]), - t587=! ! ressources_aides_personnelle_l[10], - t586=! ! ressources_aides_personnelle_l[9], - t585=mode_occupation_to_jsoo(ressources_aides_personnelle_l[8]), - t584=situation_familiale_to_jsoo(ressources_aides_personnelle_l[7]), - _agI_=ressources_aides_personnelle_l[6]; - function _agJ_(x){return personne_a_charge_to_jsoo(x)} - var - t583=caml_js_from_array(caml_call2(Stdlib_Array[15],_agJ_,_agI_)), - t582=! ! ressources_aides_personnelle_l[5], - t581=! ! ressources_aides_personnelle_l[4], - _agK_=ressources_aides_personnelle_l[3]; - function _agL_(x){return personne_vivant_habituellement(x)} - var - t580=caml_js_from_array(caml_call2(Stdlib_Array[15],_agL_,_agK_)), - t579= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[2]), - t578= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); - return {"ressourcesDemandeurIn":t578, - "ressourcesConjointIn":t579, - "personnesVivantHabituellementFoyerIn":t580, - "demandeurExerceActiviteRemunereeIn":t581, - "conjointExerceActiviteRemunereeIn":t582, - "personnesAChargeIn":t583, - "situationFamilialeIn":t584, - "modeOccupationIn":t585, - "conditionAgeBourseEnseignementSuperieurIn":t586, - "demandeurPoursuitDesEtudesIn":t587, - "dateDemandeOuReexamenDroitIn":t588, - "paiementLogementDistinctProfessionnelIn":t589, - "ressourcesMenageArrondiesBaseIn":t590}} - function ressources_aides_personnelle_l$3(ressources_aides_personnelle_l) - {var - _agp_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesMenageArrondiesBaseIn), - _agq_=caml_call1(Runtime_ocaml_Runtime[33],_agp_), - _agr_= - paiement_logement_distinct_pro$0 - (ressources_aides_personnelle_l.paiementLogementDistinctProfessionnelIn), - _ags_= - caml_call1 - (Runtime_jsoo_Runtime[4], - ressources_aides_personnelle_l.dateDemandeOuReexamenDroitIn), - _agt_=ressources_aides_personnelle_l.demandeurPoursuitDesEtudesIn | 0, - _agu_= - ressources_aides_personnelle_l.conditionAgeBourseEnseignementSuperieurIn - | - 0, - _agv_= - mode_occupation_of_jsoo - (ressources_aides_personnelle_l.modeOccupationIn), - _agw_= - situation_familiale_of_jsoo - (ressources_aides_personnelle_l.situationFamilialeIn), - _agx_= - caml_js_to_array(ressources_aides_personnelle_l.personnesAChargeIn); - function _agy_(x){return personne_a_charge_of_jsoo(x)} - var - _agz_=caml_call1(caml_call1(Stdlib_Array[15],_agy_),_agx_), - _agA_= - ressources_aides_personnelle_l.conjointExerceActiviteRemunereeIn - | - 0, - _agB_= - ressources_aides_personnelle_l.demandeurExerceActiviteRemunereeIn - | - 0, - _agC_= - caml_js_to_array - (ressources_aides_personnelle_l.personnesVivantHabituellementFoyerIn); - function _agD_(x){return personne_vivant_habituellement$0(x)} - var - _agE_=caml_call1(caml_call1(Stdlib_Array[15],_agD_),_agC_), - _agF_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesConjointIn), - _agG_=caml_call1(Runtime_ocaml_Runtime[33],_agF_), - _agH_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesDemandeurIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_agH_), - _agG_, - _agE_, - _agB_, - _agA_, - _agz_, - _agw_, - _agv_, - _agu_, - _agt_, - _ags_, - _agr_, - _agq_]} - function contributions_sociales_aides_p$0(contributions_sociales_aides_p) - {function t604(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _agm_=caml_call1(Runtime_ocaml_Runtime[42],input), - _agn_=caml_call1(Runtime_ocaml_Runtime[33],_agm_), - _ago_=caml_call1(contributions_sociales_aides_p[1],_agn_); - return caml_call1(Runtime_ocaml_Runtime[35],_ago_)})} - return {"montantOut":caml_js_wrap_meth_callback(t604)}} - function contributions_sociales_aides_p$1(contributions_sociales_aides_p) - {return [0,caml_call1(Stdlib[2],cst_The_function_montant_out_t)]} - function contributions_sociales_aides_p$2(contributions_sociales_aides_p) - {var - t605= - caml_call1(Runtime_jsoo_Runtime[5],contributions_sociales_aides_p[1]); - return {"dateCouranteIn":t605}} - function contributions_sociales_aides_p$3(contributions_sociales_aides_p) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - contributions_sociales_aides_p.dateCouranteIn)]} - function calcul_aide_personnalisee_loge$3(calcul_aide_personnalisee_loge) - {function t613(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _agj_=caml_call1(Runtime_ocaml_Runtime[42],input), - _agk_=caml_call1(Runtime_ocaml_Runtime[33],_agj_), - _agl_=caml_call1(calcul_aide_personnalisee_loge[7],_agk_); - return caml_call1(Runtime_ocaml_Runtime[35],_agl_)})} - var - t612= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), - t611= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), - t610= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[4]), - t609= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), - t608= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t607= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"montantForfaitaireChargesD82316Out":t607, - "plafondLoyerD823162Out":t608, - "participationMinimaleOut":t609, - "tauxCompositionFamilialeOut":t610, - "participationPersonnelleOut":t611, - "aideFinaleFormuleOut":t612, - "traitementAideFinaleMontantMinimalOut": - caml_js_wrap_meth_callback(t613)}} - function calcul_aide_personnalisee_loge$4(calcul_aide_personnalisee_loge) - {var - _af__=caml_call1(Stdlib[2],cst_The_function_traitement_ai), - _af$_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormuleOut), - _aga_=caml_call1(Runtime_ocaml_Runtime[33],_af$_), - _agb_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.participationPersonnelleOut), - _agc_=caml_call1(Runtime_ocaml_Runtime[33],_agb_), - _agd_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.tauxCompositionFamilialeOut), - _age_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.participationMinimaleOut), - _agf_=caml_call1(Runtime_ocaml_Runtime[33],_age_), - _agg_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.plafondLoyerD823162Out), - _agh_=caml_call1(Runtime_ocaml_Runtime[33],_agg_), - _agi_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.montantForfaitaireChargesD82316Out); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_agi_), - _agh_, - _agf_, - _agd_, - _agc_, - _aga_, - _af__]} - function calcul_aide_personnalisee_loge$5(calcul_aide_personnalisee_loge) - {var - t631= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[12]), - t630=! ! calcul_aide_personnalisee_loge[11], - t629=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[10]), - t628=! ! calcul_aide_personnalisee_loge[9], - t627=! ! calcul_aide_personnalisee_loge[8], - t626=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]), - t625=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[6]), - t624= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), - t623= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[4]), - t622=! ! calcul_aide_personnalisee_loge[3], - t621= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t620= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"loyerPrincipalIn":t620, - "ressourcesMenageArrondiesIn":t621, - "beneficiaireAideAdulteOuEnfantHandicapesIn":t622, - "dateCouranteIn":t623, - "nombrePersonnesAChargeIn":t624, - "situationFamilialeCalculAplIn":t625, - "zoneIn":t626, - "logementEstChambreIn":t627, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t628, - "typeAideIn":t629, - "colocationIn":t630, - "reductionLoyerSolidariteIn":t631}} - function calcul_aide_personnalisee_loge$6(calcul_aide_personnalisee_loge) - {var - _afW_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.reductionLoyerSolidariteIn), - _afX_=caml_call1(Runtime_ocaml_Runtime[33],_afW_), - _afY_=calcul_aide_personnalisee_loge.colocationIn | 0, - _afZ_= - type_aides_personnelle_logemen$0 - (calcul_aide_personnalisee_loge.typeAideIn), - _af0_= - calcul_aide_personnalisee_loge.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn - | - 0, - _af1_=calcul_aide_personnalisee_loge.logementEstChambreIn | 0, - _af2_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _af3_= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _af4_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _af5_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _af6_= - calcul_aide_personnalisee_loge.beneficiaireAideAdulteOuEnfantHandicapesIn - | - 0, - _af7_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _af8_=caml_call1(Runtime_ocaml_Runtime[33],_af7_), - _af9_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.loyerPrincipalIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_af9_), - _af8_, - _af6_, - _af5_, - _af4_, - _af3_, - _af2_, - _af1_, - _af0_, - _afZ_, - _afY_, - _afX_]} - function calcul_equivalence_loyer_minim$0(calcul_equivalence_loyer_minim) - {var - t644= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); - return {"montantOut":t644}} - function calcul_equivalence_loyer_minim$1(calcul_equivalence_loyer_minim) - {var - _afV_= - caml_call1 - (Runtime_ocaml_Runtime[42],calcul_equivalence_loyer_minim.montantOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_afV_)]} - function calcul_equivalence_loyer_minim$2(calcul_equivalence_loyer_minim) - {var - t648= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_equivalence_loyer_minim[3]), - t647=! ! calcul_equivalence_loyer_minim[2], - t646= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); - return {"ressourcesMenageArrondiesIn":t646, - "condition2Du83225In":t647, - "nNombrePartsD83225In":t648}} - function calcul_equivalence_loyer_minim$3(calcul_equivalence_loyer_minim) - {var - _afS_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_equivalence_loyer_minim.nNombrePartsD83225In), - _afT_=calcul_equivalence_loyer_minim.condition2Du83225In | 0, - _afU_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_equivalence_loyer_minim.ressourcesMenageArrondiesIn); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_afU_),_afT_,_afS_]} - function calcul_nombre_part_logement_fo$0(calcul_nombre_part_logement_fo) - {var - t652= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_nombre_part_logement_fo[1]); - return {"nNombrePartsD83225Out":t652}} - function calcul_nombre_part_logement_fo$1(calcul_nombre_part_logement_fo) - {return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_nombre_part_logement_fo.nNombrePartsD83225Out)]} - function calcul_nombre_part_logement_fo$2(calcul_nombre_part_logement_fo) - {var - t656=situation_familiale_calcul_a_p(calcul_nombre_part_logement_fo[3]), - t655= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_nombre_part_logement_fo[2]), - t654=! ! calcul_nombre_part_logement_fo[1]; - return {"condition2Du83225In":t654, - "nombrePersonnesAChargeIn":t655, - "situationFamilialeCalculAplIn":t656}} - function calcul_nombre_part_logement_fo$3(calcul_nombre_part_logement_fo) - {var - _afQ_= - situation_familiale_calcul_a_p$0 - (calcul_nombre_part_logement_fo.situationFamilialeCalculAplIn), - _afR_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_nombre_part_logement_fo.nombrePersonnesAChargeIn); - return [0, - calcul_nombre_part_logement_fo.condition2Du83225In | 0, - _afR_, - _afQ_]} - function calcul_aide_personnalisee_loge$7(calcul_aide_personnalisee_loge) - {function t668(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _afN_=caml_call1(Runtime_ocaml_Runtime[42],input), - _afO_=caml_call1(Runtime_ocaml_Runtime[33],_afN_), - _afP_=caml_call1(calcul_aide_personnalisee_loge[9],_afO_); - return caml_call1(Runtime_ocaml_Runtime[35],_afP_)})} - var - t667= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), - t666= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[7]), - t665= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), - t664= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), - t663= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), - t662= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), - t661= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t660= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"coefficientMultiplicateurD83225Out":t660, - "coefficientRD83225Out":t661, - "nNombrePartsD83225Out":t662, - "equivalenceLoyerEligibleOut":t663, - "plafondEquivalenceLoyerEligibleOut":t664, - "equivalenceLoyerMinimaleOut":t665, - "coefficientPriseEnChargeD83225SeuilOut":t666, - "aideFinaleFormuleOut":t667, - "traitementAideFinaleMontantMinimalOut": - caml_js_wrap_meth_callback(t668)}} - function calcul_aide_personnalisee_loge$8(calcul_aide_personnalisee_loge) - {var - _afz_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$0), - _afA_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormuleOut), - _afB_=caml_call1(Runtime_ocaml_Runtime[33],_afA_), - _afC_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83225SeuilOut), - _afD_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.equivalenceLoyerMinimaleOut), - _afE_=caml_call1(Runtime_ocaml_Runtime[33],_afD_), - _afF_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.plafondEquivalenceLoyerEligibleOut), - _afG_=caml_call1(Runtime_ocaml_Runtime[33],_afF_), - _afH_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.equivalenceLoyerEligibleOut), - _afI_=caml_call1(Runtime_ocaml_Runtime[33],_afH_), - _afJ_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.nNombrePartsD83225Out), - _afK_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientRD83225Out), - _afL_=caml_call1(Runtime_ocaml_Runtime[33],_afK_), - _afM_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientMultiplicateurD83225Out); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_afM_), - _afL_, - _afJ_, - _afI_, - _afG_, - _afE_, - _afC_, - _afB_, - _afz_]} - function calcul_aide_personnalisee_loge$9(calcul_aide_personnalisee_loge) - {function t685(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _afy_= - caml_call1(calcul_aide_personnalisee_loge[9],input); - return caml_call1(Runtime_ocaml_Runtime[43],_afy_)})} - function t684(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(calcul_aide_personnalisee_loge[8],input)})} - var - t683= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[7]), - t682= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]), - t681=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[5]), - t680=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]), - t679= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]), - t678= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t677=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]); - return {"modeOccupationIn":t677, - "ressourcesMenageArrondiesIn":t678, - "nombrePersonnesAChargeIn":t679, - "situationFamilialeCalculAplIn":t680, - "zoneIn":t681, - "dateCouranteIn":t682, - "redevanceIn":t683, - "condition2Du83225In":caml_js_wrap_meth_callback(t684), - "nNombrePartsD83225In":caml_js_wrap_meth_callback(t685)}} - function calcul_aide_personnalisee_loge$10(calcul_aide_personnalisee_loge) - {var - _afo_=caml_call1(Stdlib[2],cst_The_function_n_nombre_part), - _afp_=caml_call1(Stdlib[2],cst_The_function_condition_2_d), - _afq_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.redevanceIn), - _afr_=caml_call1(Runtime_ocaml_Runtime[33],_afq_), - _afs_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _aft_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _afu_= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _afv_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _afw_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _afx_=caml_call1(Runtime_ocaml_Runtime[33],_afw_); - return [0, - mode_occupation_of_jsoo - (calcul_aide_personnalisee_loge.modeOccupationIn), - _afx_, - _afv_, - _afu_, - _aft_, - _afs_, - _afr_, - _afp_, - _afo_]} - function calcul_nombre_parts_accession_$0(calcul_nombre_parts_accession_) - {var - t693= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_nombre_parts_accession_[1]); - return {"nNombrePartsD83211Out":t693}} - function calcul_nombre_parts_accession_$1(calcul_nombre_parts_accession_) - {return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_nombre_parts_accession_.nNombrePartsD83211Out)]} - function calcul_nombre_parts_accession_$2(calcul_nombre_parts_accession_) - {var - t696=situation_familiale_calcul_a_p(calcul_nombre_parts_accession_[2]), - t695= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_nombre_parts_accession_[1]); - return {"nombrePersonnesAChargeIn":t695, - "situationFamilialeCalculAplIn":t696}} - function calcul_nombre_parts_accession_$3(calcul_nombre_parts_accession_) - {var - _afn_= - situation_familiale_calcul_a_p$0 - (calcul_nombre_parts_accession_.situationFamilialeCalculAplIn); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_nombre_parts_accession_.nombrePersonnesAChargeIn), - _afn_]} - function calcul_aide_personnalisee_loge$11(calcul_aide_personnalisee_loge) - {function t703(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _afk_=caml_call1(Runtime_ocaml_Runtime[42],input), - _afl_=caml_call1(Runtime_ocaml_Runtime[33],_afk_), - _afm_=caml_call1(calcul_aide_personnalisee_loge[5],_afl_); - return caml_call1(Runtime_ocaml_Runtime[35],_afm_)})} - var - t702= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), - t701= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), - t700= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t699= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"mensualiteEligibleOut":t699, - "mensualiteMinimaleOut":t700, - "coefficientPriseEnChargeD83210SeuilOut":t701, - "aideFinaleFormuleOut":t702, - "traitementAideFinaleMontantMinimalOut": - caml_js_wrap_meth_callback(t703)}} - function calcul_aide_personnalisee_loge$12(calcul_aide_personnalisee_loge) - {var - _afd_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$1), - _afe_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormuleOut), - _aff_=caml_call1(Runtime_ocaml_Runtime[33],_afe_), - _afg_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83210SeuilOut), - _afh_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualiteMinimaleOut), - _afi_=caml_call1(Runtime_ocaml_Runtime[33],_afh_), - _afj_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualiteEligibleOut); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_afj_), - _afi_, - _afg_, - _aff_, - _afd_]} - function calcul_aide_personnalisee_loge$13(calcul_aide_personnalisee_loge) - {var - t721= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[14]), - t720=neuf_ou_ancien_to_jsoo(calcul_aide_personnalisee_loge[13]), - t719=type_pret_to_jsoo(calcul_aide_personnalisee_loge[12]), - t718=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[11]), - t717=! ! calcul_aide_personnalisee_loge[10], - t716=! ! calcul_aide_personnalisee_loge[9], - t715= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]), - t714=! ! calcul_aide_personnalisee_loge[7], - t713= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]), - t712=type_travaux_logement_d832_15_(calcul_aide_personnalisee_loge[5]), - t711=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]), - t710= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]), - t709= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t708= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"mensualitePrincipaleIn":t708, - "ressourcesMenageArrondiesIn":t709, - "nombrePersonnesAChargeIn":t710, - "situationFamilialeCalculAplIn":t711, - "typeTravauxLogementIn":t712, - "dateSignaturePretIn":t713, - "localHabitePremiereFoisBeneficiaireIn":t714, - "dateEntreeLogementIn":t715, - "coproprieteIn":t716, - "situationR822111317In":t717, - "zoneIn":t718, - "typePretIn":t719, - "ancienneteLogementIn":t720, - "dateCouranteIn":t721}} - function calcul_aide_personnalisee_loge$14(calcul_aide_personnalisee_loge) - {var - _ae0_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _ae1_= - neuf_ou_ancien_of_jsoo - (calcul_aide_personnalisee_loge.ancienneteLogementIn), - _ae2_=type_pret_of_jsoo(calcul_aide_personnalisee_loge.typePretIn), - _ae3_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _ae4_=calcul_aide_personnalisee_loge.situationR822111317In | 0, - _ae5_=calcul_aide_personnalisee_loge.coproprieteIn | 0, - _ae6_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateEntreeLogementIn), - _ae7_= - calcul_aide_personnalisee_loge.localHabitePremiereFoisBeneficiaireIn - | - 0, - _ae8_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateSignaturePretIn), - _ae9_= - type_travaux_logement_d832_15_$0 - (calcul_aide_personnalisee_loge.typeTravauxLogementIn), - _ae__= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _ae$_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _afa_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _afb_=caml_call1(Runtime_ocaml_Runtime[33],_afa_), - _afc_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualitePrincipaleIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_afc_), - _afb_, - _ae$_, - _ae__, - _ae9_, - _ae8_, - _ae7_, - _ae6_, - _ae5_, - _ae4_, - _ae3_, - _ae2_, - _ae1_, - _ae0_]} - function calcul_aide_personnalisee_loge$15(calcul_aide_personnalisee_loge) - {function t737(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aeX_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aeY_=caml_call1(Runtime_ocaml_Runtime[33],_aeX_), - _aeZ_=caml_call1(calcul_aide_personnalisee_loge[2],_aeY_); - return caml_call1(Runtime_ocaml_Runtime[35],_aeZ_)})} - var - t736= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"aideFinaleFormuleOut":t736, - "traitementAideFinaleOut":caml_js_wrap_meth_callback(t737)}} - function calcul_aide_personnalisee_loge$16(calcul_aide_personnalisee_loge) - {var - _aeV_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$2), - _aeW_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormuleOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeW_),_aeV_]} - function calcul_aide_personnalisee_loge$17(calcul_aide_personnalisee_loge) - {var - t746= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]), - t745=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]), - t744= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[6]), - t743=situation_familiale_to_jsoo(calcul_aide_personnalisee_loge[5]), - t742= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), - t741=informations_calcul_a_p_l_to_j(calcul_aide_personnalisee_loge[3]), - t740=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[2]), - t739=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]); - return {"modeOccupationIn":t739, - "typeAideIn":t740, - "informationsCalculIn":t741, - "ressourcesMenageSansArrondiIn":t742, - "situationFamilialeIn":t743, - "nombrePersonnesAChargeIn":t744, - "zoneIn":t745, - "dateCouranteIn":t746}} - function calcul_aide_personnalisee_loge$18(calcul_aide_personnalisee_loge) - {var - _aeN_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _aeO_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _aeP_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _aeQ_= - situation_familiale_of_jsoo - (calcul_aide_personnalisee_loge.situationFamilialeIn), - _aeR_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageSansArrondiIn), - _aeS_=caml_call1(Runtime_ocaml_Runtime[33],_aeR_), - _aeT_= - informations_calcul_a_p_l_of_j - (calcul_aide_personnalisee_loge.informationsCalculIn), - _aeU_= - type_aides_personnelle_logemen$0 - (calcul_aide_personnalisee_loge.typeAideIn); - return [0, - mode_occupation_of_jsoo - (calcul_aide_personnalisee_loge.modeOccupationIn), - _aeU_, - _aeT_, - _aeS_, - _aeQ_, - _aeP_, - _aeO_, - _aeN_]} - function calcul_allocation_logement_loc$0(calcul_allocation_logement_loc) - {function t756(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aeK_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aeL_=caml_call1(Runtime_ocaml_Runtime[33],_aeK_), - _aeM_=caml_call1(calcul_allocation_logement_loc[2],_aeL_); - return caml_call1(Runtime_ocaml_Runtime[35],_aeM_)})} - var - t755= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); - return {"aideFinaleFormuleOut":t755, - "traitementAideFinaleOut":caml_js_wrap_meth_callback(t756)}} - function calcul_allocation_logement_loc$1(calcul_allocation_logement_loc) - {var - _aeI_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$3), - _aeJ_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.aideFinaleFormuleOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeJ_),_aeI_]} - function calcul_allocation_logement_loc$2(calcul_allocation_logement_loc) - {var - t771=changement_logement_d842_4_to_(calcul_allocation_logement_loc[14]), - t770=! ! calcul_allocation_logement_loc[13], - t769= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[12]), - t768=! ! calcul_allocation_logement_loc[11], - t767=type_aides_personnelle_logemen(calcul_allocation_logement_loc[10]), - t766=! ! calcul_allocation_logement_loc[9], - t765=! ! calcul_allocation_logement_loc[8], - t764=zone_d_habitation_to_jsoo(calcul_allocation_logement_loc[7]), - t763=situation_familiale_calcul_a_p(calcul_allocation_logement_loc[6]), - t762= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_loc[5]), - t761= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_loc[4]), - t760=! ! calcul_allocation_logement_loc[3], - t759= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[2]), - t758= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); - return {"loyerPrincipalIn":t758, - "ressourcesMenageArrondiesIn":t759, - "beneficiaireAideAdulteOuEnfantHandicapesIn":t760, - "dateCouranteIn":t761, - "nombrePersonnesAChargeIn":t762, - "situationFamilialeCalculAplIn":t763, - "zoneIn":t764, - "logementEstChambreIn":t765, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t766, - "typeAideIn":t767, - "colocationIn":t768, - "reductionLoyerSolidariteIn":t769, - "logementMeubleD8422In":t770, - "changementLogementD8424In":t771}} - function calcul_allocation_logement_loc$3(calcul_allocation_logement_loc) - {var - _aes_= - changement_logement_d842_4_of_ - (calcul_allocation_logement_loc.changementLogementD8424In), - _aet_=calcul_allocation_logement_loc.logementMeubleD8422In | 0, - _aeu_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.reductionLoyerSolidariteIn), - _aev_=caml_call1(Runtime_ocaml_Runtime[33],_aeu_), - _aew_=calcul_allocation_logement_loc.colocationIn | 0, - _aex_= - type_aides_personnelle_logemen$0 - (calcul_allocation_logement_loc.typeAideIn), - _aey_= - calcul_allocation_logement_loc.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn - | - 0, - _aez_=calcul_allocation_logement_loc.logementEstChambreIn | 0, - _aeA_=zone_d_habitation_of_jsoo(calcul_allocation_logement_loc.zoneIn), - _aeB_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_loc.situationFamilialeCalculAplIn), - _aeC_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_loc.nombrePersonnesAChargeIn), - _aeD_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_loc.dateCouranteIn), - _aeE_= - calcul_allocation_logement_loc.beneficiaireAideAdulteOuEnfantHandicapesIn - | - 0, - _aeF_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.ressourcesMenageArrondiesIn), - _aeG_=caml_call1(Runtime_ocaml_Runtime[33],_aeF_), - _aeH_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.loyerPrincipalIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_aeH_), - _aeG_, - _aeE_, - _aeD_, - _aeC_, - _aeB_, - _aeA_, - _aez_, - _aey_, - _aex_, - _aew_, - _aev_, - _aet_, - _aes_]} - function calcul_allocation_logement_acc$0(calcul_allocation_logement_acc) - {function t787(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aep_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aeq_=caml_call1(Runtime_ocaml_Runtime[33],_aep_), - _aer_=caml_call1(calcul_allocation_logement_acc[2],_aeq_); - return caml_call1(Runtime_ocaml_Runtime[35],_aer_)})} - var - t786= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); - return {"aideFinaleFormuleOut":t786, - "traitementAideFinaleMontantMinimalOut": - caml_js_wrap_meth_callback(t787)}} - function calcul_allocation_logement_acc$1(calcul_allocation_logement_acc) - {var - _aen_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$4), - _aeo_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.aideFinaleFormuleOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeo_),_aen_]} - function calcul_allocation_logement_acc$2(calcul_allocation_logement_acc) - {var - t801=! ! calcul_allocation_logement_acc[13], - t800= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[12]), - t799= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[11]), - t798=! ! calcul_allocation_logement_acc[10], - t797=type_travaux_logement_r842_5_t(calcul_allocation_logement_acc[9]), - t796= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[8]), - t795=! ! calcul_allocation_logement_acc[7], - t794= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[6]), - t793= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[5]), - t792=zone_d_habitation_to_jsoo(calcul_allocation_logement_acc[4]), - t791=situation_familiale_calcul_a_p(calcul_allocation_logement_acc[3]), - t790= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_acc[2]), - t789= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); - return {"ressourcesMenageArrondiesBaseIn":t789, - "nombrePersonnesAChargeIn":t790, - "situationFamilialeCalculAplIn":t791, - "zoneIn":t792, - "dateCouranteIn":t793, - "mensualitePrincipaleIn":t794, - "situationR822111317In":t795, - "dateSignaturePretIn":t796, - "typeTravauxLogementIn":t797, - "localHabitePremiereFoisBeneficiaireIn":t798, - "dateEntreeLogementIn":t799, - "chargesMensuellesPretIn":t800, - "coproprieteIn":t801}} - function calcul_allocation_logement_acc$3(calcul_allocation_logement_acc) - {var - _ad__=calcul_allocation_logement_acc.coproprieteIn | 0, - _ad$_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.chargesMensuellesPretIn), - _aea_=caml_call1(Runtime_ocaml_Runtime[33],_ad$_), - _aeb_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateEntreeLogementIn), - _aec_= - calcul_allocation_logement_acc.localHabitePremiereFoisBeneficiaireIn - | - 0, - _aed_= - type_travaux_logement_r842_5_o - (calcul_allocation_logement_acc.typeTravauxLogementIn), - _aee_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateSignaturePretIn), - _aef_=calcul_allocation_logement_acc.situationR822111317In | 0, - _aeg_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.mensualitePrincipaleIn), - _aeh_=caml_call1(Runtime_ocaml_Runtime[33],_aeg_), - _aei_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateCouranteIn), - _aej_=zone_d_habitation_of_jsoo(calcul_allocation_logement_acc.zoneIn), - _aek_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_acc.situationFamilialeCalculAplIn), - _ael_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_acc.nombrePersonnesAChargeIn), - _aem_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.ressourcesMenageArrondiesBaseIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_aem_), - _ael_, - _aek_, - _aej_, - _aei_, - _aeh_, - _aef_, - _aee_, - _aed_, - _aec_, - _aeb_, - _aea_, - _ad__]} - function calcul_allocation_logement_foy$0(calcul_allocation_logement_foy) - {function t820(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _ad7_=caml_call1(Runtime_ocaml_Runtime[42],input), - _ad8_=caml_call1(Runtime_ocaml_Runtime[33],_ad7_), - _ad9_=caml_call1(calcul_allocation_logement_foy[6],_ad8_); - return caml_call1(Runtime_ocaml_Runtime[35],_ad9_)})} - var - t819= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[5]), - t818= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), - t817= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), - t816= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[2]), - t815= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_allocation_logement_foy[1]); - return {"coefficientPriseEnChargeOut":t815, - "equivalenceLoyerOut":t816, - "montantForfaitaireChargesOut":t817, - "loyerMinimalOut":t818, - "aideFinaleFormuleOut":t819, - "traitementAideFinaleMontantMinimalOut": - caml_js_wrap_meth_callback(t820)}} - function calcul_allocation_logement_foy$1(calcul_allocation_logement_foy) - {var - _adY_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$5), - _adZ_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.aideFinaleFormuleOut), - _ad0_=caml_call1(Runtime_ocaml_Runtime[33],_adZ_), - _ad1_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.loyerMinimalOut), - _ad2_=caml_call1(Runtime_ocaml_Runtime[33],_ad1_), - _ad3_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.montantForfaitaireChargesOut), - _ad4_=caml_call1(Runtime_ocaml_Runtime[33],_ad3_), - _ad5_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.equivalenceLoyerOut), - _ad6_=caml_call1(Runtime_ocaml_Runtime[33],_ad5_); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.coefficientPriseEnChargeOut), - _ad6_, - _ad4_, - _ad2_, - _ad0_, - _adY_]} - function calcul_allocation_logement_foy$2(calcul_allocation_logement_foy) - {var - t833=categorie_equivalence_loyer_al(calcul_allocation_logement_foy[8]), - t832= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[7]), - t831=zone_d_habitation_to_jsoo(calcul_allocation_logement_foy[6]), - t830=situation_familiale_calcul_a_p(calcul_allocation_logement_foy[5]), - t829= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_foy[4]), - t828= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), - t827=mode_occupation_to_jsoo(calcul_allocation_logement_foy[2]), - t826= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[1]); - return {"redevanceIn":t826, - "modeOccupationIn":t827, - "ressourcesMenageArrondiesIn":t828, - "nombrePersonnesAChargeIn":t829, - "situationFamilialeCalculAplIn":t830, - "zoneIn":t831, - "dateCouranteIn":t832, - "categorieEquivalenceLoyerD84216In":t833}} - function calcul_allocation_logement_foy$3(calcul_allocation_logement_foy) - {var - _adP_= - categorie_equivalence_loyer_al$0 - (calcul_allocation_logement_foy.categorieEquivalenceLoyerD84216In), - _adQ_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_foy.dateCouranteIn), - _adR_=zone_d_habitation_of_jsoo(calcul_allocation_logement_foy.zoneIn), - _adS_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_foy.situationFamilialeCalculAplIn), - _adT_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_foy.nombrePersonnesAChargeIn), - _adU_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.ressourcesMenageArrondiesIn), - _adV_=caml_call1(Runtime_ocaml_Runtime[33],_adU_), - _adW_= - mode_occupation_of_jsoo - (calcul_allocation_logement_foy.modeOccupationIn), - _adX_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.redevanceIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_adX_), - _adW_, - _adV_, - _adT_, - _adS_, - _adR_, - _adQ_, - _adP_]} - function calcul_allocation_logement_out(calcul_allocation_logement_out) - {function t843(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _adM_=caml_call1(Runtime_ocaml_Runtime[42],input), - _adN_=caml_call1(Runtime_ocaml_Runtime[33],_adM_), - _adO_=caml_call1(calcul_allocation_logement_out[2],_adN_); - return caml_call1(Runtime_ocaml_Runtime[35],_adO_)})} - var - t842= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_out[1]); - return {"aideFinaleFormuleOut":t842, - "traitementAideFinaleOut":caml_js_wrap_meth_callback(t843)}} - function calcul_allocation_logement_out$0(calcul_allocation_logement_out) - {var - _adK_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$6), - _adL_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_out.aideFinaleFormuleOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_adL_),_adK_]} - function calcul_allocation_logement_in_(calcul_allocation_logement_in) - {var - t852=type_aides_personnelle_logemen(calcul_allocation_logement_in[8]), - t851= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_in[7]), - t850=zone_d_habitation_to_jsoo(calcul_allocation_logement_in[6]), - t849= - caml_call1(Runtime_ocaml_Runtime[48],calcul_allocation_logement_in[5]), - t848=situation_familiale_to_jsoo(calcul_allocation_logement_in[4]), - t847= - caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement_in[3]), - t846=informations_calcul_a_p_l_to_j(calcul_allocation_logement_in[2]), - t845=mode_occupation_to_jsoo(calcul_allocation_logement_in[1]); - return {"modeOccupationIn":t845, - "informationsCalculIn":t846, - "ressourcesMenageSansArrondiIn":t847, - "situationFamilialeIn":t848, - "nombrePersonnesAChargeIn":t849, - "zoneIn":t850, - "dateCouranteIn":t851, - "typeAideIn":t852}} - function calcul_allocation_logement_in_$0(calcul_allocation_logement_in) - {var - _adC_= - type_aides_personnelle_logemen$0 - (calcul_allocation_logement_in.typeAideIn), - _adD_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_in.dateCouranteIn), - _adE_=zone_d_habitation_of_jsoo(calcul_allocation_logement_in.zoneIn), - _adF_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_in.nombrePersonnesAChargeIn), - _adG_= - situation_familiale_of_jsoo - (calcul_allocation_logement_in.situationFamilialeIn), - _adH_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_in.ressourcesMenageSansArrondiIn), - _adI_=caml_call1(Runtime_ocaml_Runtime[33],_adH_), - _adJ_= - informations_calcul_a_p_l_of_j - (calcul_allocation_logement_in.informationsCalculIn); - return [0, - mode_occupation_of_jsoo - (calcul_allocation_logement_in.modeOccupationIn), - _adJ_, - _adI_, - _adG_, - _adF_, - _adE_, - _adD_, - _adC_]} - function ouverture_droits_retraite_out_(ouverture_droits_retraite_out) - {var - t861= - caml_call1(Runtime_jsoo_Runtime[3],ouverture_droits_retraite_out[1]); - return {"ageOuvertureDroitOut":t861}} - function ouverture_droits_retraite_out_$0(ouverture_droits_retraite_out) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[2], - ouverture_droits_retraite_out.ageOuvertureDroitOut)]} - function ouverture_droits_retraite_in_t(ouverture_droits_retraite_in) - {var - t863= - caml_call1(Runtime_jsoo_Runtime[5],ouverture_droits_retraite_in[1]); - return {"dateNaissanceAssureIn":t863}} - function ouverture_droits_retraite_in_o(ouverture_droits_retraite_in) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - ouverture_droits_retraite_in.dateNaissanceAssureIn)]} - function impaye_depense_logement_out_to(impaye_depense_logement_out) - {var - t865= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_out[1]); - return {"montantImpayeOut":t865}} - function impaye_depense_logement_out_of(impaye_depense_logement_out) - {var - _adB_= - caml_call1 - (Runtime_ocaml_Runtime[42], - impaye_depense_logement_out.montantImpayeOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_adB_)]} - function impaye_depense_logement_in_to_(impaye_depense_logement_in) - {var - t872= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[6]), - t871=depense_logement_to_jsoo(impaye_depense_logement_in[5]), - t870= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[4]), - t869= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[3]), - t868=versement_a_to_jsoo(impaye_depense_logement_in[2]), - t867=mode_occupation_to_jsoo(impaye_depense_logement_in[1]); - return {"modeOccupationIn":t867, - "aideVerseeIn":t868, - "montantAplIn":t869, - "montantChargesIn":t870, - "depenseLogementIn":t871, - "montantDetteIn":t872}} - function impaye_depense_logement_in_of_(impaye_depense_logement_in) - {var - _adt_= - caml_call1 - (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantDetteIn), - _adu_=caml_call1(Runtime_ocaml_Runtime[33],_adt_), - _adv_= - depense_logement_of_jsoo(impaye_depense_logement_in.depenseLogementIn), - _adw_= - caml_call1 - (Runtime_ocaml_Runtime[42], - impaye_depense_logement_in.montantChargesIn), - _adx_=caml_call1(Runtime_ocaml_Runtime[33],_adw_), - _ady_= - caml_call1 - (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantAplIn), - _adz_=caml_call1(Runtime_ocaml_Runtime[33],_ady_), - _adA_=versement_a_of_jsoo(impaye_depense_logement_in.aideVerseeIn); - return [0, - mode_occupation_of_jsoo - (impaye_depense_logement_in.modeOccupationIn), - _adA_, - _adz_, - _adx_, - _adv_, - _adu_]} - function calculette_aides_au_logement_o(calculette_aides_au_logement_o) - {var _ado_=calculette_aides_au_logement_o[4]; - function _adp_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var t882=caml_js_from_array(caml_call2(Stdlib_Array[15],_adp_,_ado_)); - function t881(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _adq_=caml_call1(Runtime_ocaml_Runtime[42],input), - _adr_=caml_call1(Runtime_ocaml_Runtime[33],_adq_), - _ads_=caml_call1(calculette_aides_au_logement_o[3],_adr_); - return caml_call1(Runtime_ocaml_Runtime[35],_ads_)})} - var - t880= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_o[2]), - t879=! ! calculette_aides_au_logement_o[1]; - return {"eligibiliteOut":t879, - "aideFinaleFormuleOut":t880, - "traitementAideFinaleOut":caml_js_wrap_meth_callback(t881), - "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t882}} - function calculette_aides_au_logement_o$0(calculette_aides_au_logement_o) - {var - _adi_= - caml_js_to_array - (calculette_aides_au_logement_o.coefficentsEnfantsGardeAlterneePrisEnCompteOut); - function _adj_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _adk_=caml_call1(caml_call1(Stdlib_Array[15],_adj_),_adi_), - _adl_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$7), - _adm_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_o.aideFinaleFormuleOut), - _adn_=caml_call1(Runtime_ocaml_Runtime[33],_adm_); - return [0, - calculette_aides_au_logement_o.eligibiliteOut | 0, - _adn_, - _adl_, - _adk_]} - function calculette_aides_au_logement_i(calculette_aides_au_logement_i) - {var - t890= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_i[5]), - t889= - caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_i[4]), - t888=informations_calcul_a_p_l_to_j(calculette_aides_au_logement_i[3]), - t887=demandeur_to_jsoo(calculette_aides_au_logement_i[2]), - t886=menage_to_jsoo(calculette_aides_au_logement_i[1]); - return {"menageIn":t886, - "demandeurIn":t887, - "informationsCalculIn":t888, - "dateCouranteIn":t889, - "ressourcesMenagePrisesEnCompteIn":t890}} - function calculette_aides_au_logement_i$0(calculette_aides_au_logement_i) - {var - _add_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_i.ressourcesMenagePrisesEnCompteIn), - _ade_=caml_call1(Runtime_ocaml_Runtime[33],_add_), - _adf_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calculette_aides_au_logement_i.dateCouranteIn), - _adg_= - informations_calcul_a_p_l_of_j - (calculette_aides_au_logement_i.informationsCalculIn), - _adh_=demandeur_of_jsoo(calculette_aides_au_logement_i.demandeurIn); - return [0, - menage_of_jsoo(calculette_aides_au_logement_i.menageIn), - _adh_, - _adg_, - _adf_, - _ade_]} - function calculette_aides_au_logement_g$0(calculette_aides_au_logement_g) - {var - t897= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[2]), - t896=! ! calculette_aides_au_logement_g[1]; - return {"eligibiliteOut":t896,"aideFinaleOut":t897}} - function calculette_aides_au_logement_g$1(calculette_aides_au_logement_g) - {var - _adb_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_g.aideFinaleOut), - _adc_=caml_call1(Runtime_ocaml_Runtime[33],_adb_); - return [0,calculette_aides_au_logement_g.eligibiliteOut | 0,_adc_]} - function calculette_aides_au_logement_g$2(calculette_aides_au_logement_g) - {var - t904= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[5]), - t903= - caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_g[4]), - t902=informations_calcul_a_p_l_to_j(calculette_aides_au_logement_g[3]), - t901=demandeur_to_jsoo(calculette_aides_au_logement_g[2]), - t900=menage_to_jsoo(calculette_aides_au_logement_g[1]); - return {"menageIn":t900, - "demandeurIn":t901, - "informationsCalculIn":t902, - "dateCouranteIn":t903, - "ressourcesMenagePrisesEnCompteIn":t904}} - function calculette_aides_au_logement_g$3(calculette_aides_au_logement_g) - {var - _ac8_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_g.ressourcesMenagePrisesEnCompteIn), - _ac9_=caml_call1(Runtime_ocaml_Runtime[33],_ac8_), - _ac__= - caml_call1 - (Runtime_jsoo_Runtime[4], - calculette_aides_au_logement_g.dateCouranteIn), - _ac$_= - informations_calcul_a_p_l_of_j - (calculette_aides_au_logement_g.informationsCalculIn), - _ada_=demandeur_of_jsoo(calculette_aides_au_logement_g.demandeurIn); - return [0, - menage_of_jsoo(calculette_aides_au_logement_g.menageIn), - _ada_, - _ac$_, - _ac__, - _ac9_]} - function base_mensuelle_allocations_fam$6(base_mensuelle_allocations_fam) - {var - t910= - caml_call1 - (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); - return {"montantOut":t910}} - function base_mensuelle_allocations_fam$7(base_mensuelle_allocations_fam) - {var - _ac7_= - caml_call1 - (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montantOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ac7_)]} - function base_mensuelle_allocations_fam$8(base_mensuelle_allocations_fam) - {var - t912= - caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); - return {"dateCouranteIn":t912}} - function base_mensuelle_allocations_fam$9(base_mensuelle_allocations_fam) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - base_mensuelle_allocations_fam.dateCouranteIn)]} - function smic_out_to_jsoo$0(smic_out) - {var t914=caml_call1(Runtime_ocaml_Runtime[35],smic_out[1]); - return {"brutHoraireOut":t914}} - function smic_out_of_jsoo$0(smic_out) - {var _ac6_=caml_call1(Runtime_ocaml_Runtime[42],smic_out.brutHoraireOut); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ac6_)]} - function smic_in_to_jsoo$0(smic_in) - {var - t917=collectivite_to_jsoo$0(smic_in[2]), - t916=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); - return {"dateCouranteIn":t916,"residenceIn":t917}} - function smic_in_of_jsoo$0(smic_in) - {var _ac5_=collectivite_of_jsoo$0(smic_in.residenceIn); - return [0, - caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), - _ac5_]} - function eligibilite_prestations_famili$0(eligibilite_prestations_famili) - {var - t923=! ! eligibilite_prestations_famili[4], - t922= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_prestations_famili[3]); - function t921(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _ac4_=enfant_prestations_familiales_$0(input); - return ! - ! - caml_call1(eligibilite_prestations_famili[2],_ac4_)})} - function t920(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _ac3_=enfant_prestations_familiales_$0(input); - return ! - ! - caml_call1(eligibilite_prestations_famili[1],_ac3_)})} - return {"droitOuvertOut":caml_js_wrap_meth_callback(t920), - "conditionsHorsAgeOut":caml_js_wrap_meth_callback(t921), - "ageL51232Out":t922, - "regimeOutreMerL7511Out":t923}} - function eligibilite_prestations_famili$1(eligibilite_prestations_famili) - {var - _ac0_=eligibilite_prestations_famili.regimeOutreMerL7511Out | 0, - _ac1_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_prestations_famili.ageL51232Out), - _ac2_=caml_call1(Stdlib[2],cst_The_function_conditions_ho$0); - return [0, - caml_call1(Stdlib[2],cst_The_function_droit_ouvert_$0), - _ac2_, - _ac1_, - _ac0_]} - function eligibilite_prestations_famili$2(eligibilite_prestations_famili) - {var - t928=collectivite_to_jsoo$0(eligibilite_prestations_famili[3]), - t927= - element_prestations_familiales$1(eligibilite_prestations_famili[2]), - t926= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prestations_famili[1]); - return {"dateCouranteIn":t926, - "prestationCouranteIn":t927, - "residenceIn":t928}} - function eligibilite_prestations_famili$3(eligibilite_prestations_famili) - {var - _acY_= - collectivite_of_jsoo$0(eligibilite_prestations_famili.residenceIn), - _acZ_= - element_prestations_familiales$2 - (eligibilite_prestations_famili.prestationCouranteIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prestations_famili.dateCouranteIn), - _acZ_, - _acY_]} - function contributions_sociales_aides_p$4 - (contributions_sociales_aides_p$1) - {return contributions_sociales_aides_p$0 - (contributions_sociales_aides_p - (contributions_sociales_aides_p$3 - (contributions_sociales_aides_p$1)))} - function calcul_equivalence_loyer_minim$4 - (calcul_equivalence_loyer_minim$1) - {return calcul_equivalence_loyer_minim$0 - (calcul_equivalence_loyer_minim - (calcul_equivalence_loyer_minim$3 - (calcul_equivalence_loyer_minim$1)))} - function calcul_nombre_part_logement_fo$4 - (calcul_nombre_part_logement_fo$1) - {return calcul_nombre_part_logement_fo$0 - (calcul_nombre_part_logement_fo - (calcul_nombre_part_logement_fo$3 - (calcul_nombre_part_logement_fo$1)))} - function calcul_nombre_parts_accession_$4 - (calcul_nombre_parts_accession_$1) - {return calcul_nombre_parts_accession_$0 - (calcul_nombre_parts_accession_ - (calcul_nombre_parts_accession_$3 - (calcul_nombre_parts_accession_$1)))} - function ouverture_droits_retraite$0(ouverture_droits_retraite_in) - {return ouverture_droits_retraite_out_ - (ouverture_droits_retraite - (ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)))} - function impaye_depense_logement$0(impaye_depense_logement_in) - {return impaye_depense_logement_out_to - (impaye_depense_logement - (impaye_depense_logement_in_of_(impaye_depense_logement_in)))} - function base_mensuelle_allocations_fam$10(base_mensuelle_allocations_fam) - {return base_mensuelle_allocations_fam$6 - (base_mensuelle_allocations_fam$5 - (base_mensuelle_allocations_fam$9 - (base_mensuelle_allocations_fam)))} - function smic$2(smic_in) - {return smic_out_to_jsoo$0(smic$1(smic_in_of_jsoo$0(smic_in)))} - function calcul_aide_personnalisee_loge$19 - (calcul_aide_personnalisee_loge$0) - {return calcul_aide_personnalisee_loge$3 - (calcul_aide_personnalisee_loge - (calcul_aide_personnalisee_loge$6 - (calcul_aide_personnalisee_loge$0)))} - function calcul_aide_personnalisee_loge$20(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$7 - (calcul_aide_personnalisee_loge$0 - (calcul_aide_personnalisee_loge$10 - (calcul_aide_personnalisee_loge)))} - function calcul_aide_personnalisee_loge$21(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$11 - (calcul_aide_personnalisee_loge$1 - (calcul_aide_personnalisee_loge$14 - (calcul_aide_personnalisee_loge)))} - function eligibilite_aides_personnelle_$4 - (eligibilite_aides_personnelle_$1) - {return eligibilite_aides_personnelle_$0 - (eligibilite_aides_personnelle_ - (eligibilite_aides_personnelle_$3 - (eligibilite_aides_personnelle_$1)))} - function ressources_aides_personnelle_l$4 - (ressources_aides_personnelle_l$1) - {return ressources_aides_personnelle_l$0 - (ressources_aides_personnelle_l - (ressources_aides_personnelle_l$3 - (ressources_aides_personnelle_l$1)))} - function eligibilite_prestations_famili$4 - (eligibilite_prestations_famili$1) - {return eligibilite_prestations_famili$0 - (eligibilite_prestations_famili - (eligibilite_prestations_famili$3 - (eligibilite_prestations_famili$1)))} - function calcul_allocation_logement_loc$4 - (calcul_allocation_logement_loc$1) - {return calcul_allocation_logement_loc$0 - (calcul_allocation_logement_loc - (calcul_allocation_logement_loc$3 - (calcul_allocation_logement_loc$1)))} - function calcul_allocation_logement_foy$4 - (calcul_allocation_logement_foy$1) - {return calcul_allocation_logement_foy$0 - (calcul_allocation_logement_foy - (calcul_allocation_logement_foy$3 - (calcul_allocation_logement_foy$1)))} - function calcul_allocation_logement_acc$4 - (calcul_allocation_logement_acc$1) - {return calcul_allocation_logement_acc$0 - (calcul_allocation_logement_acc - (calcul_allocation_logement_acc$3 - (calcul_allocation_logement_acc$1)))} - function calcul_aide_personnalisee_loge$22(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$15 - (calcul_aide_personnalisee_loge$2 - (calcul_aide_personnalisee_loge$18 - (calcul_aide_personnalisee_loge)))} - function eligibilite_prime_de_demenagem$4 - (eligibilite_prime_de_demenagem$1) - {return eligibilite_prime_de_demenagem$0 - (eligibilite_prime_de_demenagem - (eligibilite_prime_de_demenagem$3 - (eligibilite_prime_de_demenagem$1)))} - function eligibilite_aide_personnalisee$4 - (eligibilite_aide_personnalisee$1) - {return eligibilite_aide_personnalisee$0 - (eligibilite_aide_personnalisee - (eligibilite_aide_personnalisee$3 - (eligibilite_aide_personnalisee$1)))} - function eligibilite_allocation_logemen$6 - (eligibilite_allocation_logemen$0) - {return eligibilite_allocation_logemen$2 - (eligibilite_allocation_logemen - (eligibilite_allocation_logemen$5 - (eligibilite_allocation_logemen$0)))} - function calcul_allocation_logement$0(calcul_allocation_logement_in) - {return calcul_allocation_logement_out - (calcul_allocation_logement - (calcul_allocation_logement_in_$0 - (calcul_allocation_logement_in)))} - function calculette_aides_au_logement$0(calculette_aides_au_logement_i) - {return calculette_aides_au_logement_o - (calculette_aides_au_logement - (calculette_aides_au_logement_i$0 - (calculette_aides_au_logement_i)))} - function calculette_aides_au_logement_g$4 - (calculette_aides_au_logement_g$1) - {return calculette_aides_au_logement_g$0 - (calculette_aides_au_logement_g - (calculette_aides_au_logement_g$3 - (calculette_aides_au_logement_g$1)))} - function t955(param) - {return caml_js_wrap_callback(calculette_aides_au_logement_g$4)} - function t954(param) - {return caml_js_wrap_callback(calculette_aides_au_logement$0)} - function t953(param) - {return caml_js_wrap_callback(calcul_allocation_logement$0)} - function t952(param) - {return caml_js_wrap_callback(eligibilite_allocation_logemen$6)} - function t951(param) - {return caml_js_wrap_callback(eligibilite_aide_personnalisee$4)} - function t950(param) - {return caml_js_wrap_callback(eligibilite_prime_de_demenagem$4)} - function t949(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$22)} - function t948(param) - {return caml_js_wrap_callback(calcul_allocation_logement_acc$4)} - function t947(param) - {return caml_js_wrap_callback(calcul_allocation_logement_foy$4)} - function t946(param) - {return caml_js_wrap_callback(calcul_allocation_logement_loc$4)} - function t945(param) - {return caml_js_wrap_callback(eligibilite_prestations_famili$4)} - function t944(param) - {return caml_js_wrap_callback(ressources_aides_personnelle_l$4)} - function t943(param) - {return caml_js_wrap_callback(eligibilite_aides_personnelle_$4)} - function t942(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$21)} - function t941(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$20)} - function t940(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$19)} - function t939(param){return caml_js_wrap_callback(smic$2)} - function t938(param) - {return caml_js_wrap_callback(base_mensuelle_allocations_fam$10)} - function t937(param) - {return caml_js_wrap_callback(impaye_depense_logement$0)} - function t936(param) - {return caml_js_wrap_callback(ouverture_droits_retraite$0)} - function t935(param) - {return caml_js_wrap_callback(calcul_nombre_parts_accession_$4)} - function t934(param) - {return caml_js_wrap_callback(calcul_nombre_part_logement_fo$4)} - function t933(param) - {return caml_js_wrap_callback(calcul_equivalence_loyer_minim$4)} - function t932(param) - {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} - caml_call2 - (Js_of_ocaml_Js[46], - cst_AidesLogementLib, - {"contributionsSocialesAidesPersonnelleLogement": - caml_js_wrap_meth_callback(t932), - "calculEquivalenceLoyerMinimale":caml_js_wrap_meth_callback(t933), - "calculNombrePartLogementFoyer":caml_js_wrap_meth_callback(t934), - "calculNombrePartsAccessionPropriete":caml_js_wrap_meth_callback(t935), - "ouvertureDroitsRetraite":caml_js_wrap_meth_callback(t936), - "impayeDepenseLogement":caml_js_wrap_meth_callback(t937), - "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t938), - "smic":caml_js_wrap_meth_callback(t939), - "calculAidePersonnaliseeLogementLocatif": - caml_js_wrap_meth_callback(t940), - "calculAidePersonnaliseeLogementFoyer":caml_js_wrap_meth_callback(t941), - "calculAidePersonnaliseeLogementAccessionPropriete": - caml_js_wrap_meth_callback(t942), - "eligibiliteAidesPersonnelleLogement":caml_js_wrap_meth_callback(t943), - "ressourcesAidesPersonnelleLogement":caml_js_wrap_meth_callback(t944), - "eligibilitePrestationsFamiliales":caml_js_wrap_meth_callback(t945), - "calculAllocationLogementLocatif":caml_js_wrap_meth_callback(t946), - "calculAllocationLogementFoyer":caml_js_wrap_meth_callback(t947), - "calculAllocationLogementAccessionPropriete": - caml_js_wrap_meth_callback(t948), - "calculAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t949), - "eligibilitePrimeDeDemenagement":caml_js_wrap_meth_callback(t950), - "eligibiliteAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t951), - "eligibiliteAllocationLogement":caml_js_wrap_meth_callback(t952), - "calculAllocationLogement":caml_js_wrap_meth_callback(t953), - "calculetteAidesAuLogement":caml_js_wrap_meth_callback(t954), - "calculetteAidesAuLogementGardeAlternee": - caml_js_wrap_meth_callback(t955)}); - var - Law_source_Aides_logement_api_= - [0, - type_bailleur_to_jsoo, - type_bailleur_of_jsoo, - type_pret_to_jsoo, - type_pret_of_jsoo, - titulaire_pret_to_jsoo, - titulaire_pret_of_jsoo, - type_travaux_logement_d832_15_, - type_travaux_logement_d832_15_$0, - type_travaux_logement_r842_5_t, - type_travaux_logement_r842_5_o, - ameliore_par_occupant_to_jsoo, - ameliore_par_occupant_of_jsoo, - limite_tranche_to_jsoo, - limite_tranche_of_jsoo, - limite_tranche_decimal_to_jsoo, - limite_tranche_decimal_of_jsoo, - prestation_recue_to_jsoo, - prestation_recue_of_jsoo, - type_contrat_travail_to_jsoo, - type_contrat_travail_of_jsoo, - parent_ou_autre_to_jsoo, - parent_ou_autre_of_jsoo, - situation_garde_alternee_to_js, - situation_garde_alternee_of_js, - parente_to_jsoo, - parente_of_jsoo, - date_de_naissance_ou_mois_de_g, - date_de_naissance_ou_mois_de_g$0, - nationalite_to_jsoo, - nationalite_of_jsoo, - zone_d_habitation_to_jsoo, - zone_d_habitation_of_jsoo, - categorie_calcul_a_p_l_to_jsoo, - categorie_calcul_a_p_l_of_jsoo, - paiement_logement_distinct_pro, - paiement_logement_distinct_pro$0, - versement_a_to_jsoo, - versement_a_of_jsoo, - depense_logement_to_jsoo, - depense_logement_of_jsoo, - mode_occupation_impaye_to_jsoo, - mode_occupation_impaye_of_jsoo, - eligibilite_allocation_logemen$0, - eligibilite_allocation_logemen$1, - type_aides_personnelle_logemen, - type_aides_personnelle_logemen$0, - situation_familiale_to_jsoo, - situation_familiale_of_jsoo, - prise_en_charge_to_jsoo$0, - prise_en_charge_of_jsoo$0, - type_logement_foyer_to_jsoo, - type_logement_foyer_of_jsoo, - categorie_equivalence_loyer_al, - categorie_equivalence_loyer_al$0, - situation_familiale_calcul_a_p, - situation_familiale_calcul_a_p$0, - collectivite_to_jsoo$0, - collectivite_of_jsoo$0, - prise_en_charge_enfant_to_jsoo, - prise_en_charge_enfant_of_jsoo, - situation_obligation_scolaire_$1, - situation_obligation_scolaire_$2, - element_prestations_familiales$1, - element_prestations_familiales$2, - personne_sous_location_to_jsoo, - personne_sous_location_of_jsoo, - patrimoine_to_jsoo, - patrimoine_of_jsoo, - personne_vivant_habituellement, - personne_vivant_habituellement$0, - infos_changement_logement_d842, - infos_changement_logement_d842$0, - bailleur_to_jsoo, - bailleur_of_jsoo, - pret_to_jsoo, - pret_of_jsoo, - neuf_ou_ancien_to_jsoo, - neuf_ou_ancien_of_jsoo, - tranche_revenu_to_jsoo, - tranche_revenu_of_jsoo, - tranche_revenu_decimal_to_jsoo, - tranche_revenu_decimal_of_jsoo, - autre_personne_a_charge_to_jso, - autre_personne_a_charge_of_jso, - date_naissance_troisieme_ou_de, - date_naissance_troisieme_ou_de$0, - informations_calcul_a_p_l_loge, - informations_calcul_a_p_l_loge$0, - enfant_prestations_familiales_, - enfant_prestations_familiales_$0, - enfant_a_charge_to_jsoo, - enfant_a_charge_of_jsoo, - loue_ou_sous_loue_a_des_tiers_, - loue_ou_sous_loue_a_des_tiers_$0, - demandeur_to_jsoo, - demandeur_of_jsoo, - changement_logement_d842_4_to_, - changement_logement_d842_4_of_, - location_to_jsoo, - location_of_jsoo, - proprietaire_to_jsoo, - proprietaire_of_jsoo, - informations_calcul_a_p_l_acce, - informations_calcul_a_p_l_acce$0, - personne_a_charge_to_jsoo, - personne_a_charge_of_jsoo, - informations_calcul_a_p_l_loca, - informations_calcul_a_p_l_loca$0, - logement_foyer_to_jsoo, - logement_foyer_of_jsoo, - informations_calcul_a_p_l_to_j, - informations_calcul_a_p_l_of_j, - mode_occupation_to_jsoo, - mode_occupation_of_jsoo, - logement_to_jsoo, - logement_of_jsoo, - menage_to_jsoo, - menage_of_jsoo, - eligibilite_aides_personnelle_$0, - eligibilite_aides_personnelle_$1, - eligibilite_aides_personnelle_$2, - eligibilite_aides_personnelle_$3, - eligibilite_aide_personnalisee$0, - eligibilite_aide_personnalisee$1, - eligibilite_aide_personnalisee$2, - eligibilite_aide_personnalisee$3, - eligibilite_allocation_logemen$2, - eligibilite_allocation_logemen$3, - eligibilite_allocation_logemen$4, - eligibilite_allocation_logemen$5, - eligibilite_prime_de_demenagem$0, - eligibilite_prime_de_demenagem$1, - eligibilite_prime_de_demenagem$2, - eligibilite_prime_de_demenagem$3, - ressources_aides_personnelle_l$0, - ressources_aides_personnelle_l$1, - ressources_aides_personnelle_l$2, - ressources_aides_personnelle_l$3, - contributions_sociales_aides_p$0, - contributions_sociales_aides_p$1, - contributions_sociales_aides_p$2, - contributions_sociales_aides_p$3, - calcul_aide_personnalisee_loge$3, - calcul_aide_personnalisee_loge$4, - calcul_aide_personnalisee_loge$5, - calcul_aide_personnalisee_loge$6, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2, - calcul_equivalence_loyer_minim$3, - calcul_nombre_part_logement_fo$0, - calcul_nombre_part_logement_fo$1, - calcul_nombre_part_logement_fo$2, - calcul_nombre_part_logement_fo$3, - calcul_aide_personnalisee_loge$7, - calcul_aide_personnalisee_loge$8, - calcul_aide_personnalisee_loge$9, - calcul_aide_personnalisee_loge$10, - calcul_nombre_parts_accession_$0, - calcul_nombre_parts_accession_$1, - calcul_nombre_parts_accession_$2, - calcul_nombre_parts_accession_$3, - calcul_aide_personnalisee_loge$11, - calcul_aide_personnalisee_loge$12, - calcul_aide_personnalisee_loge$13, - calcul_aide_personnalisee_loge$14, - calcul_aide_personnalisee_loge$15, - calcul_aide_personnalisee_loge$16, - calcul_aide_personnalisee_loge$17, - calcul_aide_personnalisee_loge$18, - calcul_allocation_logement_loc$0, - calcul_allocation_logement_loc$1, - calcul_allocation_logement_loc$2, - calcul_allocation_logement_loc$3, - calcul_allocation_logement_acc$0, - calcul_allocation_logement_acc$1, - calcul_allocation_logement_acc$2, - calcul_allocation_logement_acc$3, - calcul_allocation_logement_foy$0, - calcul_allocation_logement_foy$1, - calcul_allocation_logement_foy$2, - calcul_allocation_logement_foy$3, - calcul_allocation_logement_out, - calcul_allocation_logement_out$0, - calcul_allocation_logement_in_, - calcul_allocation_logement_in_$0, - ouverture_droits_retraite_out_, - ouverture_droits_retraite_out_$0, - ouverture_droits_retraite_in_t, - ouverture_droits_retraite_in_o, - impaye_depense_logement_out_to, - impaye_depense_logement_out_of, - impaye_depense_logement_in_to_, - impaye_depense_logement_in_of_, - calculette_aides_au_logement_o, - calculette_aides_au_logement_o$0, - calculette_aides_au_logement_i, - calculette_aides_au_logement_i$0, - calculette_aides_au_logement_g$0, - calculette_aides_au_logement_g$1, - calculette_aides_au_logement_g$2, - calculette_aides_au_logement_g$3, - base_mensuelle_allocations_fam$6, - base_mensuelle_allocations_fam$7, - base_mensuelle_allocations_fam$8, - base_mensuelle_allocations_fam$9, - smic_out_to_jsoo$0, - smic_out_of_jsoo$0, - smic_in_to_jsoo$0, - smic_in_of_jsoo$0, - eligibilite_prestations_famili$0, - eligibilite_prestations_famili$1, - eligibilite_prestations_famili$2, - eligibilite_prestations_famili$3, - contributions_sociales_aides_p$4, - calcul_equivalence_loyer_minim$4, - calcul_nombre_part_logement_fo$4, - calcul_nombre_parts_accession_$4, - ouverture_droits_retraite$0, - impaye_depense_logement$0, - base_mensuelle_allocations_fam$10, - smic$2, - calcul_aide_personnalisee_loge$19, - calcul_aide_personnalisee_loge$20, - calcul_aide_personnalisee_loge$21, - eligibilite_aides_personnelle_$4, - ressources_aides_personnelle_l$4, - eligibilite_prestations_famili$4, - calcul_allocation_logement_loc$4, - calcul_allocation_logement_foy$4, - calcul_allocation_logement_acc$4, - calcul_aide_personnalisee_loge$22, - eligibilite_prime_de_demenagem$4, - eligibilite_aide_personnalisee$4, - eligibilite_allocation_logemen$6, - calcul_allocation_logement$0, - calculette_aides_au_logement$0, - calculette_aides_au_logement_g$4]; - caml_register_global - (8860, - Law_source_Aides_logement_api_, - "Law_source__Aides_logement_api_web"); - return} - (globalThis)); - - -//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - var - global_data=runtime.caml_get_global_data(), - Law_source_Allocations_familia= - global_data.Law_source__Allocations_familiales_api_web, - Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, - Law_source_Aides_logement_api_= - global_data.Law_source__Aides_logement_api_web, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; - function t4(param) - {return caml_js_wrap_callback - (function(calculette_aides_au_logement_g) - {function _b_(param) - {var - t1= - caml_call1 - (Law_source_Aides_logement_api_[238], - calculette_aides_au_logement_g); - return t1.aideFinaleOut} - return caml_call1(Runtime_jsoo_Runtime[6],_b_)})} - function t3(param) - {return caml_js_wrap_callback - (function(interface_allocations_familial) - {function _a_(param) - {var - t0= - caml_call1 - (Law_source_Allocations_familia[51], - interface_allocations_familial); - return t0.iMontantVerseOut} - return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} - caml_call1 - (Js_of_ocaml_Js[47], - {"eventsManager":Runtime_jsoo_Runtime[1], - "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), - "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); - var Dune_exe_Api_web=[0]; - runtime.caml_register_global(12,Dune_exe_Api_web,"Dune__exe__Api_web"); - return} - (globalThis)); - - -//# 1 "../../.js/stdlib/std_exit.cmo.js" -(function(globalThis) - {"use strict"; - var runtime=globalThis.jsoo_runtime; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib; - caml_call1(Stdlib[103],0); - var Std_exit=[0]; - runtime.caml_register_global(1,Std_exit,"Std_exit"); - return} - (globalThis)); - - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsImNhbWxfYXJndiIsIm1haW4iLCJhcmd2IiwiYXJnczIiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfanNfZXZhbF9zdHJpbmciLCJldmFsIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsIm1sX3pfbmVnIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJtbF96X29mX2ludCIsIm1sX3pfb2ZfaW50MzIiLCJpMzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX2ludDY0X3NoaWZ0X2xlZnQiLCJjYW1sX25vdGVxdWFsIiwibWxfel9hYnMiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIiwiY2FtbF9pc19qcyIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsIm1sX3pfc3FydCIsInVuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwibWxfel9wcm9iYWJfcHJpbWUiLCJ1bml4X21rdGltZSIsInRtIiwidG0yIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9ieXRlc19nZXQ2NCIsIm1sX3pfcmVtIiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJtbF96X211bF9vdmVyZmxvd3MiLCJtbF96X3RvX2ludCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9oYXNoX21peF9qc2J5dGVzIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfYnl0ZXNfbGVzc3RoYW4iLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9nY19xdWlja19zdGF0IiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfbWxfaW5wdXRfaW50IiwiY2FtbF9ncl9kaXNwbGF5X21vZGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N0ZF9vdXRwdXQiLCJzbGVuIiwianNfcHJpbnRfc3RkZXJyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImluZm8iLCJjYW1sX3N5c19vcGVuIiwiX3Blcm1zIiwibWxfel9nY2QiLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwiX21hZ2ljIiwiX2Jsb2NrX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsIm1sX3pfbXVsIiwibWxfel9oYW1kaXN0IiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsIml0ZW0iLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwibWxfel9sb2dhbmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm11bCIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ncl9zaWdpb19zaWduYWwiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwibWxfel9kaXZfcmVtIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX3NldF9saW5lX3dpZHRoIiwiY2FtbF9ncl9zZXRfZm9udCIsImNhbWxfZ3Jfc2V0X2NvbG9yIiwiY29udmVydCIsIm51bWJlciIsImNfc3RyIiwiY2FtbF9ncl9tb3ZldG8iLCJjYW1sX2dyX3Jlc2l6ZV93aW5kb3ciLCJjYW1sX2dyX3N0YXRlX2luaXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UiLCJidCIsImNhbWxfZ3JfbGluZXRvIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2RhdGEiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkIiwiY2FtbF9qc19mcm9tX2Jvb2wiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX2V4cDJfZmxvYXQiLCJjYW1sX2dyX2Nsb3NlX2dyYXBoIiwiY2FtbF9jcmVhdGVfc3RyaW5nIiwiY2FtbF9tZDVfc3RyaW5nIiwiY2FtbF9tZDVfY2hhbiIsImNoYW5fbGVuIiwiY2FtbF9vYmpfZHVwIiwiY2FtbF93ZWFrX2dldF9jb3B5IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwic3RyaW5nIiwianNzdHJpbmciLCJpZCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9lcGhlX2dldF9kYXRhIiwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUiLCJjYW1sX3RyYW1wb2xpbmVfcmV0dXJuIiwiY2FtbF9tbF9pc19idWZmZXJlZCIsImNhbWxfYXJyYXlfYXBwZW5kIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJtbF96X25leHRwcmltZSIsImNhbWxfanNfZXhwciIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJtbF96X3N1YiIsIm1sX3pfZmRpdiIsIm1sX3pfdG9fYml0cyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2hhc2hfdW5pdl9wYXJhbSIsImNvdW50IiwibGltaXQiLCJvYmoiLCJoYXNoX2FjY3UiLCJoYXNoX2F1eCIsImpzYnl0ZXMiLCJjYW1sX3N0cmluZ19lcXVhbCIsIm1sX3pfZGl2ZXhhY3QiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJyZV9yZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJjdXIiLCJjYW1sX3B1cmVfanNfZXhwciIsImJsaXRfbmF0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMiLCJiYTEiLCJieXRlczIiLCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIiwianNvb19jcmVhdGVfZmlsZV9leHRlcm4iLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmciLCJjYW1sX21ha2VfdmVjdCIsImluaXQiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfbWxfaW5wdXRfY2hhciIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3phcml0aF9tYXJzaGFsIiwiYmxvY2siLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwiY2FtbF9pc19wcmludGFibGUiLCJjYW1sX2VxdWFsIiwicmVfcGFydGlhbF9tYXRjaCIsImNhbWxfc3lzX3JhbmRvbV9zZWVkIiwiYnVmZiIsIm5vdyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8yIiwid2luX2hhbmRsZV9mZCIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJ3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJtbF96X2ZpdHNfbmF0aXZlaW50IiwiY2FtbF9ncl9hcmNfYXV4IiwiY3R4IiwiY3giLCJjeSIsInJ5IiwicngiLCJyb3QiLCJ4UG9zIiwieVBvcyIsInhQb3NfcHJldiIsInlQb3NfcHJldiIsInNwYWNlIiwiZGVsdGEiLCJjYW1sX2dyX2ZpbGxfYXJjIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJtbF96X29mX25hdGl2ZWludCIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJnZXQzMiIsImNhbWxfaW5wdXRfdmFsdWUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJtbF96X2ludmVydCIsIm1sX3pfcG93bSIsInozIiwiaW52IiwibWxfel9wb3dtX3NlYyIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsInVuaXhfZ210aW1lIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9zeXNfZ2V0X2NvbmZpZyIsInVuaXhfdGltZSIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX2FzaW5oX2Zsb2F0IiwibWxfel9oYXNoIiwiYWNjIiwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciIsImFiIiwiY2FtbF9tb2QiLCJjYW1sX2JhX2luaXQiLCJyZV9zdHJpbmdfbWF0Y2giLCJCaWdTdHJpbmdSZWFkZXIiLCJjYW1sX2dyX2R1bXBfaW1hZ2UiLCJjYW1sX2JhX2dldF9nZW5lcmljIiwiY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSIsImNhbWxfZm9ybWF0X2Zsb2F0IiwidG9GaXhlZCIsImRwIiwicHJlYyIsImNhbWxfbW91bnRfYXV0b2xvYWQiLCJtbF96X2VxdWFsIiwibWxfel9maXRzX2ludDY0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nIiwibWxfel9zcXJ0X3JlbSIsImRpZmYiLCJjYW1sX3N0cmluZ19sZXNzdGhhbiIsImNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuIiwiY2FtbF9kaXYiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfbWVtcHJvZl9zdGFydCIsInJhdGUiLCJzdGFja19zaXplIiwidHJhY2tlciIsIm1sX3pfcGVyZmVjdF9zcXVhcmUiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfanNfdG9fYm9vbCIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IiwibWxfel90b19uYXRpdmVpbnQiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImZzIiwiY2hhbm5lbCIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImNhbWxfcm91bmRfZmxvYXQiLCJtbF96X29mX2JpdHMiLCJiYXNlMSIsInVuaXhfc3RhdCIsInVuaXhfc3RhdF82NCIsImNhbWxfb2pzX25ld19hcnIiLCJGIiwiY29tcGxlbWVudF9uYXQiLCJtbF96X2xvZ3hvciIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zaW5oX2Zsb2F0IiwiY2FtbF9sZGV4cF9mbG9hdCIsImNhbWxfZ3Jfc3RhdGVfc2V0IiwiY2FtbF96YXJpdGhfdW5tYXJzaGFsIiwibmVnYXRlIiwibWxfel90cmFpbGluZ196ZXJvcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJsYW5kX2RpZ2l0X25hdCIsImNhbWxfaW50NjRfbW9kIiwidW5peF9yZWFkbGluayIsImNhbWxfb2JqX3NldF90YWciLCJjYW1sX2ludDMyX2Jzd2FwIiwid2luX3N0YXJ0dXAiLCJjYW1sX2JhX3NldF8zIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX3VubW91bnQiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJpbWFnZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3N0cmluZ19zZXQiLCJjYW1sX3N5c19ybWRpciIsImNhbWxfbWxfcG9zX291dCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMiLCJjYW1sX2pzX29iamVjdCIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImNhbWxfd2Vha19ibGl0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJtbF96X3RvX2ludDMyIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsInVuaXhfZ2V0cHd1aWQiLCJtbF96X2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJjYW1sX29ial90YWciLCJGdW5jdGlvbiIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm1sX3pfcHJlZCIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwibWxfel9leHRyYWN0IiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF91cGRhdGVfZHVtbXkiLCJjYW1sX2FycmF5X2ZpbGwiLCJtbF96X2luc3RhbGxfZnJhbWV0YWJsZSIsImNhbWxfc3lzX21rZGlyIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX3JlYWRfZmlsZV9jb250ZW50IiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJvcmlnaW4iLCJldmVudCIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJ6ZXJvJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwibWluX2ludCQyIiwibWF4X2ludCQyIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJsb2NmbXQiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiemVybyQ0Iiwib25lJDQiLCJpIiwiZXJhc2VfcmVsIiwicmVzdCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsInJlc3QkMyIsInJlc3QkNCIsInJlc3QkNSIsInJlc3QkNiIsInJlc3QkNyIsInR5IiwicmVzdCQ4IiwidHkxIiwicmVzdCQ5IiwicmVzdCQxMCIsInJlc3QkMTEiLCJyZXN0JDEyIiwicmVzdCQxMyIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInBhZCQwIiwicHJlYyIsInBhZCQxIiwiaWNvbnYiLCJwcmVjJDAiLCJwYWQkMiIsImljb252JDAiLCJwcmVjJDEiLCJwYWQkMyIsImljb252JDEiLCJwcmVjJDIiLCJwYWQkNCIsImljb252JDIiLCJwcmVjJDMiLCJwYWQkNSIsImZjb252IiwicGFkJDYiLCJzdHIiLCJjaHIiLCJmbXR0eSIsInBhZCQ3IiwiZm10dHkkMCIsInBhZCQ4IiwicmVzdCQxNCIsInJlc3QkMTUiLCJyZXN0JDE2IiwiZm10aW5nX2xpdCIsInJlc3QkMTciLCJmbXRpbmdfZ2VuIiwicmVzdCQxOCIsInJlc3QkMTkiLCJjaGFyX3NldCIsIndpZHRoX29wdCIsInJlc3QkMjAiLCJjb3VudGVyIiwicmVzdCQyMSIsInJlc3QkMjIiLCJpZ24iLCJyZXN0JDIzIiwiZiIsImFyaXR5IiwidiIsInIiLCJjdXIiLCJzZWVuIiwibiIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwibWF4X2ludCIsIm1pbl9pbnQiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJiIiwiYm9vbF9vZl9zdHJpbmciLCJib29sX29mX3N0cmluZ19vcHQiLCJzdHJpbmdfb2ZfaW50IiwiaW50X29mX3N0cmluZ19vcHQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsImwiLCJpJDAiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwiYXBwZW5kIiwidGwiLCJoZCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiaXRlciIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlX2luIiwiY2xvc2VfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsInBvc19pbiIsInNlZWtfaW4iLCJpbnB1dF92YWx1ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF9ieXRlIiwiaW5wdXRfY2hhciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCQwIiwic2VxMSIsInNlcTIiLCJtYXAiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwibm9uZSIsInNvbWUiLCJ2YWx1ZSIsIm8iLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDAiLCJmb2xkIiwiaXRlciQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJlcXVhbCIsImVxIiwibzAiLCJvMSIsInYxIiwidjAiLCJjb21wYXJlIiwiY21wIiwidG9fcmVzdWx0IiwidG9fbGlzdCIsInRvX3NlcSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAkMSIsInYkMCIsImZvbGQkMCIsImVxdWFsJDAiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSQwIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMiIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMSIsInIwIiwicjEiLCJjb21wYXJlJDEiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDIiLCJjb21wYXJlJDIiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsInMkMCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkMyIsImMxIiwiYzIiLCJlcXVhbCQzIiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ0IiwiY29tcGFyZSQ0IiwiaGFzaCIsIm1hdGNoJDEiLCJsZW5ndGgiLCJwYXJhbSQwIiwiY29ucyQwIiwibnRoIiwibCQwIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJwYXJhbSIsImFjY3UkMSIsImEyIiwiYTEiLCJwIiwicGFpciIsInJlc3VsdCIsInhzIiwieCQwIiwicnkiLCJyeCIsInQyIiwiaDIiLCJ0MSIsImgxIiwicmV2X3NvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwic29ydCIsInRsJDAiLCJjJDAiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJhY2N1JDIiLCJhdXgiLCJ0YWlsIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwiYWJzJDAiLCJtYXhfaW50JDAiLCJtaW5faW50JDAiLCJsb2dub3QiLCJlcXVhbCQ2IiwiY29tcGFyZSQ2IiwibWluJDEiLCJtYXgkMSIsInRvX3N0cmluZyQxIiwic3ltYm9sJDAiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJvZnMxIiwib2ZzMiIsInNlcCIsInNlcGxlbiIsImRzdCIsImlzX3NwYWNlIiwiaiIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaXNfc3BhY2UkMCIsImluZGV4X3JlYyQwIiwiaW5kZXhfcmVjX29wdCQwIiwicmluZGV4X3JlYyQwIiwicmluZGV4X3JlY19vcHQkMCIsImciLCJlcXVhbCQ5IiwiY29tcGFyZSQ5IiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwicG9zIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwibGF6eV90YWciLCJjbG9zdXJlX3RhZyIsIm9iamVjdF90YWciLCJpbmZpeF90YWciLCJmb3J3YXJkX3RhZyIsIm5vX3NjYW5fdGFnIiwiYWJzdHJhY3RfdGFnIiwic3RyaW5nX3RhZyIsImRvdWJsZV90YWciLCJkb3VibGVfYXJyYXlfdGFnIiwiY3VzdG9tX3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwibGVuZ3RoJDAiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJvMiIsInN4Iiwic3kiLCJpbml0IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsInRyaWNrbGVkb3duIiwidHJpY2tsZSIsImJ1YmJsZWRvd24iLCJidWJibGUiLCJpJDIiLCJlJDAiLCJmYXRoZXIiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInQiLCJ6ZXJvJDAiLCJvbmUkMCIsIm1pbnVzX29uZSQwIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJwaSIsImlzX2ludGVnZXIiLCJzdWNjJDAiLCJwcmVkJDAiLCJlcXVhbCQxMCIsIm1pbiQyIiwibWF4JDIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsImhhc2gkMCIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJtYWtlJDIiLCJpbml0JDMiLCJhcHBlbmQkMiIsImNvbmNhdCQzIiwiaGxlbiIsInN1YiQyIiwiY29weSQyIiwiZmlsbCQxIiwiYmxpdCQyIiwic3JjIiwic29mcyIsImRvZnMiLCJ0b19saXN0JDIiLCJvZl9saXN0JDAiLCJoIiwiaXRlciQ2IiwiaXRlcjIkMSIsIm1hcCQ3IiwibWFwMiQxIiwiaXRlcmkkMyIsIm1hcGkkMyIsImZvbGRfbGVmdCQ0IiwiZm9sZF9yaWdodCQzIiwiZXhpc3RzJDMiLCJmb3JfYWxsJDMiLCJtZW0kMSIsIm1lbV9pZWVlIiwic29ydCQwIiwic3RhYmxlX3NvcnQiLCJ0b19zZXEkNSIsInRvX3NlcWkkMiIsIm9mX3NlcSQzIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJ6ZXJvJDEiLCJvbmUkMSIsIm1pbnVzX29uZSQxIiwic3VjYyQxIiwicHJlZCQxIiwiYWJzJDEiLCJtaW5faW50JDEiLCJtYXhfaW50JDEiLCJsb2dub3QkMCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyQzIiwib2Zfc3RyaW5nX29wdCQwIiwiY29tcGFyZSQxMCIsImVxdWFsJDExIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJtaW4kMyIsIm1heCQzIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInN1Y2MkMiIsInByZWQkMiIsImFicyQyIiwibG9nbm90JDEiLCJtYXhfaW50JDMiLCJ1bnNpZ25lZF90b19pbnQkMCIsInRvX3N0cmluZyQ0Iiwib2Zfc3RyaW5nX29wdCQxIiwiY29tcGFyZSQxMSIsImVxdWFsJDEyIiwidW5zaWduZWRfY29tcGFyZSQwIiwibWluJDQiLCJtYXgkNCIsInVuc2lnbmVkX2RpdiQwIiwidW5zaWduZWRfcmVtJDAiLCJ6ZXJvJDMiLCJvbmUkMyIsIm1pbnVzX29uZSQzIiwic3VjYyQzIiwicHJlZCQzIiwiYWJzJDMiLCJtaW5faW50JDMiLCJtYXhfaW50JDQiLCJsb2dub3QkMiIsInVuc2lnbmVkX3RvX2ludCQxIiwidG9fc3RyaW5nJDUiLCJvZl9zdHJpbmdfb3B0JDIiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDEiLCJtaW4kNSIsIm1heCQ1IiwidW5zaWduZWRfZGl2JDEiLCJ1bnNpZ25lZF9yZW0kMSIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJzdGgiLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwiZnJvbV9zdHJpbmckMCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJjbWQkMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJzcGxpdCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJmb3JfYWxsIiwiZXhpc3RzIiwicHYiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNhcmRpbmFsIiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJmaW5kIiwiZmluZF9maXJzdCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJvZl9saXN0Iiwic3ViIiwibCQzIiwieDAiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJtYXBpIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwibGVuZ3RoJDEiLCJpdGVyJDciLCJmb2xkJDIiLCJ0b19zZXEkNiIsIm9mX3NlcSQ0IiwiY3JlYXRlJDEiLCJjbGVhciQwIiwiY2VsbCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQwIiwibGVuZ3RoJDIiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwicmFpc2VfdW5kZWZpbmVkIiwiZm9yY2VfbGF6eV9ibG9jayIsImJsayIsImNsb3N1cmUiLCJmb3JjZV92YWxfbGF6eV9ibG9jayIsImZvcmNlIiwibHp2IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcCQ4IiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJwZWVrJDAiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsImVtcHR5JDIiLCJpdGVyJDkiLCJzdHJtIiwiZnJvbSIsIm9mX2xpc3QkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzJDAiLCJvZl9jaGFubmVsIiwiaWFwcCIsImljb25zIiwiaXNpbmciLCJsYXBwIiwibGNvbnMiLCJsc2luZyIsInNlbXB0eSIsInNsYXp5IiwiZHVtcF9kYXRhIiwiZHVtcCIsImNyZWF0ZSQyIiwiY29udGVudHMiLCJ0b19ieXRlcyQwIiwic3ViJDMiLCJibGl0JDMiLCJudGgkMCIsImxlbmd0aCQzIiwiY2xlYXIkMSIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDAiLCJwb3MkMSIsImFkZF91dGZfMTZiZV91Y2hhciIsImhpIiwibG8iLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsImkkNyIsImN1cnJlbnQiLCJpJDgiLCJvcGVuaW5nIiwiaSQ2IiwibGltJDAiLCJpJDMiLCJzdG9wIiwiaSQ0IiwiaSQ1IiwiayQyIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDkiLCJpJDEwIiwiaSQxMSIsInRydW5jYXRlIiwidG9fc2VxJDgiLCJ0b19zZXFpJDMiLCJhZGRfc2VxJDEiLCJvZl9zZXEkNiIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsInN1Yl9mbXR0eSIsInN1Yl9mbXR0eSQwIiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwiY2hyJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQwIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwidHJhbnMiLCJyZXN0MiIsInJlc3QyJDAiLCJyZXN0MiQxIiwicmVzdDIkMiIsInJlc3QyJDMiLCJyZXN0MiQ0IiwicmVzdDIkNSIsInJlc3QyJDYiLCJyZXN0MiQ3IiwidHkyJDAiLCJyZXN0MiQ4IiwidHkyMiIsInR5MjEiLCJmbXR0eV9yZWxfZGV0IiwiZjQiLCJmMiIsInJlc3QyJDkiLCJyZXN0MiQxMCIsInJlc3QyJDExIiwicmVzdDIkMTIiLCJyZXN0MiQxMyIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwiamQiLCJkaiIsImdhIiwiYWciLCJkZSQ5IiwiZWQkOSIsImFmJDkiLCJmYSQ5IiwiZGUkMTAiLCJlZCQxMCIsImFmJDEwIiwiZmEkMTAiLCJkZSQxMSIsImVkJDExIiwiYWYkMTEiLCJmYSQxMSIsImRlJDEyIiwiZWQkMTIiLCJhZiQxMiIsImZhJDEyIiwiZGUkMTMiLCJlZCQxMyIsImFmJDEzIiwiZmEkMTMiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfY3VzdG9tIiwiYXJpdHkkMCIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwidHlfcmVzdCQwIiwicHJlY190eSQwIiwidHlfcmVzdCQxIiwicHJlY190eSQxIiwidHlfcmVzdCQyIiwicHJlY190eSQyIiwidHlfcmVzdCQzIiwicHJlY190eSQzIiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwidHkkMCIsImZtdHR5JDQiLCJmbXR0eSQ1IiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInR5cGVfZm9ybWF0X2dlbiIsImZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJmbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDMiLCJmbXQkMiIsInN1Yl9mbXR0eV9yZXN0JDQiLCJmbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQ1IiwiZm10JDMiLCJzdWJfZm10dHlfcmVzdCQ2IiwiZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNyIsImZtdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsImZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJmbXQkNSIsInN1Yl9mbXR0eV9yZXN0JDEwIiwiZm10dHlfcmVzdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTEiLCJmbXQkNiIsInN1Yl9mbXR0eV9yZXN0JDEyIiwiZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJmbXQkNyIsInN1Yl9mbXR0eV9yZXN0JDE0IiwiZm10dHlfcmVzdCQ3Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwiZm10JDgiLCJzdWJfZm10dHlfcmVzdCQxNiIsImZtdHR5X3Jlc3QkOCIsInN1YjJfZm10dHkkMSIsInN1YjFfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNyIsInN1YjJfZm10dHkkMiIsInN1YjFfZm10dHkkMCIsImZtdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJmbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxOSIsImZtdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDIwIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDIxIiwiZm10JDExIiwic3ViX2ZtdHR5X3Jlc3QkMjIiLCJmbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJmbXQkMTIiLCJzdWJfZm10dHlfcmVzdCQyNCIsImZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQyNSIsImZtdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDI2IiwiZm10X3Jlc3QiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdF9yZXN0JDIiLCJmbXRfcmVzdCQzIiwiZm10X3Jlc3QkNCIsImZtdF9yZXN0JDUiLCJwcmVjJDQiLCJmbXR0eSQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInByZWMkNiIsImZtdHR5JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicHJlYyQ4IiwiZm10dHkkOCIsImZtdF9yZXN0JDgiLCJmbXR0eSQ5IiwiZm10X3Jlc3QkOSIsImZtdHR5JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXR0eSQxMSIsImZtdF9yZXN0JDExIiwiZm10dHkkMTIiLCJmbXRfcmVzdCQxMiIsImZtdHR5JDEzIiwic3ViX2ZtdHR5MSIsImZtdF9yZXN0JDEzIiwic3ViX2ZtdHR5JDEiLCJmbXR0eSQxNCIsImZtdCQxNCIsImZtdF9yZXN0JDE0IiwiZm10dHkkMTUiLCJmbXQkMTUiLCJmbXRfcmVzdCQxNSIsImZtdHR5JDE2IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNyIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eTMiLCJmbXQzIiwiZm10MSQwIiwiZm10dHkyJDAiLCJmbXQyJDAiLCJmbXR0eTMkMCIsImZtdDMkMCIsImZtdHR5X3Jlc3QkMTMiLCJmbXRfcmVzdCQxOCIsImZtdHR5JDE4IiwiZm10JDE4IiwiZm10dHlfcmVzdCQxNCIsImZtdF9yZXN0JDE5IiwiZm10dHkkMTkiLCJmbXQkMTkiLCJmbXR0eV9yZXN0JDE1IiwiZm10X3Jlc3QkMjAiLCJmbXR0eSQyMCIsImZtdCQyMCIsInR5cGVfaWdub3JlZF9wYXJhbV9vbmUiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjEiLCJmbXQkMjEiLCJzdWJfZm10dHkkMiIsInN1Yl9mbXR0eSQzIiwiZm10dHkkMjIiLCJmbXQkMjIiLCJzdWJfZm10dHkkNCIsInR5cGVfZm9ybWF0IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDIiLCJwJDMiLCJwJDQiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsInBhcnNlX2x3b3JkIiwicGFyc2VfaW50Iiwid3N0YXJ0Iiwid2VuZCIsImJveF9uYW1lIiwibnN0YXJ0IiwibmVuZCIsImluZGVudCIsImV4cF9lbmQiLCJib3hfdHlwZSIsIm1ha2VfcGFkZGluZ19mbXRfZWJiIiwibWFrZV9wYWRwcmVjX2ZtdF9lYmIiLCJmbXRfZWJiX29mX3N0cmluZyIsImxlZ2FjeV9iZWhhdmlvciIsImZsYWciLCJsZWdhY3lfYmVoYXZpb3IkMCIsImludmFsaWRfZm9ybWF0X21lc3NhZ2UiLCJ1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQiLCJlbmRfaW5kIiwiaW52YWxpZF9mb3JtYXRfd2l0aG91dCIsImV4cGVjdGVkX2NoYXJhY3RlciIsImV4cGVjdGVkIiwiYWRkX2xpdGVyYWwiLCJsaXRfc3RhcnQiLCJzaXplIiwicGFyc2VfcG9zaXRpdmUiLCJzdHJfaW5kJDAiLCJzdHJfaW5kJDEiLCJwYXJzZV9pbnRlZ2VyIiwibmV4dF9pbmQiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBjdF9pbmQiLCJvcHRpb24iLCJzdWJmbXQiLCJjb21wdXRlX2ludF9jb252IiwicGx1cyIsInNwYWNlIiwicGx1cyQwIiwic3BhY2UkMCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2VuZCIsInN0cl9pbmQkMiIsInN1Yl9lbmQkMCIsInN0cl9pbmQkMyIsInN1Yl9lbmQkMSIsInN0cl9pbmQkNCIsInN0cl9pbmQkNSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsInBhcnNlX21hZ2ljX3NpemUiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJwYXJzZSIsInBhcnNlX2dvb2RfYnJlYWsiLCJmb3JtYXR0aW5nX2xpdCQwIiwic3RyX2luZF80Iiwic3RyX2luZF81IiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2ZtdCIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJwYXJzZV9mbGFncyIsIm1pbnVzIiwic2V0X2ZsYWciLCJuZXdfaW5kIiwicGFyc2VfYWZ0ZXJfcGFkZGluZyIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJtaW51cyQwIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJpZ25vcmVkJDIiLCJjb3VudGVyJDAiLCJpZ25vcmVkJDYiLCJpZ25vcmVkJDciLCJhZGRfcmFuZ2UiLCJmYWlsX3NpbmdsZV9wZXJjZW50IiwicGFyc2VfY2hhcl9zZXRfY29udGVudCIsInBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIkMCIsInBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIiLCJyZXZlcnNlIiwiY2hhcl9zZXQkMSIsImlnbm9yZWQkOSIsImNoYXJfZm9ybWF0IiwiZm10X3Jlc3QkMjEiLCJmbXRfcmVzdCQyMiIsInBhZCQ5IiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJwYWQkMTAiLCJmbXRfcmVzdCQyNSIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Iiwia2ZwcmludGYiLCJrYnByaW50ZiIsImlrZnByaW50ZiIsImZwcmludGYiLCJicHJpbnRmIiwiaWZwcmludGYiLCJpYnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJhc3NvYzMiLCJ5MiIsInkxIiwic3BsaXQkMSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDIiLCJ1c2FnZV9iIiwiZXJybXNnIiwiZG9jIiwic3BlYyIsImtleSIsInVzYWdlX3N0cmluZyIsInVzYWdlIiwiYm9vbF9vZl9zdHJpbmdfb3B0JDAiLCJpbnRfb2Zfc3RyaW5nX29wdCQwIiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXyIsImFsbG93X2V4cGFuZCIsImFyZ3YiLCJhbm9uZnVuIiwiaW5pdHBvcyIsImNvbnZlcnRfZXJyb3IiLCJwcm9nbmFtZSIsImZvbGxvdyQwIiwiYWN0aW9uIiwia2V5d29yZCIsIm5vX2FyZyQwIiwiZm9sbG93Iiwibm9fYXJnIiwiZ2V0X2FyZyQwIiwiZ2V0X2FyZyIsImNvbnN1bWVfYXJnJDAiLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiQwIiwidHJlYXRfYWN0aW9uIiwiZiQwIiwiZiQxIiwiciQxIiwiZiQyIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsInRyaW0iLCJmaWxlIiwid29yZHMiLCJzdGFzaCIsIndvcmQiLCJyZWFkX2FyZyIsInJlYWRfYXJnMCIsIndyaXRlX2F1eCIsImFyZ3MiLCJ3cml0ZV9hcmciLCJ3cml0ZV9hcmcwIiwicHJpbnRlcnMiLCJmaWVsZCIsIm90aGVyX2ZpZWxkcyIsInVzZV9wcmludGVycyIsImNvbnYiLCJ0b19zdHJpbmdfZGVmYXVsdCIsImNoYXIkMCIsImxpbmUiLCJjaGFyJDEiLCJsaW5lJDAiLCJmaWxlJDAiLCJjaGFyJDIiLCJsaW5lJDEiLCJmaWxlJDEiLCJjb25zdHJ1Y3RvciIsInRvX3N0cmluZyQ2IiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQwIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImZsaXAiLCJuZWdhdGUiLCJwcm90ZWN0IiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4iLCJ3b3JrX2J0IiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJjcmVhdGVfYWxhcm0iLCJkZWxldGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImZpbGVuYW1lIiwib3V0cHV0JDAiLCJkaWdlc3QiLCJpbnB1dCQwIiwiY2hhcl9oZXgiLCJ0b19oZXgiLCJmcm9tX2hleCIsImRpZ2l0IiwibmV3X3N0YXRlIiwiYXNzaWduIiwic3QxIiwic3QyIiwiZnVsbF9pbml0Iiwic2VlZCIsInNlZWQkMCIsIm1ha2UkMyIsIm1ha2Vfc2VsZl9pbml0IiwiY29weSQ1IiwiYml0cyIsImN1cnZhbCIsIm5ld3ZhbCIsIm5ld3ZhbDMwIiwiaW50YXV4IiwiaW50JDAiLCJib3VuZCIsImZ1bGxfaW50IiwiYjEiLCJiMiIsImJwb3MiLCJiMyIsImJwb3MkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsImluaXQkNCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNsZWFyJDIiLCJyZXNldCQwIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJjb3B5JDYiLCJsZW5ndGgkNCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJjZWxsJDAiLCJuaWR4IiwibWF0Y2giLCJtYXRjaCQwIiwicmVzaXplJDAiLCJvc2l6ZSIsIml0ZXIkMTAiLCJkb19idWNrZXQiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJmb2xkJDQiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRvX3NlcSQ5IiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2FsbCIsImZpbmRfaW5fYnVja2V0IiwicmVwbGFjZSIsInJlcGxhY2Vfc2VxIiwiY29weSIsInN6IiwiaGFzaF9wYXJhbSIsInNlZWRlZF9oYXNoIiwiYWRkJDAiLCJmaW5kJDAiLCJmaW5kX29wdCQxIiwiZmluZF9hbGwkMCIsIm1lbSQyIiwiYWRkX3NlcSQyIiwib2Zfc2VxJDciLCJyZWJ1aWxkIiwid2Vha19jcmVhdGUiLCJsZW5ndGgkNSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0JDAiLCJzZXQkMCIsImdldCQxIiwiZ2V0X2NvcHkiLCJjaGVjayQwIiwiYmxpdCQ0IiwiZmlsbCQyIiwiYXIiLCJlbXB0eWJ1Y2tldCIsImdldF9pbmRleCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImluZGV4IiwiYnVja2V0JDAiLCJoYXNoZXMiLCJuZXdzeiIsIm5ld2J1Y2tldCQwIiwibmV3aGFzaGVzIiwiaGJ1Y2tldCIsInByZXZfbGVuIiwibGl2ZSIsImokMiIsIm5ld2J1Y2tldCIsIm5ld3QiLCJvYiIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsImlkJDAiLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX2xpbmUiLCJicmVha19zYW1lX2xpbmUiLCJmb3JtYXRfcHBfdG9rZW4iLCJzaXplJDAiLCJ0YWJzIiwiYWRkX3RhYiIsImxzIiwidGFnX25hbWUiLCJtYXJrZXIiLCJicmVha3MiLCJmaXRzIiwib2ZmIiwiYm94X3R5cGUkMCIsIm9mZiQwIiwiaW5zZXJ0aW9uX3BvaW50IiwidGFicyQwIiwiZmlyc3QiLCJoZWFkIiwidGFiIiwib2ZmJDEiLCJpbnNlcnRpb25fcG9pbnQkMCIsIndpZHRoJDIiLCJib3hfdHlwZSQxIiwidGJveCIsInRhZ19uYW1lJDAiLCJtYXJrZXIkMCIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJlbnF1ZXVlX3N0cmluZ19hcyIsImluaXRpYWxpemVfc2Nhbl9zdGFjayIsInN0YWNrIiwicXVldWVfZWxlbSIsInNldF9zaXplIiwibGVmdF90b3RhbCIsInNjYW5fcHVzaCIsImVsZW0iLCJwcF9vcGVuX2JveF9nZW4iLCJicl90eSIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9vcGVuX3RhZyIsInBwX2Nsb3NlX3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfaW5kZW50IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl90YWciLCJjbG9zZV90YWciLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9zdHJpbmckMCIsInByaW50X2J5dGVzJDAiLCJwcmludF9pbnQkMCIsInByaW50X2Zsb2F0JDAiLCJwcmludF9jaGFyJDAiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUkMCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2xpc3QiLCJwcF92Iiwib3B0JDAiLCJwcF9zZXAiLCJ2cyIsIm9wdCQxIiwicHBfcHJpbnRfc2VxIiwic2VxJDEiLCJzZXEkMiIsInBwX3ByaW50X3RleHQiLCJwcF9wcmludF9vcHRpb24iLCJwcF9wcmludF9yZXN1bHQiLCJwcF9wcmludF9laXRoZXIiLCJjb21wdXRlX3RhZyIsInRhZ19hY2MiLCJvdXRwdXRfZm9ybWF0dGluZ19saXQiLCJvdXRwdXRfYWNjJDAiLCJidHkiLCJwJDUiLCJwJDYiLCJzdHJwdXRfYWNjJDAiLCJzaXplJDEiLCJrZnByaW50ZiQwIiwiaWtmcHJpbnRmJDAiLCJpZnByaW50ZiQwIiwiZnByaW50ZiQwIiwicHJpbnRmJDAiLCJlcHJpbnRmJDAiLCJrZHByaW50ZiIsImRwcmludGYiLCJrcHJpbnRmIiwic3ByaW50ZiQwIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwicHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1IiwicHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1Iiwic2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiYnByaW50ZiQwIiwicHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwic3RyaW5naWZ5IiwicHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZnVucyIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsInByaW50X29wZW5fdGFnIiwicHJpbnRfY2xvc2VfdGFnIiwic2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwicmVzZXRfdG9rZW4iLCJpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciIsInRva2VuX3N0cmluZyIsInRva2VuX2J1ZmZlciIsInNraXBfY2hhciIsImlnbm9yZV9jaGFyIiwic3RvcmVfY2hhciIsImRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUiLCJjcmVhdGUkNCIsImluYW1lIiwiZnJvbV9zdHJpbmckMSIsImZyb21fZnVuY3Rpb24kMCIsInNjYW5fY2xvc2VfYXRfZW5kIiwic2Nhbl9yYWlzZV9hdF9lbmQiLCJmcm9tX2ljIiwic2Nhbl9jbG9zZV9pYyIsImVvZiIsInN0ZGliIiwib3Blbl9pbl9maWxlIiwiZnJvbV9maWxlIiwiZnJvbV9maWxlX2JpbiIsImZyb21fY2hhbm5lbCQwIiwiY2xvc2VfaW4kMCIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsInJlc3QkMjYiLCJhcmdfcmVzdCIsImtzY2FuZiIsImVmIiwiYXBwbHkiLCJhcmdzJDAiLCJleGMiLCJic2NhbmYiLCJrc3NjYW5mIiwic3NjYW5mIiwic2NhbmYiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsImtmc2NhbmYiLCJmc2NhbmYiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsInBhcmFtcyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJ0YWciLCJjb21wYXJlJDEzIiwiY29tcGFyZSQxNCIsImNvbXBhcmUkMTUiLCJkdW1teV90YWJsZSIsInRhYmxlX2NvdW50IiwiZHVtbXlfbWV0IiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsInJlc2l6ZSQxIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJ0b19saXN0JDMiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld19zbG90IiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSQwIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInRhYmxlcyQyIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwiY2xvJDAiLCJuJDIiLCJuJDMiLCJuJDQiLCJuJDUiLCJuJDYiLCJ4JDMiLCJuJDciLCJ4JDQiLCJuJDgiLCJuJDkiLCJ4JDUiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQ5IiwibiQxMSIsIngkNyIsIm4kMTIiLCJ4JDgiLCJuJDEzIiwibiQxNCIsImUkMyIsIm4kMTUiLCJtJDIiLCJ4JDkiLCJtJDMiLCJuJDE2IiwibSQ0IiwiZSQ0IiwibiQxNyIsIm0kNSIsIm4kMTgiLCJzdGF0cyQwIiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsImNvbW1lbnQiLCJlc2NhcGUiLCJlbmRfZXhwb25lbnRfcGFydCIsImV4cG9uZW50X3BhcnQiLCJudW1iZXIiLCJpZGVudDIiLCJuZWdfbnVtYmVyIiwibmV4dF90b2tlbiQwIiwibWF5YmVfY29tbWVudCIsIm5leHRfdG9rZW4iLCJoa2V5IiwiY2xlYW4iLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwicmVwbGFjZV9idWNrZXQiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImNyZWF0ZSQ1IiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImNyZWF0ZSQ2IiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMiIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiY3JlYXRlJDciLCJsZW5ndGgkNiIsImdldF9rZXkkMSIsImdldF9rZXlfY29weSQxIiwic2V0X2tleSQxIiwidW5zZXRfa2V5JDEiLCJjaGVja19rZXkkMSIsImJsaXRfa2V5JDEiLCJnZXRfZGF0YSQzIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSQwIiwiYWRkX2JzIiwibG9vcCQwIiwibG9vcF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY29uY2F0JDQiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJwcm5nJDAiLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsInRyeV9uYW1lIiwiY291bnRlciQxIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJhZGQkMSIsInN1YiQ0IiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJpbnQzMiQxIiwiaW50NjQkMSIsImludCQyIiwibmF0aXZlaW50JDEiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImluaXQkNSIsImxheW91dCIsImRpbXMiLCJkbGVuIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSQ4IiwiZ2V0JDIiLCJzZXQkMSIsInNpemVfaW5fYnl0ZXMkMCIsIm9mX3ZhbHVlIiwiY3JlYXRlJDkiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkNiIsIm9mX2FycmF5IiwiYmEiLCJjcmVhdGUkMTAiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkNyIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMTEiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDgiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwieW9qc29uX29mX3NvdXJjZV9wb3NpdGlvbiIsInZfbGF3X2hlYWRpbmdzIiwidl9lbmRfY29sdW1uIiwidl9lbmRfbGluZSIsInZfc3RhcnRfY29sdW1uIiwidl9zdGFydF9saW5lIiwidl9maWxlbmFtZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImFyZyQxIiwiYm5kcyQxIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwibW9uZXlfb2ZfY2VudHNfc3RyaW5nIiwiY2VudHMiLCJtb25leV9vZl91bml0c19pbnQiLCJ1bml0cyIsIm1vbmV5X29mX2NlbnRzX2ludGVnZXIiLCJtb25leV90b19mbG9hdCIsIm0iLCJtb25leV9vZl9kZWNpbWFsIiwiZCIsIm1vbmV5X3RvX3N0cmluZyIsIm1vbmV5X3RvX2NlbnRzIiwibW9uZXlfcm91bmQiLCJkZWNpbWFsX29mX3N0cmluZyIsImRlY2ltYWxfdG9fZmxvYXQiLCJkZWNpbWFsX29mX2Zsb2F0IiwiZGVjaW1hbF9vZl9pbnRlZ2VyIiwiZGVjaW1hbF90b19zdHJpbmciLCJtYXhfcHJlY19kaWdpdHMiLCJpIiwic2lnbiIsIm4iLCJpbnRfcGFydCIsIm4kMCIsImRpZ2l0cyIsImxlYWRpbmdfemVyb2VzIiwiZGlnaXQiLCJudW1fbGVhZGluZ196ZXJvZXMiLCJpJDAiLCJmbXQiLCJkZWNpbWFsX3JvdW5kIiwicSIsImRlY2ltYWxfb2ZfbW9uZXkiLCJpbnRlZ2VyX29mX3N0cmluZyIsInMiLCJpbnRlZ2VyX3RvX3N0cmluZyIsImludGVnZXJfdG9faW50IiwiaW50ZWdlcl9vZl9pbnQiLCJpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIiwiZSIsImludGVnZXJfbG9nMiIsInllYXJfb2ZfZGF0ZSIsIm1vbnRoX251bWJlcl9vZl9kYXRlIiwiZGF5X29mX21vbnRoX29mX2RhdGUiLCJkYXRlX29mX251bWJlcnMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJkYXRlX3RvX3N0cmluZyIsImZpcnN0X2RheV9vZl9tb250aCIsImxhc3RfZGF5X29mX21vbnRoIiwiZHVyYXRpb25fb2ZfbnVtYmVycyIsImR1cmF0aW9uX3RvX3N0cmluZyIsInoiLCJ5IiwieCIsImEiLCJ0b19wcmludCIsImwiLCJkdXJhdGlvbl90b195ZWFyc19tb250aHNfZGF5cyIsInlvanNvbl9vZl9ydW50aW1lX3ZhbHVlIiwidjAkNCIsInYwJDUiLCJ2MCQ2IiwidjAiLCJ2MCQ3IiwidjAkMCIsInYwJDgiLCJ2MCQxIiwidjAkOSIsInYwJDIiLCJ2MCQxMCIsInYwJDMiLCJ2MSIsInYwJDExIiwidjAkMTIiLCJ2MSQwIiwidjAkMTMiLCJ2MCQxNCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ0IiwidjAkMTciLCJ2MCQxOCIsInVuZW1iZWRkYWJsZSIsImVtYmVkX3VuaXQiLCJlbWJlZF9ib29sIiwiZW1iZWRfbW9uZXkiLCJlbWJlZF9pbnRlZ2VyIiwiZW1iZWRfZGVjaW1hbCIsImVtYmVkX2RhdGUiLCJlbWJlZF9kdXJhdGlvbiIsImVtYmVkX2FycmF5IiwiZiIsInlvanNvbl9vZl9pbmZvcm1hdGlvbiIsInYiLCJ5b2pzb25fb2ZfdmFyX2RlZiIsInZfZnVuX2NhbGxzIiwidl92YWx1ZSIsInZfbmFtZSIsInZfcG9zIiwieW9qc29uX29mX2Z1bl9jYWxsIiwidl9vdXRwdXQiLCJ2X2JvZHkiLCJ2X2lucHV0Iiwidl9mdW5fbmFtZSIsInlvanNvbl9vZl9ldmVudCIsInZfaW5wdXRzIiwibG9nX3JlZiIsInJlc2V0X2xvZyIsInJldHJpZXZlX2xvZyIsImxvZ19iZWdpbl9jYWxsIiwiaW5mbyIsImxvZ19lbmRfY2FsbCIsImxvZ192YXJpYWJsZV9kZWZpbml0aW9uIiwiZW1iZWQiLCJsb2dfZGVjaXNpb25fdGFrZW4iLCJwb3MiLCJwcF9ldmVudHMiLCJvcHQiLCJwcGYiLCJldmVudHMiLCJzdGgiLCJpc19maXJzdF9jYWxsIiwiZm9ybWF0X3Zhcl9kZWYiLCJ2YXIkMCIsImZvcm1hdF9wb3Nfb3B0IiwiZm9ybWF0X3ZhbHVlIiwiZm9ybWF0X3Zhcl9kZWZzIiwiZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMiLCJ2YXJfd2l0aF9mdW4iLCJmdW5fY2FsbCIsImZvcm1hdF9ldmVudCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsIm5hbWUiLCJhdHRycyIsIm5hbWUkMCIsInZhbHVlIiwiZWx0cyIsInZhcl9kZWZfd2l0aF9mdW4iLCJvdXRwdXQiLCJib2R5IiwiaW5wdXQiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsInJlc3QiLCJib2R5X2N0eCIsInBhcnNlX2V2ZW50cyIsImJvZHlfcmV2IiwicmVzdCQwIiwidmFyX2RlZiIsIm91dHB1dCQwIiwiY3R4IiwiY3R4JDAiLCJ2YXJfbmFtZSIsImxzJDAiLCJjdHgkMSIsInJlc3QkMSIsImN0eCQyIiwiaW5mb3MkMCIsInJlc3QkMiIsImN0eCQzIiwicmVzdCQzIiwidmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSIsImxzIiwiY3R4JDQiLCJpbmZvcyQxIiwicmF3X2V2ZW50cyQwIiwiZnVuX2NhbGxzIiwicmVzdCQ0IiwiaW5mb3MkMiIsImZ1bl9jYWxsJDAiLCJmdW5fY2FsbHMkMSIsImZ1bl9jYWxscyQwIiwicmVzdCQ2IiwidmFsdWUkMCIsIm5hbWUkMiIsInZhcl9jb21wIiwicmVzdCQ1IiwiY3R4JDYiLCJjdHgkNSIsIm1zZyIsImhhbmRsZV9kZWZhdWx0IiwiZXhjZXB0aW9ucyIsImp1c3QiLCJjb25zIiwiYWNjIiwiZXhjZXB0IiwibmV3X3ZhbCIsImhhbmRsZV9kZWZhdWx0X29wdCIsImIiLCJub19pbnB1dCIsInN5bWJvbCIsImkxIiwiaTIiLCJpMV9hYnMiLCJpMl9hYnMiLCJzaWduX2ludCIsInJhdF9yZXN1bHQiLCJyZW1haW5kZXIiLCJyZXMiLCJzeW1ib2wkMCIsIm0xIiwibTIiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJkMSIsImQyIiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4IiwibmJfZGF5MSIsIm5iX2RheTIiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJjb21wYXJlX3BlcmlvZHMiLCJwMSIsInAyIiwicDFfZGF5cyIsInAyX2RheXMiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9sZW5ndGgiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwibnVsbCIsInVuZGVmaW5lZCIsImpzb29fZXhwb3J0cyIsImV2ZW50IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX28iLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9vdXQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX28iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9zbWljX291dCIsImVtYmVkX3NtaWNfaW4iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMCIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwIiwiYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIiwiZW5mYW50X2xlX3BsdXNfYWdlIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW5mYW50cyIsImFjYyIsIml0ZW0iLCJsZV9wbHVzX2FnZSIsInNtaWMiLCJzbWljX2luIiwiZGF0ZV9jb3VyYW50ZSIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJwYXJhbSIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnQiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJub21icmVfbW95ZW5fZW5mYW50cyIsImF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZSQwIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIiwiaV9kYXRlX2NvdXJhbnRlIiwiaV9lbmZhbnRzIiwiaV9yZXNzb3VyY2VzX21lbmFnZSIsImlfcmVzaWRlbmNlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlJDAiLCJpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9uIiwiaV9tb250YW50X3ZlcnNlIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28iLCJhcmciLCJhcmckMCIsImFyZyQxIiwiYXJnJDIiLCJhcmckMyIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlIiwiY29ucyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUiLCJwcmlzZV9lbl9jb21wdGVfdG9fanNvbyIsInByaXNlX2VuX2NvbXB0ZV9vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImFyZyQ0IiwiYXJnJDUiLCJhcmckNiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28iLCJhcmckNyIsImNvbGxlY3Rpdml0ZV9vZl9qc29vIiwiY29sbGVjdGl2aXRlIiwiZW5mYW50X2VudHJlZV90b19qc29vIiwiZW5mYW50X2VudHJlZSIsImVuZmFudF9lbnRyZWVfb2ZfanNvbyIsImVuZmFudF90b19qc29vIiwiZW5mYW50X29mX2pzb28iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF90b18iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCIsImlucHV0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0X3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IiwiZW5mYW50X2xlX3BsdXNfYWdlX291dF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvXyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwic21pY19vdXRfdG9fanNvbyIsInNtaWNfb3V0Iiwic21pY19vdXRfb2ZfanNvbyIsInNtaWNfaW5fdG9fanNvbyIsInNtaWNfaW5fb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwic21pYyQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkNCIsImVtYmVkX3R5cGVfYmFpbGxldXIiLCJlbWJlZF90eXBlX3ByZXQiLCJlbWJlZF90aXR1bGFpcmVfcHJldCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kOCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yOCIsImVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImVtYmVkX2xpbWl0ZV90cmFuY2hlIiwiZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsImVtYmVkX3ByZXN0YXRpb25fcmVjdWUiLCJlbWJlZF90eXBlX2NvbnRyYXRfdHJhdmFpbCIsImVtYmVkX3BhcmVudF9vdV9hdXRyZSIsImVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsImVtYmVkX3BhcmVudGUiLCJlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2kiLCJlbWJlZF9uYXRpb25hbGl0ZSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX3BhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbiIsImVtYmVkX3ZlcnNlbWVudF9hIiwiZW1iZWRfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wiLCJlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlJDAiLCJlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xvIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjIiwiZW1iZWRfY29sbGVjdGl2aXRlJDAiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50IiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvJDAiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkkMCIsImVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJlbWJlZF9wYXRyaW1vaW5lIiwiZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsIiwiZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVuIiwiZW1iZWRfYmFpbGxldXIiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wXyIsImVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbCIsImVtYmVkX2VuZmFudF9hX2NoYXJnZSIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfJDAiLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wXyQxIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF8kMiIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4iLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sJDEiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0iLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0kMCIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiQwIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMCIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQyIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMyIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDUiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQzIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDQiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ2IiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0IiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0JDAiLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF8iLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF8kMCIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQwIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQxIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDIiLCJlbWJlZF9zbWljX291dCQwIiwiZW1iZWRfc21pY19pbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AiLCJleG9uZXJlX2NzZyIsInRhdXhfY3JkcyIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiIsImRhdGVfbmFpc3NhbmNlX2Fzc3VyZSIsImFnZV9vdXZlcnR1cmVfZHJvaXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIiwibW9kZV9vY2N1cGF0aW9uIiwiYWlkZV92ZXJzZWUiLCJtb250YW50X2FwbCIsIm1vbnRhbnRfY2hhcmdlcyIsImRlcGVuc2VfbG9nZW1lbnQiLCJtb250YW50X2RldHRlIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImRlcGVuc2VfbG9nZW1lbnRfYnJ1dGUiLCJ0b3RhbF9lY2hlYW5jZXMiLCJtZW5zdWFsaXRlIiwibG95ZXIiLCJ0b3RhbCIsIm1vbnRhbnRfbG95ZXIiLCJkZXBlbnNlX2xvZ2VtZW50X25ldHRlIiwiZWNoZWFuY2VfcHJldF9icnV0ZSIsIm1lbnN1YWxpdGVfYnJ1dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImxveWVyX2JydXQiLCJsb3llcl9uZXQiLCJzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWUiLCJtb250YW50X2ltcGF5ZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ1Iiwic21pYyQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlIiwibG95ZXJfcHJpbmNpcGFsIiwiYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuIiwiem9uZSIsImxvZ2VtZW50X2VzdF9jaGFtYnJlIiwiYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlIiwidHlwZV9haWRlIiwiY29sb2NhdGlvbiIsInJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlIiwiZnJhY3Rpb25fbDgzMl8zIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2IiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0IiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9uIiwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUiLCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTciLCJsb3llcl9yZWZlcmVuY2UiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2IiwibG9nZW1lbnRfZXN0X2NoYW1icmUkMCIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSQwIiwiY29sb2NhdGlvbiQwIiwicGxhZm9uZF9sb3llcl9kODIzXzE2XzIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgiLCJwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTYiLCJwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2IiwibG95ZXJfZWxpZ2libGUiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWUiLCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlIiwicmFwcG9ydF9sb3llcnMiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWIiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Fycm9uZGkiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGkiLCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50IiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInJlZGV2YW5jZSIsImNvZWZmaWNpZW50X3JfZDgzMl8yNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjQiLCJsb2dlbWVudF9mb3llciIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSQwIiwicGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21iIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzIiwiZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1JDAiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW0iLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgkMSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxIiwibWVuc3VhbGl0ZV9wcmluY2lwYWxlIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50IiwiZGF0ZV9zaWduYXR1cmVfcHJldCIsImxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbiIsImRhdGVfZW50cmVlX2xvZ2VtZW50IiwiY29wcm9wcmlldGUiLCJzaXR1YXRpb25fcjgyMl8xMV8xM18xNyIsInR5cGVfcHJldCIsImFuY2llbm5ldGVfbG9nZW1lbnQiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTAiLCJtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwIiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDAiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEiLCJ0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzEiLCJ0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzEiLCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDEiLCJjb3Byb3ByaWV0ZSQwIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50XyIsInNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGUiLCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXQiLCJzZXVpbF9sODIyXzVfcGF0cmltb2luZSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlIiwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudCIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbiIsInBlcnNvbm5lIiwiY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8kMCIsInBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyIiwiY29uZGl0aW9uX25hdGlvbmFsaXRlIiwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1IiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl8xIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUkMCIsInBhcnRzIiwicGFydHMkMCIsInBhcnRzJDEiLCJwYXJ0cyQyIiwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImFnZV9sMTYxXzE3XzJfc2VjdSIsInByZXN0YXRpb24iLCJhY2MkMCIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCQwIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlX2xvZ2VtZW50JDAiLCJlbGlnaWJpbGl0ZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lX2FfY2hhcmdlIiwicGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jIiwiY29lZmYiLCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGUiLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXMiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJyZXNzb3VyY2VzX2RlbWFuZGV1ciIsInJlc3NvdXJjZXNfY29uam9pbnQiLCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW4iLCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXUiLCJjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW4iLCJwZXJzb25uZXNfYV9jaGFyZ2UiLCJzaXR1YXRpb25fZmFtaWxpYWxlIiwiY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtIiwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXMiLCJkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXQiLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8iLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzgiLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzciLCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIiLCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGEiLCJkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlcyQwIiwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jIiwibG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtIiwiaW5mb3MiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95IiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNSIsIm1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlXyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQwIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDEiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQzIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDQiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ2IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDciLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyIsImVxdWl2YWxlbmNlX2xveWVyIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDIiLCJzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWciLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDIkMCIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzYiLCJzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMiIsImluZm9ybWF0aW9uc19jYWxjdWwiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X21lbnN1YSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfdCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfcyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2xvY2FsXyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NvcHJvcCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdCQwIiwiYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfem9uZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfcCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FuY2llbiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfYyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FpZGVfZiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYSIsImxvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzXyIsImxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVycyIsImxvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZiIsImxvZ2VtZW50X2ZveWVyX2RvdF96b25lIiwibG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFuIiwibG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMiIsImxvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYSIsImxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZSIsImxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50XyIsImxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbCIsImxvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXyIsImxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlXyIsImxvY2F0aWZfZG90X2RhdGVfY291cmFudGUiLCJsb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2EiLCJsb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWwiLCJsb2NhdGlmX2RvdF96b25lIiwibG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1iIiwibG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfIiwibG9jYXRpZl9kb3RfdHlwZV9haWRlIiwibG9jYXRpZl9kb3RfY29sb2NhdGlvbiIsImxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zbyIsImxvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bCIsImxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maSIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSIsImRhdGVfZW1tZW5hZ2VtZW50IiwiZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50IiwiZGVsYWlfYXByZXNfZW1tZW5hZ2VtZW50X2w4MjNfIiwiY29uZGl0aW9uX3JhbmdfZW5mYW50IiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RlbWFuZGV1ciIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2VsaWdpYmlsaXQiLCJkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2UiLCJkYXRlX25haXNzYW5jZSIsImNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudCIsInBsYWZvbmRfZDgyM18yMiIsIm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82IiwicHJvcHJpZXRlIiwicHJvcHJpZXRlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcHJldCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfYyIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQwIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpIiwibG9jYXRpb24iLCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIkMCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiIsImJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbCIsImR1cmVlX2w4NDFfMV8zIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDEiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMCIsInByb3ByaWV0YWlyZSIsImNvbmRpdGlvbl9sb2dlbWVudCIsImVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdSIsImRhdGVfbWFyaWFnZSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQxIiwiZWxpZ2liaWxpdGVfbDg0MV8yIiwiZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NoYXJnZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9jYXRlZ29yaWVfZSIsImxvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kOCIsImxvY2F0aWZfZG90X2NoYW5nZW1lbnRfbG9nZW1lbiIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMiIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQzIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDQiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ2IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ4IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ4IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGUiLCJjYWxjdWxldHRlX2RvdF9tZW5hZ2UiLCJjYWxjdWxldHRlX2RvdF9kZW1hbmRldXIiLCJjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2EiLCJjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlIiwiY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hIiwiY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGUiLCJjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3IiLCJjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGUiLCJjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmYiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMCIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQxIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDIiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMyIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQ0IiwiYWlkZV9maW5hbGUiLCJ0eXBlX2JhaWxsZXVyX3RvX2pzb28iLCJ0eXBlX2JhaWxsZXVyX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyIiwidHlwZV9wcmV0X3RvX2pzb28iLCJ0eXBlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0X3RvX2pzb28iLCJ0aXR1bGFpcmVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXQiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8kMCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV90b19qc29vIiwibGltaXRlX3RyYW5jaGVfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsInByZXN0YXRpb25fcmVjdWVfdG9fanNvbyIsInByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyIsInByZXN0YXRpb25fcmVjdWUiLCJ0eXBlX2NvbnRyYXRfdHJhdmFpbF90b19qc29vIiwidHlwZV9jb250cmF0X3RyYXZhaWxfb2ZfanNvbyIsInR5cGVfY29udHJhdF90cmF2YWlsIiwicGFyZW50X291X2F1dHJlX3RvX2pzb28iLCJwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyIsInBhcmVudF9vdV9hdXRyZSIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsInBhcmVudGVfdG9fanNvbyIsInBhcmVudGVfb2ZfanNvbyIsInBhcmVudGUiLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ciLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ckMCIsIm5hdGlvbmFsaXRlX3RvX2pzb28iLCJuYXRpb25hbGl0ZV9vZl9qc29vIiwibmF0aW9uYWxpdGUiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyQwIiwidmVyc2VtZW50X2FfdG9fanNvbyIsInZlcnNlbWVudF9hX29mX2pzb28iLCJ2ZXJzZW1lbnRfYSIsImRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyIsImRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvbyIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQiLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQkMCIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiQwIiwiYmFpbGxldXJfdG9fanNvbyIsImJhaWxsZXVyIiwiYmFpbGxldXJfb2ZfanNvbyIsInByZXRfdG9fanNvbyIsInByZXQiLCJwcmV0X29mX2pzb28iLCJuZXVmX291X2FuY2llbl90b19qc29vIiwibmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuIiwidHJhbmNoZV9yZXZlbnVfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51IiwidHJhbmNoZV9yZXZlbnVfb2ZfanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsX29mX2pzb28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZV90b19qc28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzbyIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSQwIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlJDAiLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc18iLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyQwIiwiZW5mYW50X2FfY2hhcmdlX3RvX2pzb28iLCJlbmZhbnRfYV9jaGFyZ2UiLCJlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJkZW1hbmRldXJfdG9fanNvbyIsImRlbWFuZGV1cl9vZl9qc29vIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwibG9jYXRpb25fdG9fanNvbyIsImxvY2F0aW9uX29mX2pzb28iLCJwcm9wcmlldGFpcmVfdG9fanNvbyIsInByb3ByaWV0YWlyZV9vZl9qc29vIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2NlIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2NlJDAiLCJwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIiwicGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyIsImluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYSIsImluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYSQwIiwibG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsImxvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2oiLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX29mX2oiLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIiwibW9kZV9vY2N1cGF0aW9uX3RvX2pzb28iLCJtb2RlX29jY3VwYXRpb25fb2ZfanNvbyIsImxvZ2VtZW50X3RvX2pzb28iLCJsb2dlbWVudCIsImxvZ2VtZW50X29mX2pzb28iLCJtZW5hZ2VfdG9fanNvbyIsIm1lbmFnZV9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQyIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDMiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQwIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMiIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQzIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQyIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDMiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMiIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE4IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0XyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXRfJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX3QiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX28iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfdG8iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfb2YiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl90b18iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl8iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28kMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMSIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQyIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDMiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDgiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kOSIsInNtaWNfb3V0X3RvX2pzb28kMCIsInNtaWNfb3V0X29mX2pzb28kMCIsInNtaWNfaW5fdG9fanNvbyQwIiwic21pY19pbl9vZl9qc29vJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQxIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2djLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9nZW5sZXgubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvcnVudGltZXMvb2NhbWwvcnVudGltZS5tbCIsIiIsIiIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fYnVpbGQvZGVmYXVsdC9ydW50aW1lcy9qc29vL3J1bnRpbWUubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fYnVpbGQvZGVmYXVsdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnQubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50X2FwaV93ZWIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9hcGlfd2ViLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5t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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7SXdCbldEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NrQktDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NvOUVNQztLQVFRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NsbEZkQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3NFRUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQS9FWUM7S0FtSFpDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0FtSUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0N4UEZDO0tBQ0FDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQzBmSUM7O09Ba0NZOztPQWxDWjtnQkFLSixJQURRQyxjQUNBLG9CQURBQTtnQkFHUixJQURVQyxnQkFDQSxvQkFEQUE7Z0JBR1YsSUFET0MsZ0JBQ0Esb0JBREFBO2dCQUdQLElBRFNDLGdCQUNBLG9CQURBQTtnQkFLVCxJQURhQyxnQkFDQSxvQkFEQUE7Z0JBRGIsSUFEU0MsZ0JBQ0Esb0JBREFBO2dCQUtULElBRFNDLGdCQUNBLG9CQURBQTtnQkFHVCxJQURRQyxnQkFDQSxvQkFEQUE7O2NBRVdDLGdCQUFKQyxZQUNJLFVBREpBLEdBQ0ksVUFEQUQ7O2NBRVNFLGdCQUFYQztVQUNVLFVBRFZBLFFBQ1UsVUFEQ0Q7aUJBRzVCLElBRFNFLGdCQUNBLHFCQURBQTtpQkFHVCxJQURTQyxpQkFDQSxxQkFEQUE7aUJBR1QsSUFET0MsaUJBQ0EscUJBREFBO2lCQUdQLElBRFVDLGlCQUNBLHFCQURBQTtpQkFHVixJQURrQkMsaUJBQ0EscUJBREFBLFVBRVU7YUFpQnhCQyxhQVdKQyxPQUFPQztNQUFVLFVBQWpCRDtPQStCZ0IsT0EvQlRDOztPQUFVLE9BQWpCRDtnQkFFQSxJQURRbEIsS0FEUmtCLFVBRVEsdUJBREFsQixLQUREbUI7Z0JBSVAsSUFEVWxCLE9BSFZpQixVQUlVLHVCQURBakIsT0FISGtCO2dCQU1QLElBRE9qQixPQUxQZ0IsVUFNTyx1QkFEQWhCLE9BTEFpQjtnQkFRUCxJQURTaEIsT0FQVGUsVUFRUyx1QkFEQWYsT0FQRmdCO2dCQVVQLElBRGFmLE9BVGJjLFVBVWEsdUJBREFkLE9BVE5lO2dCQVlQLElBRFNkLE9BWFRhLFVBWVMsdUJBREFiLE9BWEZjO2dCQWNQLElBRFNiLE9BYlRZLFVBY1MsdUJBREFaLE9BYkZhO2dCQWdCUCxJQURRWixPQWZSVyxVQWdCUSx1QkFEQVgsT0FmRFk7O2NBMkJZWCxPQTNCbkJVLFVBMkJlVCxHQTNCZlM7VUE0Qm1CLFVBREpULEdBQ0ksYUFEQUQsT0EzQlpXOztjQTZCb0JULE9BN0IzQlEsVUE2QnNCRSxJQTdCdEJGLFVBNkJpQlAsSUE3QmpCTztVQThCMkIsVUFEVlAsSUFBS1MsSUFDSyxhQURBVixPQTdCcEJTO2lCQWtCUCxJQURTUCxPQWpCVE0sVUFrQlMsd0JBREFOLE9BakJGTzs7VUFvQlAsSUFEU04sUUFuQlRLLFVBb0JTLHdCQURBTCxRQW5CRk07O1VBc0JQLElBRE9MLFFBckJQSSxVQXNCTyx3QkFEQUosUUFyQkFLOztVQXdCUCxJQURVSixRQXZCVkcsVUF3QlUsd0JBREFILFFBdkJISTs7VUEwQlAsSUFEa0JILFFBekJsQkUsVUEwQmtCLHdCQURBRixRQXpCWEcsU0ErQmU7YUFNbEJFLFdBSUpDLEtBQUtDO01BQVEsVUFBYkQ7T0EyREEsT0EzREtDOztPQUFRLE9BQWJEO2dCQWtCQSxJQURLdEIsS0FqQkxzQixRQWtCSyxxQkFEQXRCLEtBakJBdUI7Z0JBb0JMLElBRFV0QixPQW5CVnFCLFFBb0JVLHFCQURBckIsT0FuQkxzQjs7Y0FDUXJCLE9BRGJvQixRQUNRRSxJQURSRjtVQUVhLFVBRExFLElBQ0ssV0FEQXRCLE9BRFJxQjs7Y0FHYXBCLE9BSGxCbUIsUUFHYUcsTUFIYkg7VUFJa0IsVUFETEcsTUFDSyxXQURBdEIsT0FIYm9COztjQU1rQm5CLE9BTnZCa0IsUUFNaUJJLEtBTmpCSixRQU1ZSyxNQU5aTCxRQU1LTSxNQU5MTjtVQU91QixVQURsQk0sTUFBT0QsTUFBS0QsS0FDTSxXQURBdEIsT0FObEJtQjs7Y0FRb0JsQixPQVJ6QmlCLFFBUW1CTyxPQVJuQlAsUUFRY1EsTUFSZFIsUUFRT1MsUUFSUFQ7VUFTeUIsVUFEbEJTLFFBQU9ELE1BQUtELE9BQ00sV0FEQXhCLE9BUnBCa0I7O2NBVXdCakIsT0FWN0JnQixRQVV1QlUsT0FWdkJWLFFBVWtCVyxNQVZsQlgsUUFVV1ksUUFWWFo7VUFXNkIsVUFEbEJZLFFBQU9ELE1BQUtELE9BQ00sV0FEQTFCLE9BVnhCaUI7O2NBWW9CaEIsT0FaekJlLFFBWW1CYSxPQVpuQmIsUUFZY2MsTUFaZGQsUUFZT2UsUUFaUGY7VUFheUIsVUFEbEJlLFFBQU9ELE1BQUtELE9BQ00sV0FEQTVCLE9BWnBCZ0I7O2NBY29CZixPQWR6QmMsUUFjbUJnQixPQWRuQmhCLFFBY2NpQixNQWRkakIsUUFjT2tCLE1BZFBsQjtVQWV5QixVQURsQmtCLE1BQU9ELE1BQUtELE9BQ00sV0FEQTlCLE9BZHBCZTs7Y0FxQk1iLE9BckJYWSxRQXFCTW1CLE1BckJObkI7VUFzQlcsVUFETG1CLE1BQ0ssV0FEQS9CLE9BckJOYTtpQkFnQ0wsSUFETVgsT0EvQk5VLFFBZ0NNLHNCQURBVixPQS9CRFc7O2NBa0NnQlYsUUFsQ3JCUyxRQWtDZ0JvQixJQWxDaEJwQjtVQW1DcUIsV0FETG9CLElBQ0ssV0FEQTdCLFFBbENoQlU7O2NBb0NjVCxRQXBDbkJRLFFBb0NjcUIsSUFwQ2RyQjtVQXFDcUIsV0FEUHFCLElBQ08sV0FERjdCLFFBcENkUzs7Y0F1Q21CUixRQXZDeEJPLFFBdUNpQnNCLE1BdkNqQnRCLFFBdUNZdUIsTUF2Q1p2QjtVQXdDMEIsV0FEZHVCLE1BQUtELE1BQ1MsV0FERjdCLFFBdkNuQlE7O2NBeUNxQlAsUUF6QzFCTSxRQXlDbUJ3QixRQXpDbkJ4QixRQXlDY3lCLE1BekNkekI7VUEwQzBCLFdBRFp5QixNQUFLRCxRQUNPLFdBREE5QixRQXpDckJPO2lCQXdCTCxJQURNeUIsUUF2Qk4xQixRQXdCTSxzQkFEQTBCLFFBdkJEekI7aUJBMEJMLElBRE0wQixRQXpCTjNCLFFBMEJNLHNCQURBMkIsUUF6QkQxQjs7Y0FxRHVCMkIsUUFyRDVCNUIsUUFxRGdCNkIsV0FyRGhCN0I7VUFzRDRCLFdBRFo2QixXQUNZLFdBREFELFFBckR2QjNCOztjQXVEdUI2QixRQXZENUI5QixRQXVEZ0IrQixXQXZEaEIvQjtVQXdENEIsV0FEWitCLFdBQ1ksV0FEQUQsUUF2RHZCN0I7aUJBOEJMLElBRE8rQixRQTdCUGhDLFFBOEJPLHNCQURBZ0MsUUE3QkYvQjs7Y0E0QytCZ0MsUUE1Q3BDakMsUUE0QzBCa0MsU0E1QzFCbEMsUUE0Q2VtQyxVQTVDZm5DO1VBNkNvQyxXQURyQm1DLFVBQVdELFNBQ1UsV0FEQUQsUUE1Qy9CaEM7O2NBOENzQm1DLFFBOUMzQnBDLFFBOENrQnFDLFFBOUNsQnJDO1VBK0MyQixXQURUcUMsUUFDUyxXQURBRCxRQTlDdEJuQztpQkFpREwsSUFEZXFDLFFBaERmdEMsUUFpRGUsc0JBREFzQyxRQWhEVnJDOztjQWtEZXNDLFFBbERwQnZDLFFBa0Rld0MsSUFsRGZ4QztVQW1Eb0IsV0FETHdDLElBQ0ssV0FEQUQsUUFsRGZ0Qzs7Y0EyQmF3QyxRQTNCbEJ6QyxRQTJCZTBDLEVBM0JmMUMsUUEyQlEyQyxNQTNCUjNDO1VBNEJrQixXQURWMkMsTUFBT0QsRUFDRyxXQURBRCxRQTNCYnhDLE9BMkREO29DQS9HQU4sYUFuREFsQixVQW1HQXNCOzs7a0JDeGxCQzZDLEdBQUksVUFBSkEsRUFBTztpQkFDUkMsR0FBSSxPQUFKQSxJQUFPO2lCQUNQQSxFQUFFRCxHQUFJLE9BQUpBLEVBQUksUUFBUTtzQkFNTUMsRUFBRUQsR0FFNUIsSUFBSUUsSUFGc0JELEtBRTFCLE9BRjRCRCxFQUU1QixPQUFJRSxHQUdEOzZCQUU4QkQsRUFBRUUsS0FBS0g7TUFFeEMsSUFBSUUsSUFGNkJELEtBRWpDLE9BQUlDLFFBRitCQyxNQUFGRixPQUFPRCxNQVFqQzsyQkFFd0JDLEVBQUVHLEdBRWpDLElBQUlGLElBRjJCRCxLQUUvQixPQUFJQyxNQUY2QkUsTUFFakMsT0FBSUYsR0FHRDtrQkFFSUQsR0FBVyxjQUFYQSxLQUFXLFFBQW1CO2tCQUM5QkEsR0FBVyxjQUFYQSxNQUFXLFFBQXNCOzs7OztJQ3JDeEMsU0NIRUksU0RTU0MsR0FBSSxpQkFBSkEsRUFBb0I7SUFOL0IsU0NKRUMsWURXWUQsR0FBSSwwQkFBSkEsRUFBNkI7SUFQM0M7YUNNRUUsSUQ2Q0lDLEVBQUVDLEdBQU8sc0JBQVRELEVBQUVDLEdBQUZELEVBQUVDLENBQTJCO0lBbkRuQyxTQ09FQyxJRDZDSUYsRUFBRUMsR0FBTyx5QkFBVEQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBMkI7SUFwRG5DLFNDb0NFRSxJRHlDSUgsR0FBSSxZQUFKQSxXQUE0QjtJQTdFbEMsU0MwQ0VJLEtEeUNLSixHQUFJLE9BQUpBLE1BQWU7SUE0RXRCOztLQUVBO0tBRUE7S0FFQTtLQUVBO0tBRUE7S0F6S0E7O0lBeUtBLGFBc0JRYSxHQUFHQztNQUNYO2dDQURRRDtPQUNSLHlCQURXQztPQUVILG9CQURKQyxLQUEwQkM7TUFFOUIsaUJBSFFILEtBRUpoQixJQURBa0I7TUFHSixpQkFKV0QsS0FFUGpCLEVBREFrQixHQUEwQkM7TUFHOUIsNEJBRkluQixFQUdvQjtJQTNCeEIsU0NwREVvQixZRHFGWXRCO01Wak9qQixRVWlPaUJBLGlCQUMwQyxPQUQxQ0EsRUFDVyxtQ0FBbUQ7SUFsQzVFLFNDbERFdUIsZURpSGVDLEdBQ2pCLE9BRGlCQSxvQkFDWTtJQWhFN0IsU0NqREVDO01Ea0hpQjs7aUJBR1o7O2dCQUE0QjtJQXBFbkMsU0NoREVDO01Ec0hxQjs7a0JBR1o7SUF6RVgsU0MvQ0VDLGNEMEhjM0IsR0FDaEIsbUNBRGdCQSxFQUNDO0lBNUVqQixTQzdDRTRCLGtCRDZIa0IxQjtNQUVwQjtRQUFTLCtCQUZXQTs7OytCQUdGO1FBUGxCLFdBT3NCO0lBbkZ0QixTQ21ERTJCLGtCRG9Da0IzQjtNQUNwQiw0QkFEb0JBLEdBRVAxRTtNQUNYO1dBRkVzRyxLQUNTdEcsRUFDSSxXQUhHMEU7UUFJWiwwQkFKWUEsRUFFUDFFO1FBRUw7Ozs7UUZxUEYsYUVwUGtCLFFBSFhBO1FBSUosT0FOVzBFLEVBUWQ7SUEvRk4sU0VsSkU4QixVRm1QZ0J0QztNQUFzQixtREFBdEJBLEdBQThDO0lBakdoRSxTRW5KRXVDLGNGd1BvQi9CO01BRXRCO1FBQVMsaUNBRmFBOzs7K0JBR0o7UUFQSSxXQU9BO0lBeEd0QixTSTNJRWdDLE9KdVBVZCxHQUFHQztNQUNmLEdBRFlELFFBR0plLEdBSElmLE1BR1ZnQixHQUhVaEIsTUFHUSxVQUFsQmdCLEdBQWtCLE9BQVpELEdBSE9kLEtBRVAsT0FGT0EsRUFHYztJQVduQjs7S0FDQztLQUNBO2FDOUhUbUIsYUQ0SWFDLEtBQUtDLEtBQUtDO01BQzRCLElBQWpEQyxFQUFpRCw0QkFBMUIsY0FERkQsS0FBVkYsS0FBS0M7TUFFcEIseUJBRElFLEVBRHFCRDtNQUV6QixPQURJQyxDQUVIO0lBakJVLFNDaElUQyxTRG1KU0YsTUFDWCw0QkFEV0EsS0FDNkQ7SUFwQjdELFNDL0hURyxhRHFKYUgsTUFDZiw0QkFEZUEsS0FDMkQ7SUF2Qi9ELFNDNUhUSTtNRDJKRixTQUFRQztRVjNWWDtRVTJWa0I7O2dCQUVSbEIsYUFBSG1COztjQUVNLGNBRk5BOzs7Ozt3QkFBR25COztVQURHLFNBT0U7TUFDSixpREFBc0I7SUF4Q25CLFNDekhUb0IsYUQwS2FDLEdBQUdqRDtNQUNsQiw0QkFEZWlELEdBQUdqRCxJQUNsQixxQkFEa0JBLEdBQ21CO0lBbEQxQixTQzFIVGtELGNEOEtjRCxHQUFHakQ7TUFDbkIsc0JBRGdCaUQsR0FBR2pELElBQ25CLHNCQURtQkEsR0FDMEI7SUFyRGxDLFNDeEhUbUQsT0QrS09GLEdBQUdqRCxFQUFFb0QsSUFBSUM7TVZuWHJCO2FVbVhpQkQsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHVCw0QkFISUgsR0FBR2pELEVBQUVvRCxJQUFJQztNQUViLDhCQUMwQjtJQTFEcEIsU0N2SFRDLGlCRG1MaUJMLEdBQUdqRCxFQUFFb0QsSUFBSUM7TVZ4WC9COzs7UVV3WDJCRDs7OztRQUFJQzs7O2dDQUFOckQsS0FBTXFELFdBQUpEO09BR25CLHNCQUhjSCxHQUFHakQsRUFBRW9ELElBQUlDO01BRXZCLHdDQUNpQztJQS9EM0IsU0NwSFRFLGFEMExhQyxLQUFLOUQsR0FBSSx5QkFBVDhELEtBQUs5RCxJQUFnQztJQXRFekMsU0NoSFQrRCxVRDRMVVIsSUFBSyxjQUFMQSxJQUFlLDZCQUFmQSxHQUFtQztJQTVFcEMsU0MvR1RTLGdCRDRMZ0JUO01BQ2xCLEtBQUssY0FEYUE7TUFFbEI7UUFBSywrQkFGYUEsSUFFa0I7MkJBQUc7SUEvRTVCLFNDM0dUVSxZRG1NWXBCLEtBQUtDLEtBQUtDO01BQzRCLElBQWhEQyxFQUFnRCwyQkFBMUIsY0FERkQsS0FBVkYsS0FBS0M7TUFFbkIseUJBRElFLEVBRG9CRDtNQUV4QixPQURJQyxDQUVIO0lBM0ZVLFNDN0dUa0IsUUQwTVFuQixNQUNWLHlCQURVQSxLQUNpQztJQTlGaEMsU0M1R1RvQixZRDRNWXBCLE1BQ2QseUJBRGNBLEtBQytCO0lBakdsQyxTQ3hHVHFCLE1EZ05NQyxHQUFHL0QsRUFBRW9ELElBQUlDO01WcGFwQjthVW9hZ0JELFlBQUlDLGdDQUFOckQsS0FBTXFELFdBQUpEO09BR1IscUJBSEdXLEdBQUcvRCxFQUFFb0QsSUFBSUM7TUFFWiw2QkFDeUI7SUEzR25CLFNBNkdMVyxvQkFBb0JELEdBQUcvRCxFQUFFb0QsSUFBSUM7VUFBSlksVUFBSUM7TUFDbkM7ZUFEbUNBO1VBRXpCLElBQUp2RSxFQUFJLGNBRmdCb0UsR0FBRy9ELEVBQUVpRSxNQUFJQztVQUV6QixTQUFKdkUsRUFFQztVQUZHLElBR0gsTUFMNEJ1RSxRQUU3QnZFLE1BR0MsTUFMd0JzRSxRQUV6QnRFLE1BRnlCc0UsWUFBSUM7O1FBQ2xCLFNBS2Q7SUFuSFEsU0N2R1RHLGFENE5hTixHQUFHL0QsRUFBRW9ELElBQUlDO01WamIzQjthVWlidUJELFlBQUlDLGdDQUFOckQsS0FBTXFELFdBQUpEO09BR2YsMkJBSFVXLEdBQUcvRCxFQUFFb0QsSUFBSUM7TUFFbkIsb0NBQ2dDO0lBeEgxQixTQ3RHVGlCLG9CRGdPb0JQLEdBQUdWO01BQ2pCLElBQUpyRCxFQUFJLGtCQURpQnFEO01BRXpCLGFBRnNCVSxHQUNsQi9ELElBRHFCcUQ7TUFFekIsNEJBRElyRCxFQUVvQjtJQTdIYixTQ3pHVHVFLFdEME9XZjtNQUNiLFNBQVFnQixhQUFhQzs7OztnQkFFYnhDLGNBQU5DLGNBQ01tQix5QkFETm5CO1lBRUUsZ0JBRkZBLEtBRm1CdUMsWUFHYnBCO1lBQ0osa0JBRElBLDRCQURBcEI7O1VBREEsT0FEYXdDO1VBTVJDLE9BQUtyQjtNQUNoQjtRQUFRLElBQUp2RCxFQUFJLGdDQVJHMEQ7UUFRSCxTQUFKMUQ7VUFDVSxLQUZINEUsS0FJRDttQkFDYSwrQkFMUHJCLFNBQUxxQjs7VUFNRixVQUxMNUU7WUFjUSxJQUFONkUsSUFBTSxvQkFkUjdFO1lBZUksY0F2QkcwRCxLQXNCTG1CLFFBZEY3RTtZQWNRLElBQ0osTUFoQlF1RCxNQUNadkQsTUFlSSxVQURGNkUsSUFmS0Qsa0JBQUtyQjs7VUFPSixJQUFOd0IsSUFBTSxrQkFOUi9FO1VBT0ssY0FmRTBELEtBY0xxQixNQU5GL0U7VUFRSyxtQkFoQkUwRDtVQWdCRixHQVRFa0I7V0FZRDttQkFaTXJCLE1BQ1p2RDtpQkFZbUIsK0JBRFRvRSxnQkFMUlcsSUFQS0g7O29CQU9MRzswQ0FZNkI7SUEzSjFCLFNDOUZUQyxlRGtRZWY7TUFBSztRQUFLLCtCQUFWQSxJQUFnQzsyQkFBRztJQXBLekMsU0M3SlRnQixXRHVVV3JDLEdBQUksMkJDelVmTixPRHlVV00sRUFBd0I7SUExSzFCLFNDNUpUc0MsYUR1VWFoRixHQUFJLHFCQzFVakJvQyxPRDBVYXBDLEVBQTBCO0lBM0s5QixTQzNKVGlGLFlEdVVZakYsR0FBSSxvQkMzVWhCb0MsT0QyVVlwQyxFQUF5QjtJQTVLNUIsU0MxSlRrRixVRHVVVTVKO01BQXlCLHFCQzVVbkM4RyxPRDRVbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQkM3VXJDNEMsT0Q2VXFDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjQy9VRW9DLE9EOFVjcEM7TUFDUSxvQkMvVXRCb0M7TUQrVStDLHFCQy9VL0NBLE9EK1UyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JDaFZuQmpELFdEZ1Y0QyxxQkNoVjVDQSxPRGdWd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCQ25WZkwsT0RtVldLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQkNwVmpCcUMsT0RvVmFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JDclZoQnFDLE9EcVZZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQkN0Vm5DK0csT0RzVm1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJDdlZyQzZDLE9EdVZxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY0N6VkVxQyxPRHdWY3JDO01BQ1Esb0JDelZ0QnFDO01EeVYrQyxxQkN6Vi9DQSxPRHlWMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CQzFWbkJ2RCxXRDBWNEMscUJDMVY1Q0EsT0QwVndEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjQy9WZnpELFFEK1ZlLGtCQ2hXZkQsTURnVzZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7SUFuTW5DLFNDM0lUQyxzQkQrVXVDLGtDQUFhO0lBcE0zQyxTQ2hGVEMsd0JYNU9MLElVMGhCcUNoSTtJQTlOdkIsU0M1RVRpSTtNRGtUTTtPQUZzQ0M7T0FBTnJKO09BQWhCc0o7T0FBTnZKO09BRVYsU0FGZ0J1SixLQUVULFVBRitCRDtNQUN0QyxxQkFEVXRKLEtBQXNCQztJQVF0QixJQUFoQnVKLGlCQ3hXQXpEO0lEd1dnQixTQ3RUaEIwRCxRRHdUWS9HO01BQ2Q7UUFFbUI7O1NBQ0osU0FOYjhHO1NBTWE7bUJB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQ0NDQSxXRERELDZCQ0NDQyxLRERELElDQ0NDO0lEREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQ0NDQyx1QkRERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkNDQ0MsTURERDs7Ozs7Ozs7Ozt5QkNDQ0EsTURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNPd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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WUFDO09BOEJBQztPQWdDQUM7T0FrRUFDO09Bb0JBQztPQW9DQUM7T0FxQkFDO09BcUNBQztPQVVBQztPQXNCQUM7T0FvQkFDO09BaUNBQztPQU1BRTtPQVdBQztPQU1BQztPQVdBQztPQU1BRTtPQWtCQUM7T0FnQkFDO09BK0JBQztPQWVBQztPQTBCQTdQO09BY0E4UDtPQXNCQUM7T0FVQUM7T0FzQkFDO09BZ0JBQztPQTJCQUM7T0FRQUM7T0FhQUM7T0FRQUM7T0FhQUM7T0FLQUM7T0FZQUM7T0FLQUM7T0FlQUM7T0FrQkFDO09BcUJBQztPQVlBQztPQWtCRkM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FLQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQXRSO09BU0FMO09BU0E0UjtPQVNBQztPQVNBQztJQVVEOzs7O1VKbnRKSjs7Ozs7OztJSUFBOzs7Ozs7Ozs7Ozs7Ozs7TUM0QzJCO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBOzBDQU1RO2lCQUwxQiw4Q0FLMkIsRUFBQzs7TUFqQmY7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7NkNBTVc7aUJBTDdCLDhDQUs4QixFQUFDO0lBWjFDOzs7Ozs7O1VEM0JIOzs7Ozs7O0lDQUE7Ozs7SUNrQlM7OztVRGxCVCIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgaWYoZ2xvYmFsVGhpcy5VaW50OEFycmF5KSB7XG4gICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KHMubCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGEgPSBuZXcgQXJyYXkocy5sKTtcbiAgfVxuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZmlsbF9ieXRlc1xudmFyIGNhbWxfZmlsbF9zdHJpbmcgPSBjYW1sX2ZpbGxfYnl0ZXNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKHRhZykgeyByZXR1cm4gdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IFswLCB0YWcsIGFyZ107IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgWzAsIHRhZ10uY29uY2F0KGFyZ3MpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIGlmKGYuZnVuKVxuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBhcmdzKTtcbiAgLy9GSVhNRSwgY2FuIGhhcHBlbiB3aXRoIHRvbyBtYW55IGFyZ3VtZW50c1xuICBpZih0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZjtcbiAgdmFyIG4gPSBmLmxlbmd0aCB8IDA7XG4gIGlmKG4gPT09IDApIHJldHVybiBmLmFwcGx5KG51bGwsYXJncyk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGggfCAwO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuIHwgMDtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKSxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCl7XG4gICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmKG5hbWVfb3B0ICYmIGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYylcbiAgICBuID0gZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKG5hbWVfb3B0KTtcbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmlsZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGaWxlKGZkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX2FycmF5X29mX3N0cmluZywgY2FtbF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGaWxlKGZkKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcblxuTWxOb2RlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWZmZXIsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuVWludDhBcnJheSkpXG4gICAgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGNhbWxfYnl0ZXNfc2V0KGJ1ZixidWZfb2Zmc2V0ICsgaSxidWZmZXJbYnVmX29mZnNldCtpXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KDEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgMCwgMSwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBidWZmZXJbMF07XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZpbGU7XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZpbGUoKXtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9ieXRlcyhidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfdGltZVxuLy9SZXF1aXJlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHVuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIHVuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIHVuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSB1bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fc3RhcnR1cCBjb25zdFxuZnVuY3Rpb24gd2luX3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5fY2xlYW51cCBjb25zdFxuZnVuY3Rpb24gd2luX2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5faGFuZGxlX2ZkIGNvbnN0XG5mdW5jdGlvbiB3aW5faGFuZGxlX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IHVuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogdW5peF9zdGF0XG52YXIgdW5peF9zdGF0XzY0ID0gdW5peF9zdGF0O1xuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfbHN0YXRcbnZhciB1bml4X2xzdGF0XzY0ID0gdW5peF9sc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnF1aXQpIGcucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5leGl0KVxuICAgIGcucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGhhbmRsZXIoZXJyLGZhbHNlKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIHsgYXRfZXhpdCgwKSB9XG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnICsgXCJcXG5cIik7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBuID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIC8vbm9kZWpzIGVudlxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmVudlxuICAgICAmJiBnLnByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZy5wcm9jZXNzLmVudltuXSk7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKGcucHJvY2Vzc1xuICAgICAmJiBnLnByb2Nlc3MuYXJndlxuICAgICAmJiBnLnByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBnLnByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIlxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpXG4gICAgICAmJiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMpIHtcbiAgICB0cnkge3JlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTsgcmV0dXJuIDB9XG4gICAgY2F0Y2ggKGUpIHtyZXR1cm4gMX1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgaWYodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBXZWJicm93c2Vyc1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheSgxKTtcbiAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9IGVsc2UgaWYoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gTm9kZWpzXG4gICAgICB2YXIgYnVmZiA9IGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDQpO1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheShidWZmKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLm9uKSB7XG4gICAgZy5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIGcucHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICB2YXIgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X3N0cmluZyhidWYsIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZF9vbmUgPSBmdW5jdGlvbihvZmZzZXQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19nZXQodGhpcy5kYXRhLCBvZmZzZXQpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheSh4KTtcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC4gVGhlICsyIHRvIGFycmF5IGxlbmd0aCBzZWVtcyB0byB3b3JrLlxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGcub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcblxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICB2YXIgX21hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgdmFyIF9ibG9ja19sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAoKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAoKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIGZ1bmN0aW9uIGdldDMyKHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpIDw8IDI0KSB8XG4gICAgICAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMikgPDwgOCkgfFxuICAgICAgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgfVxuICBpZiAoZ2V0MzIocywgb2ZzKSAhPSAoMHg4NDk1QTZCRXwwKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gIHJldHVybiAoZ2V0MzIocywgb2ZzICsgNCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5XZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5XZWFrTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246ID49IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IGZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246IDwgNC4wOFxudmFyIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlID0gdHJ1ZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYoY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUpIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTIgLypjc3QuQ09ERV9DVVNUT00qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICB9IGVsc2UgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgZGVsZXRlIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3N0ZF9vdXRwdXQoY2hhbmlkLHMpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHN0ciA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG4gIHZhciBzbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cik7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgc3RyLCAwLCBzbGVuKTtcbiAgY2hhbi5vZmZzZXQgKz0gc2xlbjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcyxNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnIsIGpzX3ByaW50X3N0ZG91dFxuLy9SZXF1aXJlczogY2FtbF9zdGRfb3V0cHV0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChpZHgsb3V0cHV0LGZpbGUsZmxhZ3MpIHtcbiAgaWYoY2FtbF9nbG9iYWxfZGF0YS5mZHMgPT09IHVuZGVmaW5lZCkgY2FtbF9nbG9iYWxfZGF0YS5mZHMgPSBuZXcgQXJyYXkoKTtcbiAgZmxhZ3M9ZmxhZ3M/ZmxhZ3M6e307XG4gIHZhciBpbmZvID0ge307XG4gIGluZm8uZmlsZSA9IGZpbGU7XG4gIGluZm8ub2Zmc2V0ID0gZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MDtcbiAgaW5mby5mbGFncyA9IGZsYWdzO1xuICBpbmZvLm91dHB1dCA9IG91dHB1dDtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbaWR4XSA9IGluZm87XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4IHx8IGlkeCA+IGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHgpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCA9IGlkeDtcbiAgcmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHZhciBpZHggPSBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4P2NhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHg6MDtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGlkeCsxLGNhbWxfc3RkX291dHB1dCxmaWxlLGYpO1xufVxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgwLGNhbWxfc3RkX291dHB1dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRpblxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgxLGpzX3ByaW50X3N0ZG91dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRvdXRcbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMixqc19wcmludF9zdGRlcnIsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkZXJyXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoKSB7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIGlmKGRhdGEuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmRhdGEuZmlsZSxcbiAgICBvZmZzZXQ6ZGF0YS5vZmZzZXQsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyOlwiXCJcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zeXNfb3BlbixjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWQsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICBpZihmZCA9PSAwICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpe1xuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgcmVmaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGZzLnJlYWRGaWxlU3luYygwLCAndXRmOCcpKX07XG4gIH1cbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcbnZhciB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwgPSBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXTtcbiAgZGF0YS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgZGF0YS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjaGFuLmZpbGUuY2xvc2UoKTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0ID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfbWxfcmVmaWxsX2lucHV0IChjaGFuKSB7XG4gIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICB2YXIgc3RyX2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBpZiAoc3RyX2xlbiA9PSAwKSBjaGFuLnJlZmlsbCA9IG51bGw7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLmZpbGUubGVuZ3RoKCksIHN0ciwgMCwgc3RyX2xlbik7XG4gIHJldHVybiBzdHJfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsID09IG51bGwpIHJldHVybjtcbiAgaWYgKGNoYW4uZmlsZS5sZW5ndGgoKSAhPSBjaGFuLm9mZnNldCkgcmV0dXJuO1xuICBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIHMsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBsMiA9IGNoYW4uZmlsZS5sZW5ndGgoKSAtIGNoYW4ub2Zmc2V0O1xuICBpZiAobDIgPT0gMCAmJiBjaGFuLnJlZmlsbCAhPSBudWxsKSBsMiA9IGNhbWxfbWxfcmVmaWxsX2lucHV0KGNoYW4pO1xuICBpZiAobDIgPCBsKSBsID0gbDI7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBzLCBpLCBsKTtcbiAgY2hhbi5vZmZzZXQgKz0gbDtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMoOCk7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLDgpO1xuXG4gIC8vIEhlYWRlciBpcyAyMCBieXRlc1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoYnVmLCAwKSArIDIwO1xuXG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuXG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoYnVmLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICBpZiAoY2hhbi5vZmZzZXQgPj0gY2hhbi5maWxlLmxlbmd0aCgpKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uZmlsZS5yZWFkX29uZShjaGFuLm9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0Kys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGZpbGUgPSBjaGFuLmZpbGU7XG4gIHdoaWxlICgoY2hhbi5vZmZzZXQgKyAzKSA+PSBmaWxlLmxlbmd0aCgpKSB7XG4gICAgdmFyIGwgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgICBpZiAobCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH1cbiAgdmFyIG8gPSBjaGFuLm9mZnNldDtcbiAgdmFyIHIgPShmaWxlLnJlYWRfb25lKG8gICkgPDwgMjQpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzEpIDw8IDE2KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysyKSA8PCA4KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobyszKSk7XG4gIGNoYW4ub2Zmc2V0Kz00O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7cmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXR9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtyZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0KX1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4ub2Zmc2V0O1xuICB2YXIgbGVuID0gY2hhbi5maWxlLmxlbmd0aCgpO1xuICBpZihwID49IGxlbikgeyByZXR1cm4gMDt9XG4gIHdoaWxlKHRydWUpIHtcbiAgICBpZihwID49IGxlbikgcmV0dXJuIC0gKHAgLSBjaGFuLm9mZnNldCk7XG4gICAgaWYoY2hhbi5maWxlLnJlYWRfb25lKHApID09IDEwKSByZXR1cm4gcCAtIGNoYW4ub2Zmc2V0ICsgMTtcbiAgICBwKys7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyID09IFwiXCIpIHJldHVybiAwO1xuICBpZihjaGFuLmZkXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQ7XG4gICAgc3dpdGNoKG91dHB1dC5sZW5ndGgpe1xuICAgIGNhc2UgMjogb3V0cHV0KGNoYW5pZCxjaGFuLmJ1ZmZlcik7YnJlYWs7XG4gICAgZGVmYXVsdDogb3V0cHV0KGNoYW4uYnVmZmVyKVxuICAgIH07XG4gIH1cbiAgY2hhbi5idWZmZXIgPSBcIlwiO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgdmFyIGJ5dGVzO1xuICBpZihvZmZzZXQgPT0gMCAmJiBjYW1sX21sX2J5dGVzX2xlbmd0aChidWZmZXIpID09IGxlbilcbiAgICBieXRlcyA9IGJ1ZmZlcjtcbiAgZWxzZSB7XG4gICAgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhidWZmZXIsb2Zmc2V0LGJ5dGVzLDAsbGVuKTtcbiAgfVxuICB2YXIgc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpO1xuICB2YXIganNzdHJpbmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0cmluZyk7XG4gIHZhciBpZCA9IGpzc3RyaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICBpZihpZCA8IDApXG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nO1xuICBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcis9anNzdHJpbmcuc3Vic3RyKDAsaWQrMSk7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBjaGFuLmJ1ZmZlciArPSBqc3N0cmluZy5zdWJzdHIoaWQrMSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoYykgeyByZXR1cm4gMSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjLHYpIHsgcmV0dXJuIDAgfVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy9JbXBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlcm9sc29uL0JpZ0ludGVnZXIuanMjNGU5OWIxNWI3OTUxMzM4ZjE2NDcyODM3N2M5MDZjYWFlNWE3ODIwMlxuXG4vL1Byb3ZpZGVzOiBiaWdJbnQgY29uc3RcbnZhciBiaWdJbnQgPSAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgdmFyIEJBU0UgPSAxZTcsXG4gICAgICAgIExPR19CQVNFID0gNyxcbiAgICAgICAgTUFYX0lOVCA9IDkwMDcxOTkyNTQ3NDA5OTIsXG4gICAgICAgIE1BWF9JTlRfQVJSID0gc21hbGxUb0FycmF5KE1BWF9JTlQpLFxuICAgICAgICBERUZBVUxUX0FMUEhBQkVUID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuICAgIHZhciBCaWdJbnQgPSBqb29fZ2xvYmFsX29iamVjdC5CaWdJbnQ7XG5cbiAgICB2YXIgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5cbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAodHlwZW9mIHJhZGl4ICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gK3JhZGl4ID09PSAxMCAmJiAhYWxwaGFiZXQgPyBwYXJzZVZhbHVlKHYpIDogcGFyc2VCYXNlKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSk7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSBzaWduO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBTbWFsbEludGVnZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBOYXRpdmVCaWdJbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gaXNQcmVjaXNlKG4pIHtcbiAgICAgICAgcmV0dXJuIC1NQVhfSU5UIDwgbiAmJiBuIDwgTUFYX0lOVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbWFsbFRvQXJyYXkobikgeyAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBkb2Vzbid0IHJlZmVyZW5jZSBCQVNFLCBuZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGlmIEJBU0UgY2hhbmdlc1xuICAgICAgICBpZiAobiA8IDFlNylcbiAgICAgICAgICAgIHJldHVybiBbbl07XG4gICAgICAgIGlmIChuIDwgMWUxNClcbiAgICAgICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KV07XG4gICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KSAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWUxNCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFycmF5VG9TbWFsbChhcnIpIHsgLy8gSWYgQkFTRSBjaGFuZ2VzIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gY2hhbmdlXG4gICAgICAgIHRyaW0oYXJyKTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCA0ICYmIGNvbXBhcmVBYnMoYXJyLCBNQVhfSU5UX0FSUikgPCAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gYXJyWzBdO1xuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGFyclswXSArIGFyclsxXSAqIEJBU0U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGFyclswXSArIChhcnJbMV0gKyBhcnJbMl0gKiBCQVNFKSAqIEJBU0U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmltKHYpIHtcbiAgICAgICAgdmFyIGkgPSB2Lmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHZbLS1pXSA9PT0gMCk7XG4gICAgICAgIHYubGVuZ3RoID0gaSArIDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKSB7IC8vIGZ1bmN0aW9uIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFlhZmZsZSdzIGxpYnJhcnkgaHR0cHM6Ly9naXRodWIuY29tL1lhZmZsZS9CaWdJbnRlZ2VyXG4gICAgICAgIHZhciB4ID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHhbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRydW5jYXRlKG4pIHtcbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTWF0aC5mbG9vcihuKTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGQoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEubGVuZ3RoID49IGIubGVuZ3RoXG4gICAgICAgIHZhciBsX2EgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGxfYiA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsX2EpLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2I7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSArIGJbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID49IGJhc2UgPyAxIDogMDtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPCBsX2EpIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID09PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2krK10gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcnJ5ID4gMCkgci5wdXNoKGNhcnJ5KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW55KGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID49IGIubGVuZ3RoKSByZXR1cm4gYWRkKGEsIGIpO1xuICAgICAgICByZXR1cm4gYWRkKGIsIGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFNtYWxsKGEsIGNhcnJ5KSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgY2FycnkgaXMgbnVtYmVyIHdpdGggMCA8PSBjYXJyeSA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHN1bSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSAtIGJhc2UgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihzdW0gLyBiYXNlKTtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgICAgIHJbaSsrXSA9IGNhcnJ5ICUgYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYSwgTWF0aC5hYnMoYikpLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRBbnkoYSwgYiksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZShhICsgYikpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgKyBiKTtcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoTWF0aC5hYnMoYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbChiLCBNYXRoLmFicyhhKSksIGEgPCAwKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucGx1cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkO1xuXG4gICAgZnVuY3Rpb24gc3VidHJhY3QoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEgPj0gYlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkoYV9sKSxcbiAgICAgICAgICAgIGJvcnJvdyA9IDAsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBiX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3cgLSBiW2ldO1xuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgICAgIGJvcnJvdyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGJfbDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdztcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcltpKytdID0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoOyBpIDwgYV9sOyBpKyspIHtcbiAgICAgICAgICAgIHJbaV0gPSBhW2ldO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0QW55KGEsIGIsIHNpZ24pIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBpZiAoY29tcGFyZUFicyhhLCBiKSA+PSAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGEsIGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChiLCBhKTtcbiAgICAgICAgICAgIHNpZ24gPSAhc2lnbjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IGFycmF5VG9TbWFsbCh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSB2YWx1ZSA9IC12YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0U21hbGwoYSwgYiwgc2lnbikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggMCA8PSBiIDwgTUFYX0lOVFxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gLWIsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIGJhc2UpO1xuICAgICAgICAgICAgZGlmZmVyZW5jZSAlPSBiYXNlO1xuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2UgPCAwID8gZGlmZmVyZW5jZSArIGJhc2UgOiBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIHIgPSBhcnJheVRvU21hbGwocik7XG4gICAgICAgIGlmICh0eXBlb2YgciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHNpZ24pIHIgPSAtcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHIpO1xuICAgICAgICB9IHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbClcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGEsIE1hdGguYWJzKGIpLCB0aGlzLnNpZ24pO1xuICAgICAgICByZXR1cm4gc3VidHJhY3RBbnkoYSwgYiwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1pbnVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhIC0gYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYiwgTWF0aC5hYnMoYSksIGEgPj0gMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm1pbnVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubWludXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgIXRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ247XG4gICAgICAgIHZhciBzbWFsbCA9IG5ldyBTbWFsbEludGVnZXIoLXRoaXMudmFsdWUpO1xuICAgICAgICBzbWFsbC5zaWduID0gIXNpZ247XG4gICAgICAgIHJldHVybiBzbWFsbDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCgtdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKE1hdGguYWJzKHRoaXMudmFsdWUpKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlID49IDAgPyB0aGlzLnZhbHVlIDogLXRoaXMudmFsdWUpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlMb25nKGEsIGIpIHtcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICBsID0gYV9sICsgYl9sLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBiX2o7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhX2w7ICsraSkge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYl9sOyArK2opIHtcbiAgICAgICAgICAgICAgICBiX2ogPSBiW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBhX2kgKiBiX2ogKyByW2kgKyBqXTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgICAgICByW2kgKyBqICsgMV0gKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbChhLCBiKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCB8YnwgPCBCQVNFXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBjYXJyeSA9IDAsXG4gICAgICAgICAgICBwcm9kdWN0LCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gYVtpXSAqIGIgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaGlmdExlZnQoeCwgbikge1xuICAgICAgICB2YXIgciA9IFtdO1xuICAgICAgICB3aGlsZSAobi0tID4gMCkgci5wdXNoKDApO1xuICAgICAgICByZXR1cm4gci5jb25jYXQoeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlLYXJhdHN1YmEoeCwgeSkge1xuICAgICAgICB2YXIgbiA9IE1hdGgubWF4KHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKG4gPD0gMzApIHJldHVybiBtdWx0aXBseUxvbmcoeCwgeSk7XG4gICAgICAgIG4gPSBNYXRoLmNlaWwobiAvIDIpO1xuXG4gICAgICAgIHZhciBiID0geC5zbGljZShuKSxcbiAgICAgICAgICAgIGEgPSB4LnNsaWNlKDAsIG4pLFxuICAgICAgICAgICAgZCA9IHkuc2xpY2UobiksXG4gICAgICAgICAgICBjID0geS5zbGljZSgwLCBuKTtcblxuICAgICAgICB2YXIgYWMgPSBtdWx0aXBseUthcmF0c3ViYShhLCBjKSxcbiAgICAgICAgICAgIGJkID0gbXVsdGlwbHlLYXJhdHN1YmEoYiwgZCksXG4gICAgICAgICAgICBhYmNkID0gbXVsdGlwbHlLYXJhdHN1YmEoYWRkQW55KGEsIGIpLCBhZGRBbnkoYywgZCkpO1xuXG4gICAgICAgIHZhciBwcm9kdWN0ID0gYWRkQW55KGFkZEFueShhYywgc2hpZnRMZWZ0KHN1YnRyYWN0KHN1YnRyYWN0KGFiY2QsIGFjKSwgYmQpLCBuKSksIHNoaWZ0TGVmdChiZCwgMiAqIG4pKTtcbiAgICAgICAgdHJpbShwcm9kdWN0KTtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gYSBzdXJmYWNlIGZpdCBvZiBhIGdyYXBoIHBsb3R0aW5nIHRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlXG4gICAgLy8gYmV0d2VlbiBsb25nIG11bHRpcGxpY2F0aW9uIGFuZCBrYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gdmVyc3VzIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gYXJyYXlzLlxuICAgIGZ1bmN0aW9uIHVzZUthcmF0c3ViYShsMSwgbDIpIHtcbiAgICAgICAgcmV0dXJuIC0wLjAxMiAqIGwxIC0gMC4wMTIgKiBsMiArIDAuMDAwMDE1ICogbDEgKiBsMiA+IDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICBzaWduID0gdGhpcy5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBhYnM7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIGlmIChiID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XG4gICAgICAgICAgICBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYSwgYWJzKSwgc2lnbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZUthcmF0c3ViYShhLmxlbmd0aCwgYi5sZW5ndGgpKSAvLyBLYXJhdHN1YmEgaXMgb25seSBmYXN0ZXIgZm9yIGNlcnRhaW4gYXJyYXkgc2l6ZXNcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUthcmF0c3ViYShhLCBiKSwgc2lnbik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYSwgYiksIHNpZ24pO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbEFuZEFycmF5KGEsIGIsIHNpZ24pIHsgLy8gYSA+PSAwXG4gICAgICAgIGlmIChhIDwgQkFTRSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYiwgYSksIHNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYiwgc21hbGxUb0FycmF5KGEpKSwgc2lnbik7XG4gICAgfVxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChpc1ByZWNpc2UoYS52YWx1ZSAqIHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhLnZhbHVlICogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDEpIHJldHVybiB0aGlzO1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCB0aGlzLnZhbHVlLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodikuX211bHRpcGx5QnlTbWFsbCh0aGlzKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50aW1lcyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBmdW5jdGlvbiBzcXVhcmUoYSkge1xuICAgICAgICAvL2NvbnNvbGUuYXNzZXJ0KDIgKiBCQVNFICogQkFTRSA8IE1BWF9JTlQpO1xuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwgKyBsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYV9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xuICAgICAgICAgICAgY2FycnkgPSAwIC0gYV9pICogYV9pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBsOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhX2ogPSBhW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAyICogKGFfaSAqIGFfaikgKyByW2kgKyBqXSArIGNhcnJ5O1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcltpICsgbF0gPSBjYXJyeTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUodGhpcy52YWx1ZSksIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSkpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDEoYSwgYikgeyAvLyBMZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVBcnJheShiLmxlbmd0aCksXG4gICAgICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBiW2JfbCAtIDFdLFxuICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgbGFtYmRhID0gTWF0aC5jZWlsKGJhc2UgLyAoMiAqIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkpLFxuICAgICAgICAgICAgcmVtYWluZGVyID0gbXVsdGlwbHlTbWFsbChhLCBsYW1iZGEpLFxuICAgICAgICAgICAgZGl2aXNvciA9IG11bHRpcGx5U21hbGwoYiwgbGFtYmRhKSxcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQsIHNoaWZ0LCBjYXJyeSwgYm9ycm93LCBpLCBsLCBxO1xuICAgICAgICBpZiAocmVtYWluZGVyLmxlbmd0aCA8PSBhX2wpIHJlbWFpbmRlci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yLnB1c2goMCk7XG4gICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGRpdmlzb3JbYl9sIC0gMV07XG4gICAgICAgIGZvciAoc2hpZnQgPSBhX2wgLSBiX2w7IHNoaWZ0ID49IDA7IHNoaWZ0LS0pIHtcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBiYXNlIC0gMTtcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICE9PSBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpIHtcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gTWF0aC5mbG9vcigocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAqIGJhc2UgKyByZW1haW5kZXJbc2hpZnQgKyBiX2wgLSAxXSkgLyBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcXVvdGllbnREaWdpdCA8PSBiYXNlIC0gMVxuICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIGwgPSBkaXZpc29yLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYXJyeSArPSBxdW90aWVudERpZ2l0ICogZGl2aXNvcltpXTtcbiAgICAgICAgICAgICAgICBxID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIGJvcnJvdyArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIChjYXJyeSAtIHEgKiBiYXNlKTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IHE7XG4gICAgICAgICAgICAgICAgaWYgKGJvcnJvdyA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3cgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdztcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoYm9ycm93ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCAtPSAxO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gYmFzZSArIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXJyeSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2FycnkgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbc2hpZnRdID0gcXVvdGllbnREaWdpdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBkZW5vcm1hbGl6YXRpb25cbiAgICAgICAgcmVtYWluZGVyID0gZGl2TW9kU21hbGwocmVtYWluZGVyLCBsYW1iZGEpWzBdO1xuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocmVtYWluZGVyKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kMihhLCBiKSB7IC8vIEltcGxlbWVudGF0aW9uIGlkZWEgc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gU2lsZW50IE1hdHQncyBsaWJyYXJ5IGh0dHA6Ly9zaWxlbnRtYXR0LmNvbS9iaWdpbnRlZ2VyL1xuICAgICAgICAvLyBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QxIG9uIGxhcmdlciBpbnB1dCBzaXplcy5cbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICAgIHBhcnQgPSBbXSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgZ3Vlc3MsIHhsZW4sIGhpZ2h4LCBoaWdoeSwgY2hlY2s7XG4gICAgICAgIHdoaWxlIChhX2wpIHtcbiAgICAgICAgICAgIHBhcnQudW5zaGlmdChhWy0tYV9sXSk7XG4gICAgICAgICAgICB0cmltKHBhcnQpO1xuICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMocGFydCwgYikgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4bGVuID0gcGFydC5sZW5ndGg7XG4gICAgICAgICAgICBoaWdoeCA9IHBhcnRbeGxlbiAtIDFdICogYmFzZSArIHBhcnRbeGxlbiAtIDJdO1xuICAgICAgICAgICAgaGlnaHkgPSBiW2JfbCAtIDFdICogYmFzZSArIGJbYl9sIC0gMl07XG4gICAgICAgICAgICBpZiAoeGxlbiA+IGJfbCkge1xuICAgICAgICAgICAgICAgIGhpZ2h4ID0gKGhpZ2h4ICsgMSkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3Vlc3MgPSBNYXRoLmNlaWwoaGlnaHggLyBoaWdoeSk7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2hlY2sgPSBtdWx0aXBseVNtYWxsKGIsIGd1ZXNzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFicyhjaGVjaywgcGFydCkgPD0gMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgZ3Vlc3MtLTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGd1ZXNzKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGd1ZXNzKTtcbiAgICAgICAgICAgIHBhcnQgPSBzdWJ0cmFjdChwYXJ0LCBjaGVjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHBhcnQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2RTbWFsbCh2YWx1ZSwgbGFtYmRhKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgICAgICBxdW90aWVudCA9IGNyZWF0ZUFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIHEsIHJlbWFpbmRlciwgZGl2aXNvcjtcbiAgICAgICAgcmVtYWluZGVyID0gMDtcbiAgICAgICAgZm9yIChpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgIGRpdmlzb3IgPSByZW1haW5kZXIgKiBiYXNlICsgdmFsdWVbaV07XG4gICAgICAgICAgICBxID0gdHJ1bmNhdGUoZGl2aXNvciAvIGxhbWJkYSk7XG4gICAgICAgICAgICByZW1haW5kZXIgPSBkaXZpc29yIC0gcSAqIGxhbWJkYTtcbiAgICAgICAgICAgIHF1b3RpZW50W2ldID0gcSB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyIHwgMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kQW55KHNlbGYsIHYpIHtcbiAgICAgICAgdmFyIHZhbHVlLCBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAvIG4udmFsdWUpLCBuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgJSBuLnZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBzZWxmLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIHF1b3RpZW50O1xuICAgICAgICBpZiAoYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpdmlkZSBieSB6ZXJvXCIpO1xuICAgICAgICBpZiAoc2VsZi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKGEgLyBiKSksIG5ldyBTbWFsbEludGVnZXIoYSAlIGIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGIgPT09IDEpIHJldHVybiBbc2VsZiwgSW50ZWdlclswXV07XG4gICAgICAgICAgICBpZiAoYiA9PSAtMSkgcmV0dXJuIFtzZWxmLm5lZ2F0ZSgpLCBJbnRlZ2VyWzBdXTtcbiAgICAgICAgICAgIHZhciBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2RTbWFsbChhLCBhYnMpO1xuICAgICAgICAgICAgICAgIHF1b3RpZW50ID0gYXJyYXlUb1NtYWxsKHZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbikgcmVtYWluZGVyID0gLXJlbWFpbmRlcjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24gIT09IG4uc2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHNlbGYuc2lnbiAhPT0gbi5zaWduKSwgbmV3IFNtYWxsSW50ZWdlcihyZW1haW5kZXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBYnMoYSwgYik7XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAtMSkgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IDApIHJldHVybiBbSW50ZWdlcltzZWxmLnNpZ24gPT09IG4uc2lnbiA/IDEgOiAtMV0sIEludGVnZXJbMF1dO1xuXG4gICAgICAgIC8vIGRpdk1vZDEgaXMgZmFzdGVyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXNcbiAgICAgICAgaWYgKGEubGVuZ3RoICsgYi5sZW5ndGggPD0gMjAwKVxuICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2QxKGEsIGIpO1xuICAgICAgICBlbHNlIHZhbHVlID0gZGl2TW9kMihhLCBiKTtcblxuICAgICAgICBxdW90aWVudCA9IHZhbHVlWzBdO1xuICAgICAgICB2YXIgcVNpZ24gPSBzZWxmLnNpZ24gIT09IG4uc2lnbixcbiAgICAgICAgICAgIG1vZCA9IHZhbHVlWzFdLFxuICAgICAgICAgICAgbVNpZ24gPSBzZWxmLnNpZ247XG4gICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChxU2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICBxdW90aWVudCA9IG5ldyBTbWFsbEludGVnZXIocXVvdGllbnQpO1xuICAgICAgICB9IGVsc2UgcXVvdGllbnQgPSBuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgcVNpZ24pO1xuICAgICAgICBpZiAodHlwZW9mIG1vZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKG1TaWduKSBtb2QgPSAtbW9kO1xuICAgICAgICAgICAgbW9kID0gbmV3IFNtYWxsSW50ZWdlcihtb2QpO1xuICAgICAgICB9IGVsc2UgbW9kID0gbmV3IEJpZ0ludGVnZXIobW9kLCBtU2lnbik7XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIG1vZF07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRpdk1vZEFueSh0aGlzLCB2KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHF1b3RpZW50OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZW1haW5kZXI6IHJlc3VsdFsxXVxuICAgICAgICB9O1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZtb2QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZDtcblxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVswXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3ZlciA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAvIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVsxXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5yZW1haW5kZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICUgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlLCB4LCB5O1xuICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEgPT09IDEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gLTEpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xuICAgICAgICBpZiAobi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW4uaXNTbWFsbCkgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGV4cG9uZW50IFwiICsgbi50b1N0cmluZygpICsgXCIgaXMgdG9vIGxhcmdlLlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSA9IE1hdGgucG93KGEsIGIpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZSh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHggPSB0aGlzO1xuICAgICAgICB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChiICYgMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSAwKSBicmVhaztcbiAgICAgICAgICAgIGIgLz0gMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3c7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIF8wID0gQmlnSW50KDApLCBfMSA9IEJpZ0ludCgxKSwgXzIgPSBCaWdJbnQoMik7XG4gICAgICAgIGlmIChiID09PSBfMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBfMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSBfMSkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBCaWdJbnQoLTEpKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKSByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChfMCk7XG4gICAgICAgIHZhciB4ID0gdGhpcztcbiAgICAgICAgdmFyIHkgPSBJbnRlZ2VyWzFdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChiICYgXzEpID09PSBfMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSBfMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IF8yO1xuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gZnVuY3Rpb24gKGV4cCwgbW9kKSB7XG4gICAgICAgIGV4cCA9IHBhcnNlVmFsdWUoZXhwKTtcbiAgICAgICAgbW9kID0gcGFyc2VWYWx1ZShtb2QpO1xuICAgICAgICBpZiAobW9kLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdGFrZSBtb2RQb3cgd2l0aCBtb2R1bHVzIDBcIik7XG4gICAgICAgIHZhciByID0gSW50ZWdlclsxXSxcbiAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1vZChtb2QpO1xuICAgICAgICBpZiAoZXhwLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgZXhwID0gZXhwLm11bHRpcGx5KEludGVnZXJbLTFdKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLm1vZEludihtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChleHAuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xuICAgICAgICAgICAgZXhwID0gZXhwLmRpdmlkZSgyKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLnNxdWFyZSgpLm1vZChtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcblxuICAgIGZ1bmN0aW9uIGNvbXBhcmVBYnMoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBhW2ldID4gYltpXSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdmFyIGIgPSBwYXJzZVZhbHVlKHYpLnZhbHVlO1xuICAgICAgICBhID0gYSA+PSAwID8gYSA6IC1hO1xuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xuICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gYWJvdXQgY29tcGFyaXNvbiB3aXRoIEluZmluaXR5OlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpICogKHRoaXMuc2lnbiA/IC0xIDogMSk7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEgPCAwID8gMSA6IC0xO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZVRvID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSAhPT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ndCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3JlYXRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ndCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXI7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubHQgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlc3NlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmx0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA+PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnZhbHVlKSA9PT0gMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnMoKS52YWx1ZSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobi5jb21wYXJlQWJzKDIpID09PSAwKSByZXR1cm4gdGhpcy5pc0V2ZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kKG4pLmlzWmVybygpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeTtcblxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgICAgIHZhciBuID0gdi5hYnMoKTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uaXNFdmVuKCkgfHwgbi5pc0RpdmlzaWJsZUJ5KDMpIHx8IG4uaXNEaXZpc2libGVCeSg1KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5sZXNzZXIoNDkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICAgICAgdmFyIG5QcmV2ID0gbi5wcmV2KCksXG4gICAgICAgICAgICBiID0gblByZXYsXG4gICAgICAgICAgICByID0gMCxcbiAgICAgICAgICAgIGQsIHQsIGksIHg7XG4gICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSBiID0gYi5kaXZpZGUoMiksIHIrKztcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChuLmxlc3NlcihhW2ldKSkgY29udGludWU7XG4gICAgICAgICAgICB4ID0gYmlnSW50KGFbaV0pLm1vZFBvdyhiLCBuKTtcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgICAgICB4ID0geC5zcXVhcmUoKS5tb2Qobik7XG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoeC5lcXVhbHMoblByZXYpKSBjb250aW51ZSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCBcInN0cmljdFwiIHRvIHRydWUgdG8gZm9yY2UgR1JILXN1cHBvcnRlZCBsb3dlciBib3VuZCBvZiAyKmxvZyhOKV4yXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcbiAgICAgICAgdmFyIGlzUHJpbWUgPSBpc0Jhc2ljUHJpbWUodGhpcyk7XG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XG4gICAgICAgIHZhciBiaXRzID0gbi5iaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICAgICAgdmFyIGxvZ04gPSBNYXRoLmxvZygyKSAqIGJpdHMudG9KU051bWJlcigpO1xuICAgICAgICB2YXIgdCA9IE1hdGguY2VpbCgoc3RyaWN0ID09PSB0cnVlKSA/ICgyICogTWF0aC5wb3cobG9nTiwgMikpIDogbG9nTik7XG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQoaSArIDIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1ByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgdCA9IGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCA/IDUgOiBpdGVyYXRpb25zO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50LnJhbmRCZXR3ZWVuKDIsIG4ubWludXMoMikpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludiA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciB0ID0gYmlnSW50Lnplcm8sIG5ld1QgPSBiaWdJbnQub25lLCByID0gcGFyc2VWYWx1ZShuKSwgbmV3UiA9IHRoaXMuYWJzKCksIHEsIGxhc3RULCBsYXN0UjtcbiAgICAgICAgd2hpbGUgKCFuZXdSLmlzWmVybygpKSB7XG4gICAgICAgICAgICBxID0gci5kaXZpZGUobmV3Uik7XG4gICAgICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgICAgICB0ID0gbmV3VDtcbiAgICAgICAgICAgIHIgPSBuZXdSO1xuICAgICAgICAgICAgbmV3VCA9IGxhc3RULnN1YnRyYWN0KHEubXVsdGlwbHkobmV3VCkpO1xuICAgICAgICAgICAgbmV3UiA9IGxhc3RSLnN1YnRyYWN0KHEubXVsdGlwbHkobmV3UikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghci5pc1VuaXQoKSkgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgICAgIGlmICh0LmNvbXBhcmUoMCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0ID0gdC5hZGQobik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5uZWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RJbnYgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZEludiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSArIDEgPCBNQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIGZhbHNlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAtIDEgPiAtTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCB0cnVlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgdmFyIHBvd2Vyc09mVHdvID0gWzFdO1xuICAgIHdoaWxlICgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0gPD0gQkFTRSkgcG93ZXJzT2ZUd28ucHVzaCgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0pO1xuICAgIHZhciBwb3dlcnMyTGVuZ3RoID0gcG93ZXJzT2ZUd28ubGVuZ3RoLCBoaWdoZXN0UG93ZXIyID0gcG93ZXJzT2ZUd29bcG93ZXJzMkxlbmd0aCAtIDFdO1xuXG4gICAgZnVuY3Rpb24gc2hpZnRfaXNTbWFsbChuKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhuKSA8PSBCQVNFO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRSaWdodCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubXVsdGlwbHkocG93ZXJzT2ZUd29bbl0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdExlZnQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcmVtUXVvO1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0TGVmdCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpIHx8IChyZXN1bHQuaXNOZWdhdGl2ZSgpICYmIHJlc3VsdC5pc1VuaXQoKSkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBwb3dlcnNPZlR3b1tuXSk7XG4gICAgICAgIHJldHVybiByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRSaWdodCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ7XG5cbiAgICBmdW5jdGlvbiBiaXR3aXNlKHgsIHksIGZuKSB7XG4gICAgICAgIHkgPSBwYXJzZVZhbHVlKHkpO1xuICAgICAgICB2YXIgeFNpZ24gPSB4LmlzTmVnYXRpdmUoKSwgeVNpZ24gPSB5LmlzTmVnYXRpdmUoKTtcbiAgICAgICAgdmFyIHhSZW0gPSB4U2lnbiA/IHgubm90KCkgOiB4LFxuICAgICAgICAgICAgeVJlbSA9IHlTaWduID8geS5ub3QoKSA6IHk7XG4gICAgICAgIHZhciB4RGlnaXQgPSAwLCB5RGlnaXQgPSAwO1xuICAgICAgICB2YXIgeERpdk1vZCA9IG51bGwsIHlEaXZNb2QgPSBudWxsO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHdoaWxlICgheFJlbS5pc1plcm8oKSB8fCAheVJlbS5pc1plcm8oKSkge1xuICAgICAgICAgICAgeERpdk1vZCA9IGRpdk1vZEFueSh4UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHhEaWdpdCA9IHhEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHhTaWduKSB7XG4gICAgICAgICAgICAgICAgeERpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB4RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeURpdk1vZCA9IGRpdk1vZEFueSh5UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHlEaWdpdCA9IHlEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHlTaWduKSB7XG4gICAgICAgICAgICAgICAgeURpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB5RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeFJlbSA9IHhEaXZNb2RbMF07XG4gICAgICAgICAgICB5UmVtID0geURpdk1vZFswXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZuKHhEaWdpdCwgeURpZ2l0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bSA9IGZuKHhTaWduID8gMSA6IDAsIHlTaWduID8gMSA6IDApICE9PSAwID8gYmlnSW50KC0xKSA6IGJpZ0ludCgwKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHJlc3VsdC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgICAgc3VtID0gc3VtLm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpLmFkZChiaWdJbnQocmVzdWx0W2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLnByZXYoKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAmIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hbmQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFuZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgfCBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3I7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSBeIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS54b3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnhvciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnhvcjtcblxuICAgIHZhciBMT0JNQVNLX0kgPSAxIDw8IDMwLCBMT0JNQVNLX0JJID0gKEJBU0UgJiAtQkFTRSkgKiAoQkFTRSAmIC1CQVNFKSB8IExPQk1BU0tfSTtcbiAgICBmdW5jdGlvbiByb3VnaExPQihuKSB7IC8vIGdldCBsb3dlc3RPbmVCaXQgKHJvdWdoKVxuICAgICAgICAvLyBTbWFsbEludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDMwKVxuICAgICAgICAvLyBCaWdJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAxNCkgW0JBU0U9MWU3XVxuICAgICAgICB2YXIgdiA9IG4udmFsdWUsXG4gICAgICAgICAgICB4ID0gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgPyB2IHwgTE9CTUFTS19JIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIiA/IHYgfCBCaWdJbnQoTE9CTUFTS19JKSA6XG4gICAgICAgICAgICAgICAgICAgIHZbMF0gKyB2WzFdICogQkFTRSB8IExPQk1BU0tfQkk7XG4gICAgICAgIHJldHVybiB4ICYgLXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZSkge1xuICAgICAgICBpZiAoYmFzZS5jb21wYXJlVG8odmFsdWUpIDw9IDApIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBpbnRlZ2VyTG9nYXJpdGhtKHZhbHVlLCBiYXNlLnNxdWFyZShiYXNlKSk7XG4gICAgICAgICAgICB2YXIgcCA9IHRtcC5wO1xuICAgICAgICAgICAgdmFyIGUgPSB0bXAuZTtcbiAgICAgICAgICAgIHZhciB0ID0gcC5tdWx0aXBseShiYXNlKTtcbiAgICAgICAgICAgIHJldHVybiB0LmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCA/IHsgcDogdCwgZTogZSAqIDIgKyAxIH0gOiB7IHA6IHAsIGU6IGUgKiAyIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcDogYmlnSW50KDEpLCBlOiAwIH07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXM7XG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpIDwgMCkge1xuICAgICAgICAgICAgbiA9IG4ubmVnYXRlKCkuc3VidHJhY3QoYmlnSW50KDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmlnSW50KGludGVnZXJMb2dhcml0aG0obiwgYmlnSW50KDIpKS5lKS5hZGQoYmlnSW50KDEpKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5iaXRMZW5ndGggPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG1heChhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgcmV0dXJuIGEuZ3JlYXRlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtaW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmxlc3NlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnY2QoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XG4gICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJuIGE7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYjtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHJldHVybiBhO1xuICAgICAgICB2YXIgYyA9IEludGVnZXJbMV0sIGQsIHQ7XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpICYmIGIuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgIGQgPSBtaW4ocm91Z2hMT0IoYSksIHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGIgPSBiLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGMgPSBjLm11bHRpcGx5KGQpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUocm91Z2hMT0IoYSkpO1xuICAgICAgICB9XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICAgICAgYiA9IGIuZGl2aWRlKHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhLmdyZWF0ZXIoYikpIHtcbiAgICAgICAgICAgICAgICB0ID0gYjsgYiA9IGE7IGEgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IGIuc3VidHJhY3QoYSk7XG4gICAgICAgIH0gd2hpbGUgKCFiLmlzWmVybygpKTtcbiAgICAgICAgcmV0dXJuIGMuaXNVbml0KCkgPyBhIDogYS5tdWx0aXBseShjKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGNtKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICByZXR1cm4gYS5kaXZpZGUoZ2NkKGEsIGIpKS5tdWx0aXBseShiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmFuZEJldHdlZW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHZhciBsb3cgPSBtaW4oYSwgYiksIGhpZ2ggPSBtYXgoYSwgYik7XG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XG4gICAgICAgIGlmIChyYW5nZS5pc1NtYWxsKSByZXR1cm4gbG93LmFkZChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByYW5nZSkpO1xuICAgICAgICB2YXIgZGlnaXRzID0gdG9CYXNlKHJhbmdlLCBCQVNFKS52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdLCByZXN0cmljdGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b3AgPSByZXN0cmljdGVkID8gZGlnaXRzW2ldIDogQkFTRTtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHRydW5jYXRlKE1hdGgucmFuZG9tKCkgKiB0b3ApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZGlnaXQpO1xuICAgICAgICAgICAgaWYgKGRpZ2l0IDwgdG9wKSByZXN0cmljdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvdy5hZGQoSW50ZWdlci5mcm9tQXJyYXkocmVzdWx0LCBCQVNFLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIHZhciBwYXJzZUJhc2UgPSBmdW5jdGlvbiAodGV4dCwgYmFzZSwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICB0ZXh0ID0gU3RyaW5nKHRleHQpO1xuICAgICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIGFic0Jhc2UgPSBNYXRoLmFicyhiYXNlKTtcbiAgICAgICAgdmFyIGFscGhhYmV0VmFsdWVzID0ge307XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWxwaGFiZXRWYWx1ZXNbYWxwaGFiZXRbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjID09PSBcIi1cIikgY29udGludWU7XG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChhbHBoYWJldFZhbHVlc1tjXSA+PSBhYnNCYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIjFcIiAmJiBhYnNCYXNlID09PSAxKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiBiYXNlIFwiICsgYmFzZSArIFwiLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IHBhcnNlVmFsdWUoYmFzZSk7XG4gICAgICAgIHZhciBkaWdpdHMgPSBbXTtcbiAgICAgICAgdmFyIGlzTmVnYXRpdmUgPSB0ZXh0WzBdID09PSBcIi1cIjtcbiAgICAgICAgZm9yIChpID0gaXNOZWdhdGl2ZSA/IDEgOiAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUoYWxwaGFiZXRWYWx1ZXNbY10pKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IFwiPFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICBkbyB7IGkrKzsgfSB3aGlsZSAodGV4dFtpXSAhPT0gXCI+XCIgJiYgaSA8IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBkaWdpdHMucHVzaChwYXJzZVZhbHVlKHRleHQuc2xpY2Uoc3RhcnQgKyAxLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlclwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgdmFyIHZhbCA9IEludGVnZXJbMF0sIHBvdyA9IEludGVnZXJbMV0sIGk7XG4gICAgICAgIGZvciAoaSA9IGRpZ2l0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFsID0gdmFsLmFkZChkaWdpdHNbaV0udGltZXMocG93KSk7XG4gICAgICAgICAgICBwb3cgPSBwb3cudGltZXMoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyB2YWwubmVnYXRlKCkgOiB2YWw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5naWZ5KGRpZ2l0LCBhbHBoYWJldCkge1xuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XG4gICAgICAgIGlmIChkaWdpdCA8IGFscGhhYmV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0W2RpZ2l0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCI8XCIgKyBkaWdpdCArIFwiPlwiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZShuLCBiYXNlKSB7XG4gICAgICAgIGJhc2UgPSBiaWdJbnQoYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzWmVybygpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb252ZXJ0IG5vbnplcm8gbnVtYmVycyB0byBiYXNlIDAuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmVxdWFscygtMSkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIEFycmF5LmFwcGx5KG51bGwsIEFycmF5KC1uLnRvSlNOdW1iZXIoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMSwgMF0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIGFyciA9IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpIC0gMSkpXG4gICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzAsIDFdKTtcbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFsxXSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIGFyciksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmVnID0gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSAmJiBiYXNlLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgbmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIG4gPSBuLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmlzVW5pdCgpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgMSksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogbmVnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgdmFyIGxlZnQgPSBuLCBkaXZtb2Q7XG4gICAgICAgIHdoaWxlIChsZWZ0LmlzTmVnYXRpdmUoKSB8fCBsZWZ0LmNvbXBhcmVBYnMoYmFzZSkgPj0gMCkge1xuICAgICAgICAgICAgZGl2bW9kID0gbGVmdC5kaXZtb2QoYmFzZSk7XG4gICAgICAgICAgICBsZWZ0ID0gZGl2bW9kLnF1b3RpZW50O1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gZGl2bW9kLnJlbWFpbmRlcjtcbiAgICAgICAgICAgIGlmIChkaWdpdC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkaWdpdCA9IGJhc2UubWludXMoZGlnaXQpLmFicygpO1xuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0Lm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dC5wdXNoKGRpZ2l0LnRvSlNOdW1iZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gobGVmdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogb3V0LnJldmVyc2UoKSwgaXNOZWdhdGl2ZTogbmVnIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9CYXNlU3RyaW5nKG4sIGJhc2UsIGFscGhhYmV0KSB7XG4gICAgICAgIHZhciBhcnIgPSB0b0Jhc2UobiwgYmFzZSk7XG4gICAgICAgIHJldHVybiAoYXJyLmlzTmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgYXJyLnZhbHVlLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeSh4LCBhbHBoYWJldCk7XG4gICAgICAgIH0pLmpvaW4oJycpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlLCBsID0gdi5sZW5ndGgsIHN0ciA9IFN0cmluZyh2Wy0tbF0pLCB6ZXJvcyA9IFwiMDAwMDAwMFwiLCBkaWdpdDtcbiAgICAgICAgd2hpbGUgKC0tbCA+PSAwKSB7XG4gICAgICAgICAgICBkaWdpdCA9IFN0cmluZyh2W2xdKTtcbiAgICAgICAgICAgIHN0ciArPSB6ZXJvcy5zbGljZShkaWdpdC5sZW5ndGgpICsgZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ24gPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBzaWduICsgc3RyO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcbiAgICAgICAgaWYgKHJhZGl4ICE9IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTT04gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTsgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU051bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RyaW5nVmFsdWUodikge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKCt2KSkge1xuICAgICAgICAgICAgdmFyIHggPSArdjtcbiAgICAgICAgICAgIGlmICh4ID09PSB0cnVuY2F0ZSh4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydHNOYXRpdmVCaWdJbnQgPyBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh4KSkgOiBuZXcgU21hbGxJbnRlZ2VyKHgpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdlswXSA9PT0gXCItXCI7XG4gICAgICAgIGlmIChzaWduKSB2ID0gdi5zbGljZSgxKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gdi5zcGxpdCgvZS9pKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA+IDIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBzcGxpdC5qb2luKFwiZVwiKSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHZhciBleHAgPSBzcGxpdFsxXTtcbiAgICAgICAgICAgIGlmIChleHBbMF0gPT09IFwiK1wiKSBleHAgPSBleHAuc2xpY2UoMSk7XG4gICAgICAgICAgICBleHAgPSArZXhwO1xuICAgICAgICAgICAgaWYgKGV4cCAhPT0gdHJ1bmNhdGUoZXhwKSB8fCAhaXNQcmVjaXNlKGV4cCkpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBleHAgKyBcIiBpcyBub3QgYSB2YWxpZCBleHBvbmVudC5cIik7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IHNwbGl0WzBdO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZSA9IHRleHQuaW5kZXhPZihcIi5cIik7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbFBsYWNlID49IDApIHtcbiAgICAgICAgICAgICAgICBleHAgLT0gdGV4dC5sZW5ndGggLSBkZWNpbWFsUGxhY2UgLSAxO1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIGRlY2ltYWxQbGFjZSkgKyB0ZXh0LnNsaWNlKGRlY2ltYWxQbGFjZSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cCA8IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbmNsdWRlIG5lZ2F0aXZlIGV4cG9uZW50IHBhcnQgZm9yIGludGVnZXJzXCIpO1xuICAgICAgICAgICAgdGV4dCArPSAobmV3IEFycmF5KGV4cCArIDEpKS5qb2luKFwiMFwiKTtcbiAgICAgICAgICAgIHYgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1ZhbGlkID0gL14oWzAtOV1bMC05XSopJC8udGVzdCh2KTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHNpZ24gPyBcIi1cIiArIHYgOiB2KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSBbXSwgbWF4ID0gdi5sZW5ndGgsIGwgPSBMT0dfQkFTRSwgbWluID0gbWF4IC0gbDtcbiAgICAgICAgd2hpbGUgKG1heCA+IDApIHtcbiAgICAgICAgICAgIHIucHVzaCgrdi5zbGljZShtaW4sIG1heCkpO1xuICAgICAgICAgICAgbWluIC09IGw7XG4gICAgICAgICAgICBpZiAobWluIDwgMCkgbWluID0gMDtcbiAgICAgICAgICAgIG1heCAtPSBsO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU51bWJlclZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQodikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZWNpc2UodikpIHtcbiAgICAgICAgICAgIGlmICh2ICE9PSB0cnVuY2F0ZSh2KSkgdGhyb3cgbmV3IEVycm9yKHYgKyBcIiBpcyBub3QgYW4gaW50ZWdlci5cIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWJlclZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgLy8gUHJlLWRlZmluZSBudW1iZXJzIGluIHJhbmdlIFstOTk5LDk5OV1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykge1xuICAgICAgICBJbnRlZ2VyW2ldID0gcGFyc2VWYWx1ZShpKTtcbiAgICAgICAgaWYgKGkgPiAwKSBJbnRlZ2VyWy1pXSA9IHBhcnNlVmFsdWUoLWkpO1xuICAgIH1cbiAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIEludGVnZXIub25lID0gSW50ZWdlclsxXTtcbiAgICBJbnRlZ2VyLnplcm8gPSBJbnRlZ2VyWzBdO1xuICAgIEludGVnZXIubWludXNPbmUgPSBJbnRlZ2VyWy0xXTtcbiAgICBJbnRlZ2VyLm1heCA9IG1heDtcbiAgICBJbnRlZ2VyLm1pbiA9IG1pbjtcbiAgICBJbnRlZ2VyLmdjZCA9IGdjZDtcbiAgICBJbnRlZ2VyLmxjbSA9IGxjbTtcbiAgICBJbnRlZ2VyLmlzSW5zdGFuY2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIgfHwgeCBpbnN0YW5jZW9mIFNtYWxsSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgTmF0aXZlQmlnSW50OyB9O1xuICAgIEludGVnZXIucmFuZEJldHdlZW4gPSByYW5kQmV0d2VlbjtcblxuICAgIEludGVnZXIuZnJvbUFycmF5ID0gZnVuY3Rpb24gKGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cy5tYXAocGFyc2VWYWx1ZSksIHBhcnNlVmFsdWUoYmFzZSB8fCAxMCksIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG4iLCIvKiBnbG9iYWwgYmlnSW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vLyBXZSByZXByZXNlbnQgYSBbWi50XSBhcyBhIGphdmFzY3JpcHQgMzJiaXQgaW50ZWdlcnMgaWYgaXQgZml0cyBvciBhcyBhIGJpZ0ludC5cblxuLy9Qcm92aWRlczogbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9ub3JtYWxpemUoeCl7XG4gIHZhciB5ID0geC50b0pTTnVtYmVyICgpIHwgMDtcbiAgaWYoeC5lcXVhbHMoYmlnSW50KHkpKSkgcmV0dXJuIHk7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X211bF9vdmVyZmxvd3NcbmZ1bmN0aW9uIG1sX3pfbXVsX292ZXJmbG93cyh4LHkpe1xuICB2YXIgeiA9IHgqeTtcbiAgcmV0dXJuIHogIT0gKHp8MCk7XG59XG5cbi8vZXh0ZXJuYWwgaW5pdDogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfemFyaXRoX21hcnNoYWwsIGNhbWxfemFyaXRoX3VubWFyc2hhbCwgY2FtbF9jdXN0b21fb3BzLCBtbF96X2hhc2gsIG1sX3pfY29tcGFyZVxuZnVuY3Rpb24gbWxfel9pbml0KHVuaXQpIHtcbiAgY2FtbF9jdXN0b21fb3BzWydfeiddID1cbiAgICB7IHNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX21hcnNoYWwsXG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX3VubWFyc2hhbCxcbiAgICAgIGhhc2ggOiBtbF96X2hhc2gsXG4gICAgICBjb21wYXJlIDogbWxfel9jb21wYXJlLFxuICAgIH07XG4gIHJldHVybiAwIH1cblxuLy9leHRlcm5hbCBtbF96X2luc3RhbGxfZnJhbWV0YWJsZTogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luc3RhbGxfZnJhbWV0YWJsZSBjb25zdFxuZnVuY3Rpb24gbWxfel9pbnN0YWxsX2ZyYW1ldGFibGUodW5pdCkgeyByZXR1cm4gMCB9XG5cbi8vZXh0ZXJuYWwgbmVnOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmVnIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25lZyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5uZWdhdGUoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWRkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9hZGQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfYWRkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hZGQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHN1YjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3ViIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Yih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc3VidHJhY3QoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIG11bDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X211bCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubXVsdGlwbHkoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Rpdih6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpXG4gIGlmKHoyLmVxdWFscyhiaWdJbnQoMCkpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmRpdmlkZShiaWdJbnQoejIpKSlcbn1cblxuLy9leHRlcm5hbCBjZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9jZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfYWRkXG5mdW5jdGlvbiBtbF96X2NkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA+IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X2FkZChtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgZmRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZmRpdlxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdiwgbWxfel9zaWduLCBtbF96X3N1YlxuZnVuY3Rpb24gbWxfel9mZGl2KHoxLCB6Mikge1xuICB2YXIgejFfcG9zID0gbWxfel9zaWduKHoxKTtcbiAgdmFyIHoyX3BvcyA9IG1sX3pfc2lnbih6Mik7XG4gIGlmICh6MV9wb3MgKiB6Ml9wb3MgPCAwKSAvKiBNdWx0aXBsaWNhdGlvbiBpcyBsaWtlIGEgc2lnbndpc2UgeG9yICovIHtcbiAgICBpZiAoIWJpZ0ludCh6MSkubW9kKGJpZ0ludCh6MikpLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgICByZXR1cm4gbWxfel9zdWIobWxfel9kaXYoejEsIHoyKSwgYmlnSW50KDEpKSA7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG4vL2V4dGVybmFsIHJlbTogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcmVtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3JlbSh6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpO1xuICBpZiAoejIuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubW9kKHoyKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2X3JlbTogdCAtPiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfZGl2X3JlbVxuLy9SZXF1aXJlczogbWxfel9kaXYsIG1sX3pfcmVtXG5mdW5jdGlvbiBtbF96X2Rpdl9yZW0oejEsIHoyKSB7XG4gIHJldHVybiBbMCwgbWxfel9kaXYoejEsejIpLCBtbF96X3JlbSh6MSwgejIpXVxufVxuLy9leHRlcm5hbCBzdWNjOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3VjYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zdWNjKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5leHQoKSk7XG59XG5cbi8vZXh0ZXJuYWwgcHJlZDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3ByZWQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJlZCh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wcmV2KCkpO1xufVxuXG4vL2V4dGVybmFsIGFiczogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FicyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hYnMoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ2FuZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nYW5kIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ2FuZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYW5kKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nb3IgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nb3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2d4b3I6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ3hvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2d4b3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnhvcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nbm90OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nbm90IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nbm90KHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5vdCgpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9sZWZ0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X2xlZnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfbGVmdCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0TGVmdChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0UmlnaHQoYW10KSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfcmlnaHRfdHJ1bmM6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2RpdihiaWdJbnQoejEpLCBiaWdJbnQoMikucG93KHoyKSlcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ6IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2ludCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X29mX2ludChpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogbWxfel9vZl9pbnRcbmZ1bmN0aW9uIG1sX3pfb2ZfaW50MzIoaTMyKSB7XG4gIHJldHVybiBtbF96X29mX2ludChpMzIpO1xufVxuXG4vL2V4dGVybmFsIG9mX25hdGl2ZWludDogbmF0aXZlaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfbmF0aXZlaW50IGNvbnN0XG4vL1JlcXVpcmVzOiBtbF96X29mX2ludFxuZnVuY3Rpb24gbWxfel9vZl9uYXRpdmVpbnQoeikge1xuICByZXR1cm4gbWxfel9vZl9pbnQoeilcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ2NDogaW50NjQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQ2NCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfbmVnLCBtbF96X25vcm1hbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksY2FtbF9pbnQ2NF9oaTMyLGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gbWxfel9vZl9pbnQ2NChpNjQpIHtcbiAgdmFyIG5lZyA9IGZhbHNlO1xuICBpZihjYW1sX2ludDY0X2NvbXBhcmUoaTY0LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgwLDApKSA8IDApIHtcbiAgICBuZWcgPSB0cnVlO1xuICAgIGk2NCA9IGNhbWxfaW50NjRfbmVnKGk2NClcbiAgfVxuICB2YXIgbG8gPSBjYW1sX2ludDY0X2xvMzIoaTY0KSA+Pj4gMDtcbiAgdmFyIGhpID0gY2FtbF9pbnQ2NF9oaTMyKGk2NCkgPj4+IDA7XG4gIHZhciB4ID0gYmlnSW50KGxvKS5hZGQoYmlnSW50KGhpKS5zaGlmdExlZnQoMzIpKTtcbiAgaWYobmVnKSB7IHggPSB4Lm5lZ2F0ZSgpIH07XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL2V4dGVybmFsIG9mX2Zsb2F0OiBmbG9hdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2Zsb2F0KGYxKSB7XG4gIGlmKGYxID09IEluZmluaXR5IHx8IGYxID09IC1JbmZpbml0eSB8fCBmMSAhPSBmMSlcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChmMTwwP01hdGguY2VpbChmMSk6TWF0aC5mbG9vcihmMSkpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQ6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3RvX2ludCh6MSkge1xuICBpZiAoejEgPT0gKHoxIHwgMCkpIHJldHVybiB6MSB8IDA7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xufVxuXG4vL2V4dGVybmFsIHRvX2ludDMyOiB0IC0+IGludDMyXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19pbnQzMih6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCB0b19pbnQ2NDogdCAtPiBpbnQ2NFxuLy9Qcm92aWRlczogbWxfel90b19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2ZpdHNfaW50NjQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpXG5mdW5jdGlvbiBtbF96X3RvX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZighbWxfel9maXRzX2ludDY0KHoxKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBtYXNrID0gYmlnSW50KDB4ZmZmZmZmZmYpXG4gIHZhciBsbyA9IHoxLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciBoaSA9IHoxLnNoaWZ0UmlnaHQoMzIpLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciB4ID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vZXh0ZXJuYWwgdGVzdGJpdDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3Rlc3RiaXRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90ZXN0Yml0KHoscG9zKXtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgcmV0dXJuICh6LnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDEpKS50b0pTTnVtYmVyKCkpfDA7XG59XG5cbi8vZXh0ZXJuYWwgdG9fbmF0aXZlaW50OiB0IC0+IG5hdGl2ZWludFxuLy9Qcm92aWRlczogbWxfel90b19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfdG9faW50XG5mdW5jdGlvbiBtbF96X3RvX25hdGl2ZWludCh6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCBmb3JtYXQ6IHN0cmluZyAtPiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel9mb3JtYXQgXG4vL1JlcXVpcmVzOiBiaWdJbnRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfZmFpbHdpdGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Zvcm1hdChmbXQsIHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgdmFyIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2QwNTU1ZDQ1MWNlMjk1YzQ0OTdmMjRhOGQ5OTkzZjhkZDIzMDk3ZGYvei5tbGlwI0wyOTdcbiAgdmFyIGJhc2UgPSAxMDtcbiAgdmFyIGNhcyA9IDA7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBhbHQgPSAwO1xuICB2YXIgZGlyID0gMDtcbiAgdmFyIHNpZ24gPSAnJztcbiAgdmFyIHBhZCA9ICcgJztcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBwcmVmaXg9XCJcIjtcbiAgd2hpbGUoZm10W2lkeF0gPT0gJyUnKSBpZHgrKztcbiAgZm9yKDs7IGlkeCsrKSB7XG4gICAgaWYoZm10W2lkeF0gPT0gJyMnKSBhbHQgPSAxO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICcwJykgcGFkID0gJzAnO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICctJykgZGlyID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnICcgfHwgZm10W2lkeF0gPT0gJysnKSBzaWduID0gZm10W2lkeF07XG4gICAgZWxzZSBicmVhaztcbiAgfVxuICBpZih6MS5sdChiaWdJbnQoMCkpKXtzaWduID0gJy0nO3oxID0gejEubmVnYXRlKCl9O1xuICBmb3IoO2ZtdFtpZHhdPj0nMCcgJiYgZm10W2lkeF0gPD0nOSc7aWR4KyspXG4gICAgd2lkdGg9MTAqd2lkdGggKyAoK2ZtdFtpZHhdKTtcbiAgc3dpdGNoKGZtdFtpZHhdKXtcbiAgY2FzZSAnaSc6IGNhc2UgJ2QnOiBjYXNlICd1JzogYnJlYWs7XG4gIGNhc2UgJ2InOiBiYXNlID0gMjsgaWYoYWx0KSBwcmVmaXggPSBcIjBiXCI7IGJyZWFrO1xuICBjYXNlICdvJzogYmFzZSA9IDg7IGlmKGFsdCkgcHJlZml4ID0gXCIwb1wiOyBicmVhaztcbiAgY2FzZSAneCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjB4XCI7IGJyZWFrO1xuICBjYXNlICdYJzogYmFzZSA9IDE2OyBpZihhbHQpIHByZWZpeCA9IFwiMFhcIjsgY2FzID0gMTsgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIlVuc3VwcG9ydGVkIGZvcm1hdCAnXCIgKyBmbXQgKyBcIidcIik7XG4gIH1cbiAgaWYgKGRpcikgcGFkID0gJyAnO1xuICB2YXIgcmVzID0gejEudG9TdHJpbmcoYmFzZSk7XG4gIGlmIChjYXMgPT09IDEpIHtcbiAgICByZXMgPSByZXMudG9VcHBlckNhc2UoKTtcbiAgfVxuICB2YXIgc2l6ZSA9IHJlcy5sZW5ndGg7XG4gIGlmIChwYWQgPT0gJyAnKSB7XG4gICAgaWYoZGlyKSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcmVzICsgcGFkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcGFkICsgcmVzO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgcHJlID0gc2lnbiArIHByZWZpeDtcbiAgICBmb3IoO3Jlcy5sZW5ndGgrcHJlLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICByZXMgPSBwcmUgKyByZXM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9Qcm92aWRlczoganNvb196X29mX2pzX3N0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKSB7XG4gIGlmIChiYXNlID09IDApIHsgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2I4ZGJhZjQ4YTc5MjcwNjFkZjY5OWFkN2NlNjQyYmI0ZjFmZTUzMDgvY2FtbF96LmMjTDU5OFxuICAgIGJhc2UgPSAxMDtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIHNpZ24gPSAxO1xuICAgIGlmKHNbcF0gPT0gJy0nKSB7IHNpZ24gPSAtMTsgcCsrIH1cbiAgICBlbHNlIGlmIChzW3BdID09ICcrJykgeyBwKysgfVxuICAgIGlmIChzW3BdID09ICcwJykge1xuICAgICAgcCArKztcbiAgICAgIGlmIChzLmxlbmd0aCA9PSBwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJjID0gc1twXTtcbiAgICAgICAgaWYgKGJjID09ICdvJyB8fCBiYyA9PSAnTycpIHtcbiAgICAgICAgICBiYXNlID0gODtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAneCcgfHwgYmMgPT0gJ1gnKSB7XG4gICAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICB9IGVsc2UgaWYgKGJjID09ICdiJyB8fCBiYyA9PSAnQicpIHtcbiAgICAgICAgICBiYXNlID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZihiYXNlICE9IDEwKSB7XG4gICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHArMSk7XG4gICAgICAgICAgaWYoc2lnbiA9PSAtMSkgcyA9IFwiLVwiICsgcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvL3JlbW92ZSBsZWFkaW5nICcrJ1xuICBpZiAoc1swXSA9PSAnKycpIHMgPSBzLnN1YnN0cmluZygxKTtcbiAgLy9yZW1vdmUgbGVhZGluZyAnMCdzXG4gIHMgPSBzLnJlcGxhY2UoL14wKy8sICcnKTtcbiAgLy9ub3JtYWxpemUgXCJlbXB0eVwiIG51bWJlcnNcbiAgaWYocyA9PSAnLScgfHwgcyA9PSAnJykgcyA9ICcwJztcblxuICBmdW5jdGlvbiBkaWdpdChjb2RlKXtcbiAgICBpZihjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHJldHVybiBjb2RlIC0gNDg7XG4gICAgaWYoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikgcmV0dXJuIGNvZGUgLSA5NyArIDEwO1xuICAgIGlmKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgcmV0dXJuIGNvZGUgLSA2NSArIDEwO1xuICB9XG4gIHZhciBpID0gMDtcbiAgaWYoc1tpXSA9PSAnLScpIGkrKztcbiAgZm9yKCA7IGkgPCBzLmxlbmd0aCA7IGkrKyl7XG4gICAgdmFyIGMgPSBkaWdpdChzLmNoYXJDb2RlQXQoaSkpO1xuICAgIGlmKGMgPT0gdW5kZWZpbmVkIHx8IGMgPj0gYmFzZSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgZGlnaXRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChzLCBiYXNlKSk7XG4gIFxufVxuXG4vL2V4dGVybmFsIG9mX3N1YnN0cmluZ19iYXNlOiBpbnQgLT4gc3RyaW5nIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX3N1YnN0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBtbF96X29mX3N1YnN0cmluZ19iYXNlKGJhc2UsIHMsIHBvcywgbGVuKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICBpZihwb3MgIT0gMCB8fCBsZW4gIT0gcy5sZW5ndGgpIHtcbiAgICBpZiAocy5sZW5ndGggLSBwb3MgPCBsZW4pIHtcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgb2Zmc2V0IG9yIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcyA9IHMuc2xpY2UocG9zLHBvcytsZW4pO1xuICB9XG4gIHJldHVybiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcyk7XG59XG5cbi8vZXh0ZXJuYWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9jb21wYXJlIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29tcGFyZSh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQoejIpKTtcbn1cblxuLy9leHRlcm5hbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZXF1YWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9lcXVhbCh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuZXF1YWxzKGJpZ0ludCh6MikpO1xufVxuXG4vL2V4dGVybmFsIHNpZ246IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3NpZ24gY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9zaWduKHoxKSB7XG4gIHJldHVybiBiaWdJbnQoejEpLmNvbXBhcmUoYmlnSW50Lnplcm8pO1xufVxuXG4vL2V4dGVybmFsIGdjZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZ2NkXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludC5nY2QoYmlnSW50KHoxKSwgYmlnSW50KHoyKSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIG51bWJpdHM6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X251bWJpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9udW1iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIG4gPSAwO1xuICB2YXIgdXBwZXJCb3VuZCA9IGJpZ0ludC5vbmU7XG4gIHdoaWxlICh1cHBlckJvdW5kLmxlcSh6MSkpIHtcbiAgICBuICs9IDE7XG4gICAgdXBwZXJCb3VuZCA9IHVwcGVyQm91bmQubXVsdGlwbHkoMik7XG4gIH1cbiAgcmV0dXJuIG47IC8vIDJee24tMX0gPD0gfHh8IDwgMl5uXG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50KHoxKSB7XG4gIGlmKHoxID09ICh6MSB8IDApKSByZXR1cm4gMTtcbiAgZWxzZSByZXR1cm4gMDtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDMyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQzMlxuLy9SZXF1aXJlczogbWxfel9maXRzX2ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludDMyKHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDY0OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50NjQoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpXG4gIGlmICh6MS5jb21wYXJlKGJpZ0ludChcIjkyMjMzNzIwMzY4NTQ3NzU4MDdcIikpIDw9IDAgJiYgejEuY29tcGFyZShiaWdJbnQoXCItOTIyMzM3MjAzNjg1NDc3NTgwOFwiKSkgPj0gMClcbiAgICByZXR1cm4gMVxuICBlbHNlXG4gICAgcmV0dXJuIDBcbn1cblxuLy9leHRlcm5hbCBmaXRzX25hdGl2ZWludDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfbmF0aXZlaW50XG4vL1JlcXVpcmVzOiBtbF96X2ZpdHNfaW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfbmF0aXZlaW50KHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBwb3dtOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIG1sX3pfaW52ZXJ0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBtbF96X3Bvd20oejEsIHoyLCB6Mykge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIHozID0gYmlnSW50KHozKTtcbiAgaWYoejMuZXF1YWxzKHplcm8pKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIGlmKHozLmFicygpLmVxdWFscyhvbmUpKSByZXR1cm4gMDtcbiAgaWYoejIuZXF1YWxzKHplcm8pKSByZXR1cm4gMTtcbiAgaWYoejIubHQoMCkpIHtcbiAgICB2YXIgaW52ID0gYmlnSW50KG1sX3pfaW52ZXJ0KHoxLCB6MykpO1xuICAgIHZhciByID0gaW52Lm1vZFBvdyh6Mi5uZWdhdGUoKSwgejMpO1xuICAgIGlmKHIubHQoemVybykpIHIgPSByLmFkZCh6My5hYnMoKSk7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9IGVsc2Uge1xuICAgIHZhciByID0gYmlnSW50KHoxKS5tb2RQb3coejIsIHozKTtcbiAgICBpZihyLmx0KHplcm8pKSByID0gci5hZGQoejMuYWJzKCkpO1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfVxufVxuXG4vL2V4dGVybmFsIHBvd246IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd1xuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvdyh6MSwgaTEpIHtcbiAgaTEgPSBiaWdJbnQoaTEpO1xuICBpZiAoaTEubHQoYmlnSW50KDApKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93OiBleHBvbmVudCBtdXN0IGJlIG5vbm5lZ2F0aXZlXCIpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnBvdyhpMSkpO1xufVxuXG4vL2V4dGVybmFsIGhhc2g6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIG1sX3pfaGFzaCh6MSkge1xuICB2YXIgYSA9IGJpZ0ludCh6MSkudG9BcnJheShNYXRoLnBvdygyLCAzMikpO1xuICB2YXIgYWNjID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjID0gY2FtbF9oYXNoX21peF9pbnQoYWNjLCBhLnZhbHVlW2ldKTtcbiAgfVxuICBpZihhLnZhbHVlLmxlbmd0aCAlIDIgIT0gMCkge1xuICAgIGFjYyA9IGNhbWxfaGFzaF9taXhfaW50KGFjYywgMCk7XG4gIH1cbiAgaWYoYS5pc05lZ2F0aXZlKXtcbiAgICBhY2MgPSBhY2MgKyAxXG4gIH1cbiAgcmV0dXJuIGFjYyB8IDBcbn1cblxuLy9leHRlcm5hbCB0b19iaXRzOiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel90b19iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cl9yZXBlYXQsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel90b19iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIHdoaWxlKCF6MS5lcXVhbHMoYmlnSW50KDApKSl7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoejEubW9kKGJpZ0ludCgyNTYpKSk7XG4gICAgejEgPSB6MS5kaXZpZGUoYmlnSW50KDI1NikpO1xuICB9XG4gIHdoaWxlKHJlcy5sZW5ndGggJSA0ICE9IDApe1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDApO1xuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfYml0czogc3RyaW5nIC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfYml0cyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2JpdHMoejEpIHtcbiAgdmFyIHIgPSBiaWdJbnQuemVyb1xuICB2YXIgYmFzZTEgPSBiaWdJbnQoMjU2KTtcbiAgdmFyIGJhc2UgPSBiaWdJbnQub25lO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHoxKTsgaSsrKXtcbiAgICB2YXIgZCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoejEsaSk7XG4gICAgciA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShkKS5hZGQocik7XG4gICAgYmFzZSA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShiYXNlMSk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xufVxuXG4vL2V4dGVybmFsIHBvd21fc2VjOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21fc2VjXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfcG93bSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvd21fc2VjKHoxLCB6MiwgejMpIHtcbiAgejMgPSBiaWdJbnQoejMpLmFicygpO1xuICAvLyBwb3dtX3NlYyByZXF1aXJlcyB0aGF0IHRoZSBleHBvbmVudCBiZSBwb3NpdGl2ZVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoYmlnSW50KHoyKS5sdChvbmUpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3dtX3NlYzogZXhwb25lbnQgbXVzdCBiZSBwb3NpdGl2ZVwiKTtcbiAgfVxuICBpZiAoIWJpZ0ludCh6MykuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvd21fc2VjOiBtb2R1bHVzIG11c3QgYmUgb2RkXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3Bvd20oejEsIHoyLCB6Mylcbn1cblxuLy9leHRlcm5hbCByb290OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Jvb3Rcbi8vUmVxdWlyZXM6IG1sX3pfcG93LCAgYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Jvb3QoeiwgaSkge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgeiA9IGJpZ0ludCh6KTtcblxuICBpZiAoaSAlIDIgPT09IDAgJiYgei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucm9vdDogZXZlbiByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoeik7XG4gIH1cblxuICB2YXIgc3RhcnQgPSB6ZXJvO1xuICB2YXIgZW5kID0gejtcbiAgdmFyIGFucyA9IG51bGw7XG5cbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICB3aGlsZSAoc3RhcnQubGVxKGVuZCkpXG4gIHtcbiAgICB2YXIgbWlkID0gc3RhcnQuYWRkKGVuZCkuZGl2aWRlKHR3byk7XG4gICAgdmFyIHBvID0gbWlkLnBvdyhpKTtcbiAgICBpZiAocG8uZXF1YWxzKHopKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUobWlkKTtcbiAgICB9IGVsc2UgaWYgKHBvLmx0KHopKSB7XG4gICAgICBzdGFydCA9IG1pZC5uZXh0KCk7XG4gICAgICBhbnMgPSBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pZC5wcmV2KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShhbnMpO1xufVxuXG4vL2V4dGVybmFsIGludmVydDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfaW52ZXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfZ2NkZXh0X2ludGVybiwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfaW52ZXJ0KGEsIG4pIHtcbiAgLy8gQmVjYXVzZSBbYS5tb2RJbnYobildIHByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGZvciBlZGdlIGNhc2VzLFxuICAvLyB3ZSB3cm90ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGdjZGV4dF9pbnRlcm4uXG4gIGEgPSBiaWdJbnQoYSk7XG4gIG4gPSBiaWdJbnQobik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZihuLmFicygpLmVxdWFscyhvbmUpKVxuICAgIHJldHVybiAwO1xuICBpZiAobi5lcXVhbHMoemVybykgJiYgYS5hYnMoKS5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBhO1xuICB9XG4gIGlmIChuLmVxdWFscyh6ZXJvKSB8fCBhLmVxdWFscyh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB2YXIgeCA9IG1sX3pfZ2NkZXh0X2ludGVybihhLCBuKTtcbiAgdmFyIHIgPSBiaWdJbnQoeFsyXSk7XG4gIHZhciB0bXAgPSBiaWdJbnQoYSkubXVsdGlwbHkocikubW9kKG4pO1xuICBpZih0bXAubHQoemVybykpIHRtcCA9IHRtcC5hZGQobi5hYnMoKSk7XG4gIGlmKHIubHQoemVybykpIHIgPSByLmFkZChuLmFicygpKTtcbiAgaWYodG1wLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG4gIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbn1cblxuLy9leHRlcm5hbCBwZXJmZWN0X3Bvd2VyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9wb3dlclxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X251bWJpdHMsIG1sX3pfcm9vdCwgbWxfel9wb3dcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9wb3dlcih6KSB7XG4gIC8vIFJldHVybiB0cnVlIGlmIG9wIGlzIGEgcGVyZmVjdCBwb3dlciwgaS5lLiwgaWYgdGhlcmUgZXhpc3QgaW50ZWdlcnMgYSBhbmRcbiAgLy8gYiwgd2l0aCBiID4gMSwgc3VjaCB0aGF0IG9wID0gYV5iLlxuICAvLyBPdGhlcndpc2UgZmFsc2UuXG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpIHx8IHouZXF1YWxzKG9uZS5uZWdhdGUoKSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICB2YXIgbG9nMnogPSBtbF96X251bWJpdHMoei5hYnMoKSk7XG4gIGZvciAodmFyIGIgPSAyOyBiIDw9IGxvZzJ6OyBiKyspIHtcbiAgICBpZih6Lmx0KHplcm8pICYmIGIgJSAyID09IDApIGNvbnRpbnVlO1xuICAgIHZhciB6cCA9IHouYWJzKCk7XG4gICAgdmFyIHAgPSBiaWdJbnQobWxfel9yb290KHpwLCBiKSk7XG4gICAgaWYoei5sdCh6ZXJvKSkgcCA9IHAubmVnYXRlKCk7XG4gICAgdmFyIHIgPSBiaWdJbnQobWxfel9wb3cocCwgYikpO1xuICAgIGlmICh6LmVxdWFscyhyKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3Rfc3F1YXJlOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9zcXVhcmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290XG5mdW5jdGlvbiBtbF96X3BlcmZlY3Rfc3F1YXJlKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgaWYgKHoubHQoYmlnSW50KDApKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciByb290ID0gYmlnSW50KG1sX3pfcm9vdCh6LCAyKSk7XG4gIGlmIChyb290Lm11bHRpcGx5KHJvb3QpLmVxKHopKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfTtcbn1cblxuLy9leHRlcm5hbCBwcm9iYWJfcHJpbWU6IHQgLT4gaW50IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wcm9iYWJfcHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9wcm9iYWJfcHJpbWUoeiwgaSkge1xuICBpZiAoYmlnSW50KHopLmlzUHJvYmFibGVQcmltZShpKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgbmV4dHByaW1lOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmV4dHByaW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25leHRwcmltZSh6MSkge1xuICAvLyBJbnRlcmVzdGluZ2x5LCB0aGUgemFyaXRoIG5leHRfcHJpbWUgb25seSByZXR1cm5zIFxuICAvLyBwcm9iYWJhbGlzdGljIHByaW1lcy4gIFdlIGRvIHRoZSBzYW1lLCB3aXRoIHRoZSBcbiAgLy8gc2FtZSBwcm9iYWJsaXN0aWMgcGFyYW1ldGVyIG9mIDI1LlxuICAvLyBodHRwczovL2Zvc3NpZXMub3JnL2RveC9nbXAtNi4xLjIvbXB6XzJuZXh0cHJpbWVfOGNfc291cmNlLmh0bWxcbiAgXG4gIHoxID0gYmlnSW50KHoxKVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIGlmICh6MS5sdChvbmUpIHx8IHoxLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICBpZiAoejEuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICB6MSA9IHoxLmFkZCh0d28pO1xuICB9IGVsc2Uge1xuICAgIHoxID0gejEuYWRkKG9uZSk7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoejEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6MSA9IHoxLmFkZCh0d28pXG4gICAgfVxuICB9XG59XG5cbi8vZXh0ZXJuYWwgZXh0cmFjdDogdCAtPiBpbnQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZXh0cmFjdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9leHRyYWN0KHoxLCBwb3MsIGxlbikge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MS5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgyKS5wb3cobGVuKS5zdWJ0cmFjdCgxKSkpO1xufVxuXG4vL2V4dGVybmFsIGdjZGV4dF9pbnRlcm46IHQgLT4gdCAtPiAodCAqIHQgKiBib29sKVxuLy9Qcm92aWRlczogbWxfel9nY2RleHRfaW50ZXJuXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZGV4dF9pbnRlcm4oejEsIHoyKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB2YXIgZ2NkID0gYmlnSW50LmdjZCh6MSx6Mik7XG4gIHZhciBhID0gejE7XG4gIHZhciBiID0gejI7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICB2YXIgbGFzdHggPSBiaWdJbnQoMSk7XG4gIHZhciB5ID0gYmlnSW50KDEpO1xuICB2YXIgbGFzdHkgPSBiaWdJbnQoMSk7XG4gIHZhciBxLCB0LCByO1xuICBpZih6MS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB3aGlsZSghYi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIHEgPSBhLmRpdmlkZShiKTtcbiAgICByID0gYS5zdWJ0cmFjdChxLm11bHRpcGx5KGIpKTtcbiAgICB0ID0geDtcbiAgICB4ID0gbGFzdHguc3VidHJhY3QocS5tdWx0aXBseSh4KSk7XG4gICAgbGFzdHggPSB0O1xuICAgIHQgPSB5O1xuICAgIHkgPSBsYXN0eS5zdWJ0cmFjdChxLm11bHRpcGx5KHkpKTtcbiAgICBsYXN0eSA9IHQ7XG4gICAgYSA9IGI7XG4gICAgYiA9IHI7XG4gIH1cbiAgaWYoYS5sdChiaWdJbnQoMCkpKVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhLm5lZ2F0ZSgpKSxtbF96X25vcm1hbGl6ZShsYXN0eC5uZWdhdGUoKSksMV1cbiAgZWxzZVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhKSxtbF96X25vcm1hbGl6ZShsYXN0eCksMV1cbn1cblxuLy9leHRlcm5hbCBzcXJ0OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3FydFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9zcXJ0KHoxKSB7XG4gIHZhciB6ID0gYmlnSW50KHoxKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0OiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9yb290KHosIDIpO1xufVxuXG4vL2V4dGVybmFsIHNxcnRfcmVtOiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfc3FydF9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NxcnRfcmVtKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0X3JlbTogc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgdmFyIG11bCA9IHJvb3QubXVsdGlwbHkocm9vdCk7XG4gIHZhciBkaWZmID0gei5zdWJ0cmFjdChtdWwpO1xuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKHJvb3QpLCBtbF96X25vcm1hbGl6ZShkaWZmKV1cbn1cblxuLy9leHRlcm5hbCB0cmFpbGluZ196ZXJvczogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdHJhaWxpbmdfemVyb3MgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90cmFpbGluZ196ZXJvcyh6KSB7XG4gIHogPSBiaWdJbnQoeikuYWJzKCk7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5lcXVhbHMoemVybykpIHtcbiAgICAvLyBtYXhfaW50IGluIDMyYml0XG4gICAgcmV0dXJuIDB4N2ZmZmZmZmY7XG4gIH1cbiAgdmFyIGkgPSAwXG4gIHogPSB6Lnhvcih6LnByZXYoKSkuc2hpZnRSaWdodCgxKTtcbiAgZm9yIChpID0gMDsgIXouZXF1YWxzKGJpZ0ludC56ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouc2hpZnRSaWdodCgxKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cblxuLy9leHRlcm5hbCBwb3Bjb3VudDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfcG9wY291bnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9wb3Bjb3VudCh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoemVybyk7IGkrKykge1xuICAgIHogPSB6LmFuZCh6LnByZXYoKSk7XG4gIH1cbiAgaWYoaSAhPSAoaXwwKSkgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBpfDA7XG59XG5cbi8vZXh0ZXJuYWwgaGFtZGlzdDogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYW1kaXN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcG9wY291bnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9oYW1kaXN0KHoxLCB6Mikge1xuICBpZihiaWdJbnQoejEpLmlzTmVnYXRpdmUoKSAhPSBiaWdJbnQoejIpLmlzTmVnYXRpdmUgKCkpe1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIGlmKCh6MSAhPSAoejEgfCAwKSB8fCB6MiAhPSAoejIgfCAwKSkgJiYgKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpIHx8IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSkpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouaGFtZGlzdDogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3BvcGNvdW50KGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBzaXplOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaXplIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2l6ZSh6MSkge1xuICAvLyBDbGFpbSB0byBiZSBhIDMyLWJpdCBhcmNoaXRlY3R1cmUuXG4gIHJldHVybiBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKS52YWx1ZS5sZW5ndGg7XG59XG5cbi8vZXh0ZXJuYWwgZGl2ZXhhY3Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2RpdmV4YWN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2XG5mdW5jdGlvbiBtbF96X2RpdmV4YWN0KHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfbWFyc2hhbFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBjYW1sX3phcml0aF9tYXJzaGFsKHdyaXRlciwgdiwgc3opIHtcbiAgdiA9IGJpZ0ludCh2KTtcbiAgdmFyIGJpdHMgPSB2LnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKTtcbiAgd3JpdGVyLndyaXRlKDgsIGJpdHMuaXNOZWdhdGl2ZSA/MSA6IDApO1xuICB2YXIgYmxvY2sgPSBiaXRzLnZhbHVlLmxlbmd0aDtcbiAgdmFyIGxlbiA9IGJsb2NrICogNDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSBibG9jayAtIDE7IGkgPj0gMDsgaSAtLSl7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAwICkgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDggKSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMTYpICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAyNCkgJiAweGZmKTtcbiAgfVxuICBzelswXSA9IDQgKiAoMSArICgoKGxlbiArIDMpIC8gNCkgfCAwKSk7XG4gIHN6WzFdID0gOCAqICgxICsgKCgobGVuICsgNykgLyA4KSB8IDApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBjYW1sX3phcml0aF91bm1hcnNoYWwocmVhZGVyLCBzeikge1xuICB2YXIgbmVnYXRlO1xuICBzd2l0Y2gocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6IG5lZ2F0ZSA9IHRydWU7IGJyZWFrO1xuICBjYXNlIDA6IG5lZ2F0ZSA9IGZhbHNlOyBicmVhaztcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB6IChtYWxmb3JtZWQgaW5wdXQpXCIpO1xuICB9XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICB2YXIgeCA9IGJpZ0ludCgwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbiAvIDQ7IGkrKyl7XG4gICAgdmFyIHkgPSBiaWdJbnQocmVhZGVyLnJlYWQ4dSgpKTtcbiAgICB5ID0geS5hZGQoKHJlYWRlci5yZWFkOHUoKSkgPDwgOCk7XG4gICAgeSA9IHkuYWRkKChyZWFkZXIucmVhZDh1KCkpIDw8IDE2KTtcbiAgICB5ID0geS5hZGQoKChyZWFkZXIucmVhZDh1KCkpIDw8IDI0KSA+Pj4gMCk7XG4gICAgeCA9IHkuc2hpZnRMZWZ0KGkgKiAzMikuYWRkKHgpO1xuICB9XG4gIGlmKG5lZ2F0ZSkgeCA9IHgubmVnYXRlKCk7XG4gIHN6WzBdID0gbGVuICsgNDtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHgpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gZy5GbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gZy5GbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gZy5JbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gZy5VaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IGcuSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBnLlVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIga2luZDtcbiAgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGYoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczoganNfcHJpbnRfc3Rkb3V0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3Rkb3V0KHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICAmJiB2LmxvZyAmJiB2LmxvZyhzKTtcbiAgfVxufVxuLy9Qcm92aWRlczoganNfcHJpbnRfc3RkZXJyIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3RkZXJyKHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3RkZXJyLndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICYmIHYuZXJyb3IgJiYgdi5lcnJvcihzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgIHJldHVybiBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gIHJldHVybiBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBqc19wcmludF9zdGRlcnIoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIFt1bmRlZmluZWRdKTtcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihuID09IGFyaXR5ICYmIGYubGVuZ3RoID09IGFyaXR5KSByZXR1cm4gZi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixhcmdzKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgLy8gdmFyIF90YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgLy8gdmFyIF90YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgc3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZSBjb25zdFxuLy9EdW1teSBmdW5jdGlvbiFcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZSgpIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSArdikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICBnbG9iYWxUaGlzLm5hdmlnYXRvcj9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGdsb2JhbFRoaXMuY29uc29sZT9nbG9iYWxUaGlzLmNvbnNvbGU6e307XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYodHlwZW9mIGcuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJLCBidXQgd2l0aG91dCB0aGUgd2VhayBzZW1hbnRpY3NcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXQoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgcmV0dXJuICh4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdPT09dW5kZWZpbmVkKT8wOnhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRfY29weVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldCxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXRfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX3dlYWtfZ2V0KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NoZWNrIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY2hlY2soeCwgaSkge1xuICBpZih4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0hPT11bmRlZmluZWQgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldICE9PTApXG4gICAgcmV0dXJuIDE7XG4gIGVsc2VcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxudmFyIGNhbWxfZXBoZV9jcmVhdGUgPSBjYW1sX3dlYWtfY3JlYXRlXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2JsaXRcbnZhciBjYW1sX2VwaGVfYmxpdF9rZXkgPSBjYW1sX3dlYWtfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldFxudmFyIGNhbWxfZXBoZV9nZXRfa2V5ID0gY2FtbF93ZWFrX2dldFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbnZhciBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5ID0gY2FtbF93ZWFrX2dldF9jb3B5XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jaGVja1xudmFyIGNhbWxfZXBoZV9jaGVja19rZXkgPSBjYW1sX3dlYWtfY2hlY2tcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgWzAsIHZdKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgMClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgZHN0W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9hcnJheSxjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLGxlbil7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgY2hhbl9sZW4gPSBjaGFuLmZpbGUubGVuZ3RoKCk7XG4gIGlmKGxlbjwwKSBsZW4gPSBjaGFuX2xlbiAtIGNoYW4ub2Zmc2V0O1xuICBpZihjaGFuLm9mZnNldCArIGxlbiA+IGNoYW5fbGVuKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuICByZXR1cm4gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ1ZiksMCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbnZhciBjYW1sX21kNV9ieXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIGZ1bmN0aW9uIG1kNShidWZmZXIsIGxlbmd0aCkge1xuICAgIHZhciBpID0gbGVuZ3RoO1xuICAgIGJ1ZmZlcltpID4+IDJdIHw9IDB4ODAgPDwgKDggKiAoaSAmIDMpKTtcbiAgICBmb3IgKGkgPSAoaSAmIH4weDMpICsgODsoaSAmIDB4M0YpIDwgNjAgO2kgKz0gNClcbiAgICAgIGJ1ZmZlclsoaSA+PiAyKSAtIDFdID0gMDtcbiAgICBidWZmZXJbKGkgPj4gMikgLTFdID0gbGVuZ3RoIDw8IDM7XG4gICAgYnVmZmVyW2kgPj4gMl0gPSAobGVuZ3RoID4+IDI5KSAmIDB4MUZGRkZGRkY7XG5cbiAgICB2YXIgdyA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XTtcblxuICAgIGZvcihpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgKz0gMTYpIHtcbiAgICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IG5ldyBBcnJheSgxNik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgICAgdFtpICogNCArIGpdID0gKHdbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzLCBvZnMsIGxlbikge1xuICAgIC8vIEZJWDogbWF5YmUgd2Ugc2hvdWxkIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uIGJ5IGNodW5rIG9mIDY0IGJ5dGVzXG4gICAgLy8gYXMgaW4gaHR0cDovL3d3dy5teWVyc2RhaWx5Lm9yZy9qb3NlcGgvamF2YXNjcmlwdC9tZDUuanNcbiAgICB2YXIgYnVmID0gW107XG4gICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpe1xuICAgICAgdmFyIGIgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPVxuICAgICAgICAgIGIuY2hhckNvZGVBdChqKSB8IChiLmNoYXJDb2RlQXQoaisxKSA8PCA4KSB8XG4gICAgICAgICAgKGIuY2hhckNvZGVBdChqKzIpIDw8IDE2KSB8IChiLmNoYXJDb2RlQXQoaiszKSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYi5jaGFyQ29kZUF0KGkgKyBvZnMpIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgIHZhciBhID0gY29udGVudDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKz00KSB7XG4gICAgICAgIHZhciBqID0gaSArIG9mcztcbiAgICAgICAgYnVmW2k+PjJdID0gYVtqXSB8IChhW2orMV0gPDwgOCkgfCAoYVtqKzJdIDw8IDE2KSB8IChhW2orM10gPDwgMjQpO1xuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYnVmW2k+PjJdIHw9IGFbaSArIG9mc10gPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KG1kNShidWYsIGxlbikpO1xuICB9XG59ICgpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG4iLCIvL1RoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQgaW4gQ3N0cnVjdFxuLy9UaGVyZSBhcmUganVzdCBwcm92aWRlZCBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmIGluXG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgblxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmcgPSBsYXp5KFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPSByZWYgdGVtcF9kaXJfbmFtZVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA6PSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICAgICAgICAgICAgICAgICA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID1cbiAgKCogV2F0Y2ggb3V0IGZvciBvdmVyZmxvdyBpbiBjb21wdXRpbmcgcmVeMiArIGltXjIgKilcbiAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gIGlmIHIgPSAwLjAgdGhlbiBpXG4gIGVsc2UgaWYgaSA9IDAuMCB0aGVuIHJcbiAgZWxzZSBpZiByID49IGkgdGhlblxuICAgIGxldCBxID0gaSAvLiByIGluIHIgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuICBlbHNlXG4gICAgbGV0IHEgPSByIC8uIGkgaW4gaSAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2FtbGludGVybmFsQXRvbWljIGlzIGEgZGVwZW5kZW5jeSBvZiBTdGRsaWIsIHNvIGl0IGlzIGNvbXBpbGVkIHdpdGhcbiAgIC1ub3BlcnZhc2l2ZXMuICopXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogV2UgYXJlIG5vdCByZXVzaW5nICgnYSByZWYpIGRpcmVjdGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvblxuICAgYWJvdXQgYXRvbWljaXR5IGlmIHdlIHdpc2ggdG86IGV2ZW4gaW4gYSBzZXF1ZW50aWFsIGltcGxlbWVudGF0aW9uLFxuICAgc2lnbmFscyBhbmQgb3RoZXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBtaWdodCBicmVhayBhdG9taWNpdHkuICopXG50eXBlICdhIHQgPSB7bXV0YWJsZSB2OiAnYX1cblxubGV0IG1ha2UgdiA9IHt2fVxubGV0IGdldCByID0gci52XG5sZXQgc2V0IHIgdiA9IHIudiA8LSB2XG5cbigqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBzZXQgdG8gbmV2ZXIgYmUgaW5saW5lZDogRmxhbWJkYSBpc1xuICAgYWxsb3dlZCB0byBtb3ZlIHN1cnJvdW5kaW5nIGNvZGUgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLFxuICAgaW5jbHVkaW5nIGFsbG9jYXRpb25zLiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZXhjaGFuZ2UgciB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIHY7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldFtAaW5saW5lIG5ldmVyXSBjb21wYXJlX2FuZF9zZXQgciBzZWVuIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICBpZiBjdXIgPT0gc2VlbiB0aGVuIChcbiAgICByLnYgPC0gdjtcbiAgICAoKiBFTkQgQVRPTUlDICopXG4gICAgdHJ1ZVxuICApIGVsc2VcbiAgICBmYWxzZVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfYW5kX2FkZCByIG4gPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gKGN1ciArIG4pO1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgbGV0IG1vZHVsZSBBdG9taWMgPSBDYW1saW50ZXJuYWxBdG9taWMgaW5cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBBdG9taWMubWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9IChDYW1saW50ZXJuYWxBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgOiB1bml0IC0+IGJvb2xcbiAgPSBcImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWRcIlxubGV0ICgpID0gaWYgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCAoKSB0aGVuIGF0X2V4aXQgbWFqb3JcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgPSBDb21wbGV4XG5tb2R1bGUgRGlnZXN0ICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRWl0aGVyICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICA9IEdjXG5tb2R1bGUgR2VubGV4ICAgICAgID0gR2VubGV4XG5tb2R1bGUgSGFzaHRibCAgICAgID0gSGFzaHRibFxubW9kdWxlIEludCAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE5hdGl2ZWludCAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgID0gT3B0aW9uXG5tb2R1bGUgUGFyc2luZyAgICAgID0gUGFyc2luZ1xubW9kdWxlIFBlcnZhc2l2ZXMgICA9IFBlcnZhc2l2ZXNcbm1vZHVsZSBQcmludGV4YyAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZXEgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmVhbSAgICAgICA9IFN0cmVhbVxubW9kdWxlIFN0cmluZyAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSmFuZSBTdHJlZXQgR3JvdXAgTExDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEBkZXByZWNhdGVkIFVzZSB7IVN0ZGxpYn0gKilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5sZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xubGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbmV4Y2VwdGlvbiBFeGl0XG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBtaW4gPSBtaW5cbmxldCBtYXggPSBtYXhcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICgmJikgaW5zdGVhZC5cIl1cbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAofHwpIGluc3RlYWQuXCJdXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5sZXQgYWJzID0gYWJzXG5sZXQgbWF4X2ludCA9IG1heF9pbnRcbmxldCBtaW5faW50ID0gbWluX2ludFxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsbm90ID0gbG5vdFxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmxldCBpbmZpbml0eSA9IGluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gbmVnX2luZmluaXR5XG5sZXQgbmFuID0gbmFuXG5sZXQgbWF4X2Zsb2F0ID0gbWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gbWluX2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IGVwc2lsb25fZmxvYXRcbnR5cGUgbm9ucmVjIGZwY2xhc3MgPSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5sZXQgKCBeICkgPSAoIF4gKVxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCA9IGNoYXJfb2ZfaW50XG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBib29sX29mX3N0cmluZ1xubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGJvb2xfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBpbnRfb2Zfc3RyaW5nX29wdCA9IGludF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2Zsb2F0ID0gc3RyaW5nX29mX2Zsb2F0XG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcbmxldCAoIEAgKSAgPSAoIEAgKVxudHlwZSBub25yZWMgaW5fY2hhbm5lbCA9IGluX2NoYW5uZWxcbnR5cGUgbm9ucmVjIG91dF9jaGFubmVsID0gb3V0X2NoYW5uZWxcbmxldCBzdGRpbiA9IHN0ZGluXG5sZXQgc3Rkb3V0ID0gc3Rkb3V0XG5sZXQgc3RkZXJyID0gc3RkZXJyXG5sZXQgcHJpbnRfY2hhciA9IHByaW50X2NoYXJcbmxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbmxldCBwcmludF9ieXRlcyA9IHByaW50X2J5dGVzXG5sZXQgcHJpbnRfaW50ID0gcHJpbnRfaW50XG5sZXQgcHJpbnRfZmxvYXQgPSBwcmludF9mbG9hdFxubGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG5sZXQgcHJpbnRfbmV3bGluZSA9IHByaW50X25ld2xpbmVcbmxldCBwcmVycl9jaGFyID0gcHJlcnJfY2hhclxubGV0IHByZXJyX3N0cmluZyA9IHByZXJyX3N0cmluZ1xubGV0IHByZXJyX2J5dGVzID0gcHJlcnJfYnl0ZXNcbmxldCBwcmVycl9pbnQgPSBwcmVycl9pbnRcbmxldCBwcmVycl9mbG9hdCA9IHByZXJyX2Zsb2F0XG5sZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcbmxldCBwcmVycl9uZXdsaW5lID0gcHJlcnJfbmV3bGluZVxubGV0IHJlYWRfbGluZSA9IHJlYWRfbGluZVxubGV0IHJlYWRfaW50ID0gcmVhZF9pbnRcbmxldCByZWFkX2ludF9vcHQgPSByZWFkX2ludF9vcHRcbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdFxubGV0IHJlYWRfZmxvYXRfb3B0ID0gcmVhZF9mbG9hdF9vcHRcbnR5cGUgbm9ucmVjIG9wZW5fZmxhZyA9IG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcbmxldCBvcGVuX291dCA9IG9wZW5fb3V0XG5sZXQgb3Blbl9vdXRfYmluID0gb3Blbl9vdXRfYmluXG5sZXQgb3Blbl9vdXRfZ2VuID0gb3Blbl9vdXRfZ2VuXG5sZXQgZmx1c2ggPSBmbHVzaFxubGV0IGZsdXNoX2FsbCA9IGZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gb3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfc3RyaW5nID0gb3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IG91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IG91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBvdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2J5dGUgPSBvdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gb3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfdmFsdWUgPSBvdXRwdXRfdmFsdWVcbmxldCBzZWVrX291dCA9IHNlZWtfb3V0XG5sZXQgcG9zX291dCA9IHBvc19vdXRcbmxldCBvdXRfY2hhbm5lbF9sZW5ndGggPSBvdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9vdXQgPSBjbG9zZV9vdXRcbmxldCBjbG9zZV9vdXRfbm9lcnIgPSBjbG9zZV9vdXRfbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IG9wZW5faW4gPSBvcGVuX2luXG5sZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2JpblxubGV0IG9wZW5faW5fZ2VuID0gb3Blbl9pbl9nZW5cbmxldCBpbnB1dF9jaGFyID0gaW5wdXRfY2hhclxubGV0IGlucHV0X2xpbmUgPSBpbnB1dF9saW5lXG5sZXQgaW5wdXQgPSBpbnB1dFxubGV0IHJlYWxseV9pbnB1dCA9IHJlYWxseV9pbnB1dFxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5nXG5sZXQgaW5wdXRfYnl0ZSA9IGlucHV0X2J5dGVcbmxldCBpbnB1dF9iaW5hcnlfaW50ID0gaW5wdXRfYmluYXJ5X2ludFxubGV0IGlucHV0X3ZhbHVlID0gaW5wdXRfdmFsdWVcbmxldCBzZWVrX2luID0gc2Vla19pblxubGV0IHBvc19pbiA9IHBvc19pblxubGV0IGluX2NoYW5uZWxfbGVuZ3RoID0gaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9pbiA9IGNsb3NlX2luXG5sZXQgY2xvc2VfaW5fbm9lcnIgPSBjbG9zZV9pbl9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9pbiA9IHNldF9iaW5hcnlfbW9kZV9pblxubW9kdWxlIExhcmdlRmlsZSA9IExhcmdlRmlsZVxudHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWidcbiAgfCAnXFwxOTInIC4uICdcXDIxNCdcbiAgfCAnXFwyMTYnIC4uICdcXDIyMicgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneidcbiAgfCAnXFwyMjQnIC4uICdcXDI0NidcbiAgfCAnXFwyNDgnIC4uICdcXDI1NCcgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IG1hcnNoYWwgKG9iaiA6IHQpID1cbiAgTWFyc2hhbC50b19ieXRlcyBvYmogW11cbmxldCB1bm1hcnNoYWwgc3RyIHBvcyA9XG4gIChNYXJzaGFsLmZyb21fYnl0ZXMgc3RyIHBvcywgcG9zICsgTWFyc2hhbC50b3RhbF9zaXplIHN0ciBwb3MpXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG5sZXQgcmFpc2VfdW5kZWZpbmVkID0gT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBVbmRlZmluZWQpXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6IE9iai50IC0+IE9iai50IC0+IHVuaXQgPSBcImNhbWxfb2JqX21ha2VfZm9yd2FyZFwiXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJhaXNlIGVcblxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfdmFsX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICByZXN1bHRcblxuXG4oKiBbZm9yY2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXMgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmVcbiAgIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0cyBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsXG4gICBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxuXG5sZXQgZm9yY2UgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0cyB0YWcgY291bGQgaGF2ZVxuICAgICAgIGNoYW5nZWQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSlcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfbGF6eV9ibG9jayBsenZcblxuXG5sZXQgZm9yY2VfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcblxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cblxubGV0IGZvcmNlX3ZhbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfdmFsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBsYXp5X2Zyb21fZnVuID0gZnJvbV9mdW5cblxubGV0IGxhenlfZnJvbV92YWwgPSBmcm9tX3ZhbFxuXG5sZXQgbGF6eV9pc192YWwgPSBpc192YWxcblxuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGxhenlfZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBjZWxsIG9wdGlvblxuYW5kICdhIGNlbGwgPSB7IG11dGFibGUgY291bnQgOiBpbnQ7IG11dGFibGUgZGF0YSA6ICdhIGRhdGEgfVxuYW5kICdhIGRhdGEgPVxuICAgIFNlbXB0eVxuICB8IFNjb25zIG9mICdhICogJ2EgZGF0YVxuICB8IFNhcHAgb2YgJ2EgZGF0YSAqICdhIGRhdGFcbiAgfCBTbGF6eSBvZiAnYSBkYXRhIExhenkudFxuICB8IFNnZW4gb2YgJ2EgZ2VuXG4gIHwgU2J1ZmZpbyA6IGJ1ZmZpbyAtPiBjaGFyIGRhdGFcbmFuZCAnYSBnZW4gPSB7IG11dGFibGUgY3VyciA6ICdhIG9wdGlvbiBvcHRpb247IGZ1bmMgOiBpbnQgLT4gJ2Egb3B0aW9uIH1cbmFuZCBidWZmaW8gPVxuICB7IGljIDogaW5fY2hhbm5lbDsgYnVmZiA6IGJ5dGVzOyBtdXRhYmxlIGxlbiA6IGludDsgbXV0YWJsZSBpbmQgOiBpbnQgfVxuXG5leGNlcHRpb24gRmFpbHVyZVxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgeyBjb3VudCB9IC0+IGNvdW50XG5sZXQgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBTZW1wdHlcbiAgfCBTb21lIHsgZGF0YSB9IC0+IGRhdGFcblxubGV0IGZpbGxfYnVmZiBiID1cbiAgYi5sZW4gPC0gaW5wdXQgYi5pYyBiLmJ1ZmYgMCAoQnl0ZXMubGVuZ3RoIGIuYnVmZik7IGIuaW5kIDwtIDBcblxuXG5sZXQgcmVjIGdldF9kYXRhIDogdHlwZSB2LiBpbnQgLT4gdiBkYXRhIC0+IHYgZGF0YSA9IGZ1biBjb3VudCBkIC0+IG1hdGNoIGQgd2l0aFxuICgqIFJldHVybnMgZWl0aGVyIFNlbXB0eSBvciBTY29ucyhhLCBfKSBldmVuIHdoZW4gZCBpcyBhIGdlbmVyYXRvclxuICAgIG9yIGEgYnVmZmVyLiBJbiB0aG9zZSBjYXNlcywgdGhlIGl0ZW0gYSBpcyBzZWVuIGFzIGV4dHJhY3RlZCBmcm9tXG4gdGhlIGdlbmVyYXRvci9idWZmZXIuXG4gVGhlIGNvdW50IHBhcmFtZXRlciBpcyB1c2VkIGZvciBjYWxsaW5nIGBTZ2VuLWZ1bmN0aW9ucycuICAqKVxuICAgU2VtcHR5IHwgU2NvbnMgKF8sIF8pIC0+IGRcbiB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgY291bnQgZDEgd2l0aFxuICAgICAgIFNjb25zIChhLCBkMTEpIC0+IFNjb25zIChhLCBTYXBwIChkMTEsIGQyKSlcbiAgICAgfCBTZW1wdHkgLT4gZ2V0X2RhdGEgY291bnQgZDJcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNnZW4ge2N1cnIgPSBTb21lIE5vbmV9IC0+IFNlbXB0eVxuIHwgU2dlbiAoe2N1cnIgPSBTb21lKFNvbWUgYSl9IGFzIGcpIC0+XG4gICAgIGcuY3VyciA8LSBOb25lOyBTY29ucyhhLCBkKVxuIHwgU2dlbiBnIC0+XG4gICAgIGJlZ2luIG1hdGNoIGcuZnVuYyBjb3VudCB3aXRoXG4gICAgICAgTm9uZSAtPiBnLmN1cnIgPC0gU29tZShOb25lKTsgU2VtcHR5XG4gICAgIHwgU29tZSBhIC0+IFNjb25zKGEsIGQpXG4gICAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgZW5kXG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIFNlbXB0eSBlbHNlXG4gICAgICAgbGV0IHIgPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZCBpblxuICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICAgIGIuaW5kIDwtIHN1Y2MgYi5pbmQ7IFNjb25zKHIsIGQpXG4gfCBTbGF6eSBmIC0+IGdldF9kYXRhIGNvdW50IChMYXp5LmZvcmNlIGYpXG5cblxubGV0IHJlYyBwZWVrX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB2IG9wdGlvbiA9IGZ1biBzIC0+XG4gKCogY29uc3VsdCB0aGUgZmlyc3QgaXRlbSBvZiBzICopXG4gbWF0Y2ggcy5kYXRhIHdpdGhcbiAgIFNlbXB0eSAtPiBOb25lXG4gfCBTY29ucyAoYSwgXykgLT4gU29tZSBhXG4gfCBTYXBwIChfLCBfKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBzLmNvdW50IHMuZGF0YSB3aXRoXG4gICAgICAgU2NvbnMoYSwgXykgYXMgZCAtPiBzLmRhdGEgPC0gZDsgU29tZSBhXG4gICAgIHwgU2VtcHR5IC0+IE5vbmVcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNsYXp5IGYgLT4gcy5kYXRhIDwtIChMYXp5LmZvcmNlIGYpOyBwZWVrX2RhdGEgc1xuIHwgU2dlbiB7Y3VyciA9IFNvbWUgYX0gLT4gYVxuIHwgU2dlbiBnIC0+IGxldCB4ID0gZy5mdW5jIHMuY291bnQgaW4gZy5jdXJyIDwtIFNvbWUgeDsgeFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBiZWdpbiBzLmRhdGEgPC0gU2VtcHR5OyBOb25lIGVuZFxuICAgICBlbHNlIFNvbWUgKEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kKVxuXG5cbmxldCBwZWVrID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHMgLT4gcGVla19kYXRhIHNcblxuXG5sZXQgcmVjIGp1bmtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHVuaXQgPSBmdW4gcyAtPlxuICBtYXRjaCBzLmRhdGEgd2l0aFxuICAgIFNjb25zIChfLCBkKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBzLmRhdGEgPC0gZFxuICB8IFNnZW4gKHtjdXJyID0gU29tZSBffSBhcyBnKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBnLmN1cnIgPC0gTm9uZVxuICB8IFNidWZmaW8gYiAtPlxuICAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgIGlmIGIubGVuID09IDAgdGhlbiBzLmRhdGEgPC0gU2VtcHR5XG4gICAgICBlbHNlIChzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBiLmluZCA8LSBzdWNjIGIuaW5kKVxuICB8IF8gLT5cbiAgICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgICAgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4ganVua19kYXRhIHNcblxuXG5sZXQganVuayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGF0YSAtPiBqdW5rX2RhdGEgZGF0YVxuXG5sZXQgcmVjIG5nZXRfZGF0YSBuIHMgPVxuICBpZiBuIDw9IDAgdGhlbiBbXSwgcy5kYXRhLCAwXG4gIGVsc2VcbiAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICBTb21lIGEgLT5cbiAgICAgICAganVua19kYXRhIHM7XG4gICAgICAgIGxldCAoYWwsIGQsIGspID0gbmdldF9kYXRhIChwcmVkIG4pIHMgaW4gYSA6OiBhbCwgU2NvbnMgKGEsIGQpLCBzdWNjIGtcbiAgICB8IE5vbmUgLT4gW10sIHMuZGF0YSwgMFxuXG5cbmxldCBucGVla19kYXRhIG4gcyA9XG4gIGxldCAoYWwsIGQsIGxlbikgPSBuZ2V0X2RhdGEgbiBzIGluXG4gIHMuY291bnQgPC0gKHMuY291bnQgLSBsZW4pO1xuICBzLmRhdGEgPC0gZDtcbiAgYWxcblxuXG5sZXQgbnBlZWsgbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgZCAtPiBucGVla19kYXRhIG4gZFxuXG5sZXQgbmV4dCBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIGEgLT4ganVuayBzOyBhXG4gIHwgTm9uZSAtPiByYWlzZSBGYWlsdXJlXG5cblxubGV0IGVtcHR5IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgXyAtPiByYWlzZSBGYWlsdXJlXG4gIHwgTm9uZSAtPiAoKVxuXG5cbmxldCBpdGVyIGYgc3RybSA9XG4gIGxldCByZWMgZG9fcmVjICgpID1cbiAgICBtYXRjaCBwZWVrIHN0cm0gd2l0aFxuICAgICAgU29tZSBhIC0+IGp1bmsgc3RybTsgaWdub3JlKGYgYSk7IGRvX3JlYyAoKVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBkb19yZWMgKClcblxuXG4oKiBTdHJlYW0gYnVpbGRpbmcgZnVuY3Rpb25zICopXG5cbmxldCBmcm9tIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTZ2VuIHtjdXJyID0gTm9uZTsgZnVuYyA9IGZ9fVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4geCBsIC0+IFNjb25zICh4LCBsKSkgbCBTZW1wdHl9XG5cblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICAoKiBXZSBjYW5ub3QgdXNlIHRoZSBpbmRleCBwYXNzZWQgYnkgdGhlIFtmcm9tXSBmdW5jdGlvbiBkaXJlY3RseVxuICAgICAgIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJlYW0gY291bnQsIHdpdGggYWJzb2x1dGVseSBub1xuICAgICAgIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgc3RhcnQgZnJvbSAwLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2VcbiAgICAgICBvZiBbU3RyZWFtLmljb25zICdjJyAoU3RyZWFtLmZyb21fc3RyaW5nIFwiYWJcIildLCB0aGUgZmlyc3RcbiAgICAgICBhY2Nlc3MgdG8gdGhlIHN0cmluZyB3aWxsIGJlIG1hZGUgd2l0aCBjb3VudCBbMV0gYWxyZWFkeS5cbiAgICAqKVxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgcy5bY10pXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9ieXRlcyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBCeXRlcy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgKEJ5dGVzLmdldCBzIGMpKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfY2hhbm5lbCBpYyA9XG4gIFNvbWUge2NvdW50ID0gMDtcbiAgICAgICAgZGF0YSA9IFNidWZmaW8ge2ljID0gaWM7IGJ1ZmYgPSBCeXRlcy5jcmVhdGUgNDA5NjsgbGVuID0gMDsgaW5kID0gMH19XG5cblxuKCogU3RyZWFtIGV4cHJlc3Npb25zIGJ1aWxkZXJzICopXG5cbmxldCBpYXBwIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNhcHAgKGRhdGEgaSwgZGF0YSBzKX1cbmxldCBpY29ucyBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgZGF0YSBzKX1cbmxldCBpc2luZyBpID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIFNlbXB0eSl9XG5cbmxldCBsYXBwIGYgcyA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNhcHAgKGRhdGEgKGYgKCkpLCBkYXRhIHMpKSl9XG5cbmxldCBsY29ucyBmIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgZGF0YSBzKSkpfVxubGV0IGxzaW5nIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgU2VtcHR5KSkpfVxuXG5sZXQgc2VtcHR5ID0gTm9uZVxubGV0IHNsYXp5IGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShkYXRhIChmICgpKSkpfVxuXG4oKiBGb3IgZGVidWdnaW5nIHVzZSAqKVxuXG5sZXQgcmVjIGR1bXAgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgdCAtPiB1bml0ID0gZnVuIGYgcyAtPlxuICBwcmludF9zdHJpbmcgXCJ7Y291bnQgPSBcIjtcbiAgcHJpbnRfaW50IChjb3VudCBzKTtcbiAgcHJpbnRfc3RyaW5nIFwiOyBkYXRhID0gXCI7XG4gIGR1bXBfZGF0YSBmIChkYXRhIHMpO1xuICBwcmludF9zdHJpbmcgXCJ9XCI7XG4gIHByaW50X25ld2xpbmUgKClcbmFuZCBkdW1wX2RhdGEgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgZGF0YSAtPiB1bml0ID0gZnVuIGYgLT5cbiAgZnVuY3Rpb25cbiAgICBTZW1wdHkgLT4gcHJpbnRfc3RyaW5nIFwiU2VtcHR5XCJcbiAgfCBTY29ucyAoYSwgZCkgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNjb25zIChcIjtcbiAgICAgIGYgYTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2FwcCAoXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMjtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNsYXp5IF8gLT4gcHJpbnRfc3RyaW5nIFwiU2xhenlcIlxuICB8IFNnZW4gXyAtPiBwcmludF9zdHJpbmcgXCJTZ2VuXCJcbiAgfCBTYnVmZmlvIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2J1ZmZpb1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGJ1ZmZlciA6IGJ5dGVzO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIubGVuZ3RoXVxuICAgLSBbYi5sZW5ndGggPSBCeXRlcy5sZW5ndGggYi5idWZmZXJdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4ge2J1ZmZlciA9IHM7IHBvc2l0aW9uID0gMDsgbGVuZ3RoID0gbjsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgc3JjLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmJ1ZmZlcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmxlbmd0aF0uXG5cbiAgIEluIHBhcnRpY3VsYXIsIGFmdGVyIFtyZXNpemUgYiBtb3JlXSBpcyBjYWxsZWQsIGEgZGlyZWN0IGFjY2VzcyBvZlxuICAgc2l6ZSBbbW9yZV0gYXQgW2IucG9zaXRpb25dIHdpbGwgYWx3YXlzIGJlIGluLWJvdW5kcywgc28gdGhhdFxuICAgKHVuc2FmZV97Z2V0LHNldH0pIG1heSBiZSB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlbjtcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gIGFzc2VydCAob2xkX3BvcyArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICAoKVxuICAoKiBOb3RlOiB0aGVyZSBhcmUgdmFyaW91cyBzaXR1YXRpb25zIChwcmVlbXB0aXZlIHRocmVhZHMsIHNpZ25hbHMgYW5kXG4gICAgIGdjIGZpbmFsaXplcnMpIHdoZXJlIE9DYW1sIGNvZGUgbWF5IGJlIHJ1biBhc3luY2hyb25vdXNseTsgaW5cbiAgICAgcGFydGljdWxhciwgdGhlcmUgbWF5IGJlIGEgcmFjZSB3aXRoIGFub3RoZXIgdXNlciBvZiBbYl0sIGNoYW5naW5nXG4gICAgIGl0cyBtdXRhYmxlIGZpZWxkcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBbcmVzaXplXSBjYWxsLiBUaGUgQnVmZmVyXG4gICAgIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIGFueSBjb3JyZWN0bmVzcyBndWFyYW50ZWUgaWYgdGhhdCBoYXBwZW5zLFxuICAgICBidXQgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhhdCB0aGUgZGF0YXN0cnVjdHVyZSBpbnZhcmlhbnRzIGhvbGQgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgLS0gYXMgd2UgcGxhbiB0byB1c2UgW3Vuc2FmZV97Z2V0LHNldH1dLlxuXG4gICAgIFRoZXJlIGFyZSB0d28gcG90ZW50aWFsIGFsbG9jYXRpb24gcG9pbnRzIGluIHRoaXMgZnVuY3Rpb24sXG4gICAgIFtyZWZdIGFuZCBbQnl0ZXMuY3JlYXRlXSwgYnV0IGFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZSBmaWVsZHNcbiAgICAgb2YgW2JdIGhhcHBlbiBiZWZvcmUgYm90aCBvZiB0aGVtIG9yIGFmdGVyIGJvdGggb2YgdGhlbS5cblxuICAgICBXZSB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgW2IucG9zaXRpb25dIG1heSBjaGFuZ2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMsXG4gICAgIGFuZCBjaGVjayB0aGF0IHRoZSBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIHBvc3Rjb25kaXRpb25cbiAgICAgaG9sZHMgZm9yIGJvdGggdmFsdWVzIG9mIFtiLnBvc2l0aW9uXSwgYmVmb3JlIG9yIGFmdGVyIHRoZSBmdW5jdGlvblxuICAgICBpcyBjYWxsZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZm9sbG93aW5nIGludmFyaWFudHMgbXVzdCBob2xkIGlmIHRoZVxuICAgICBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3RseSwgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGJ1ZmZlciBpbnZhcmlhbnRzOlxuICAgICAtIFtvbGQoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW25ldyhiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbb2xkKGIubGVuZ3RoKSA8PSBuZXcoYi5sZW5ndGgpXVxuXG4gICAgIE5vdGU6IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBvbGQoYi5sZW5ndGgpXSBkb2VzICpub3QqXG4gICAgIGhvbGQgaW4gZ2VuZXJhbCwgYXMgaXQgaXMgcHJlY2lzZWx5IHRoZSBjYXNlIHdoZXJlIHlvdSBuZWVkXG4gICAgIHRvIGNhbGwgW3Jlc2l6ZV0gdG8gaW5jcmVhc2UgW2IubGVuZ3RoXS5cblxuICAgICBOb3RlOiBbYXNzZXJ0XSBhYm92ZSBkb2VzIG5vdCBtZWFuIHRoYXQgd2Uga25vdyB0aGUgY29uZGl0aW9uc1xuICAgICBhbHdheXMgaG9sZCwgYnV0IHRoYXQgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gY29ycmVjdGx5XG4gICAgIG9ubHkgaWYgdGhleSBob2xkLlxuXG4gICAgIE5vdGU6IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgZG9lcyBub3QgbmVlZFxuICAgICB0byBiZSBjaGVja2VkIHdpdGggdGhpcyBsZXZlbCBvZiBzY3J1dGlueSwgZ2l2ZW4gdGhhdCB0aGV5XG4gICAgIHJlYWQvd3JpdGUgdGhlIGJ1ZmZlciBpbW1lZGlhdGVseSBhZnRlciBjaGVja2luZyB0aGF0XG4gICAgIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZCBvciBjYWxsaW5nIFtyZXNpemVdLlxuICAqKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbiBsZXQgYWRkX3V0Zl84X3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICBhZGRfY2hhciBiIChDaGFyLnVuc2FmZV9jaHIgdSlcbiB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4QzAgbG9yICh1IGxzciA2KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMyA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMztcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEUwIGxvciAodSBsc3IgMTIpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDNcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhGMCBsb3IgKHUgbHNyIDE4KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMylcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgKCogVGhlIGFzc2VydGlvbiBiZWxvdyBtYXkgZmFpbCBpbiB3ZWlyZCBzY2VuYXJpbyB3aGVyZVxuICAgICB0aHJlYWRlZC9maW5hbGl6ZXIgY29kZSwgcnVuIGFzeW5jaHJvbm91c2x5IGR1cmluZyB0aGVcbiAgICAgW3JlYWxseV9pbnB1dF91cF90b10gY2FsbCwgcmFjZXMgb24gdGhlIGJ1ZmZlcjsgd2UgZG9uJ3QgZW5zdXJlXG4gICAgIGNvcnJlY3RuZXNzIGluIHRoaXMgY2FzZSwgYnV0IG5lZWQgdG8gcHJlc2VydmUgdGhlIGludmFyaWFudHMgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgKHNlZSBkaXNjdXNzaW9uIG9mIFtyZXNpemVdKS4gKilcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbiA8PSBiLmxlbmd0aCk7XG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIHVuc2FmZV9zZXRfaW50OCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgdW5zYWZlX3NldF9pbnQxNiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgdW5zYWZlX3NldF9pbnQzMiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiBidWNrZXRzIGJlY29tZSB0b28gbG9uZy4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gcmVmIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gcmFuZG9taXplZCA6PSB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9ICFyYW5kb21pemVkXG5cbmxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILmhhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZylcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfb3Blbl90YWcgc3RhdGUgcyA9IHBwX29wZW5fc3RhZyBzdGF0ZSAoU3RyaW5nX3RhZyBzKVxubGV0IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSA9IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKClcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV90YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID0gZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggPSBwcF9vcGVuX2hib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdmJveCA9IHBwX29wZW5fdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9odmJveCA9IHBwX29wZW5faHZib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faG92Ym94ID0gcHBfb3Blbl9ob3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fYm94ID0gcHBfb3Blbl9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX2JveCA9IHBwX2Nsb3NlX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl90YWcgPSBwcF9vcGVuX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGFnID0gcHBfY2xvc2VfdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3N0YWcgPSBwcF9vcGVuX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3N0YWcgPSBwcF9jbG9zZV9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9hcyA9IHBwX3ByaW50X2FzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zdHJpbmcgPSBwcF9wcmludF9zdHJpbmcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2J5dGVzID0gcHBfcHJpbnRfYnl0ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ludCA9IHBwX3ByaW50X2ludCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmxvYXQgPSBwcF9wcmludF9mbG9hdCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY2hhciA9IHBwX3ByaW50X2NoYXIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Jvb2wgPSBwcF9wcmludF9ib29sIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9icmVhayA9IHBwX3ByaW50X2JyZWFrIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jdXQgPSBwcF9wcmludF9jdXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3NwYWNlID0gcHBfcHJpbnRfc3BhY2Ugc3RkX2Zvcm1hdHRlclxuYW5kIGZvcmNlX25ld2xpbmUgPSBwcF9mb3JjZV9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbHVzaCA9IHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9uZXdsaW5lID0gcHBfcHJpbnRfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaWZfbmV3bGluZSA9IHBwX3ByaW50X2lmX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuXG5hbmQgb3Blbl90Ym94ID0gcHBfb3Blbl90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90Ym94ID0gcHBfY2xvc2VfdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGJyZWFrID0gcHBfcHJpbnRfdGJyZWFrIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF90YWIgPSBwcF9zZXRfdGFiIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YWIgPSBwcF9wcmludF90YWIgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21hcmdpbiA9IHBwX3NldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfaW5kZW50ID0gcHBfc2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2dlb21ldHJ5ID0gcHBfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBzYWZlX3NldF9nZW9tZXRyeSA9IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHVwZGF0ZV9nZW9tZXRyeSA9IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2JveGVzID0gcHBfc2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9ib3hlcyA9IHBwX2dldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIG92ZXJfbWF4X2JveGVzID0gcHBfb3Zlcl9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9wcmludF90YWdzID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9wcmludF90YWdzID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9tYXJrX3RhZ3MgPVxuICBwcF9zZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFya190YWdzID1cbiAgcHBfZ2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3RhZ3MgPVxuICBwcF9zZXRfdGFncyBzdGRfZm9ybWF0dGVyXG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRfZm9ybWF0dGVyIGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBlcnJfZm9ybWF0dGVyIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyICgpO1xuICBwcF9wcmludF9mbHVzaCBlcnJfZm9ybWF0dGVyICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG4oKlxuXG4gIERlcHJlY2F0ZWQgc3R1ZmYuXG5cbiopXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlXG4gICAgfm91dDpmIH5mbHVzaDpnIH5uZXdsaW5lOmggfnNwYWNlczppID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaCxcbiAgIHN0YXRlLnBwX291dF9uZXdsaW5lLCBzdGF0ZS5wcF9vdXRfc3BhY2VzKVxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogZXJyb3IgcHJvbmUgZnVuY3Rpb24sIGRvIG5vdCB1c2UgaXQuXG4gICBUaGlzIGZ1bmN0aW9uIGlzIG5laXRoZXIgY29tcG9zaXRpb25hbCBub3IgaW5jcmVtZW50YWwsIHNpbmNlIGl0IGZsdXNoZXNcbiAgIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhdCBlYWNoIGNhbGwuXG4gICBUbyBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgZGVmaW5lIGEgZm9ybWF0dGVyIG9mIHlvdXIgb3duIHdyaXRpbmcgdG9cbiAgIHRoZSBidWZmZXIgYXJndW1lbnQsIGFzIGluXG4gICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiXG4gICB0aGVuIHVzZSB7IWZwcmludGYgcHBmfSBhcyB1c3VhbC4gKilcbmxldCBicHJpbnRmIGIgKEZvcm1hdCAoZm10LCBfKSA6ICgnYSwgZm9ybWF0dGVyLCB1bml0KSBmb3JtYXQpID1cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPSBvdXRwdXRfYWNjIHBwZiBhY2M7IHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxuKCogRGVwcmVjYXRlZCA6IGFsaWFzIGZvciBrc3ByaW50Zi4gKilcbmxldCBrcHJpbnRmID0ga3NwcmludGZcblxuXG5cbigqIERlcHJlY2F0ZWQgdGFnIGZ1bmN0aW9ucyAqKVxuXG50eXBlIGZvcm1hdHRlcl90YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fdGFnIDogdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3RhZyA6IHRhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV90YWcgOiB0YWcgLT4gdW5pdDtcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV90YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV90YWcgPSBwY3Q7XG4gICB9ID1cbiAgbGV0IHN0cmluZ2lmeSBmIGUgPSBmdW5jdGlvbiBTdHJpbmdfdGFnIHMgLT4gZiBzIHwgXyAtPiBlIGluXG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gc3RyaW5naWZ5IG1vdCBcIlwiO1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgbWN0IFwiXCI7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHN0cmluZ2lmeSBwb3QgKCk7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgcGN0ICgpXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgZm10ICgpID1cbiAgbGV0IGZ1bnMgPSBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuICBsZXQgbWFya19vcGVuX3RhZyBzID0gZnVucy5tYXJrX29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgbWFya19jbG9zZV90YWcgcyA9IGZ1bnMubWFya19jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9vcGVuX3RhZyBzID0gZnVucy5wcmludF9vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X2Nsb3NlX3RhZyBzID0gZnVucy5wcmludF9jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIHttYXJrX29wZW5fdGFnOyBtYXJrX2Nsb3NlX3RhZzsgcHJpbnRfb3Blbl90YWc7IHByaW50X2Nsb3NlX3RhZ31cblxubGV0IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgW3N0ZGliXSBpcyBlcXVpdmFsZW50IHRvIFtTY2FubmluZy5mcm9tX2NoYW5uZWwgU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgc3RkaWIgOiBpbl9jaGFubmVsXG4gICgqIEFuIGFsaWFzIGZvciBbU2NhbmYuc3RkaW5dLCB0aGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbVxuICAgICBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbiAgdmFsIG1lbW9fZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuICAoKiBPYnNvbGV0ZS4gKilcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpYl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuXG4gIGxldCBzdGRpYiA9IHN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuXG4gICgqXG4gICAgIE9ic29sZXRlOiBhIG1lbW8gW2Zyb21fY2hhbm5lbF0gdmVyc2lvbiB0byBidWlsZCBhIFtTY2FubmluZy5pbl9jaGFubmVsXVxuICAgICBzY2FubmluZyBidWZmZXIgb3V0IG9mIGEgW1N0ZGxpYi5pbl9jaGFubmVsXS5cbiAgICAgVGhpcyBmdW5jdGlvbiB3YXMgdXNlZCB0byB0cnkgdG8gcHJlc2VydmUgdGhlIHNjYW5uaW5nXG4gICAgIHNlbWFudGljcyBmb3IgdGhlIChub3cgb2Jzb2xldGUpIGZ1bmN0aW9uIFtmc2NhbmZdLlxuICAgICBHaXZlbiB0aGF0IGFsbCBzY2FubmVyIG11c3QgcmVhZCBmcm9tIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIHNjYW5uaW5nXG4gICAgIGJ1ZmZlciwgW2ZzY2FuZl0gbXVzdCByZWFkIGZyb20gb25lIVxuICAgICBNb3JlIHByZWNpc2VseSwgZ2l2ZW4gW2ljXSwgYWxsIHN1Y2Nlc3NpdmUgY2FsbHMgW2ZzY2FuZiBpY10gbXVzdCByZWFkXG4gICAgIGZyb20gdGhlIHNhbWUgc2Nhbm5pbmcgYnVmZmVyLlxuICAgICBUaGlzIG9ibGlnZWQgdGhpcyBsaWJyYXJ5IHRvIGFsbG9jYXRlZCBzY2FubmluZyBidWZmZXJzIHRoYXQgd2VyZVxuICAgICBub3QgcHJvcGVybHkgZ2FyYmFnZSBjb2xsZWN0YWJsZSwgaGVuY2UgbGVhZGluZyB0byBtZW1vcnkgbGVha3MuXG4gICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgZnJvbSBhIFtTdGRsaWIuaW5fY2hhbm5lbF0gaW5wdXQgY2hhbm5lbFxuICAgICBbaWNdLCBzaW1wbHkgZGVmaW5lIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIGZvcm1hdHRlZCBpbnB1dCBjaGFubmVsIGFzIGluXG4gICAgIFtsZXQgaWIgPSBTY2FubmluZy5mcm9tX2NoYW5uZWwgaWNdLCB0aGVuIHVzZSBbU2NhbmYuYnNjYW5mIGliXSBhcyB1c3VhbC5cbiAgKilcbiAgbGV0IG1lbW9fZnJvbV9pYyA9XG4gICAgbGV0IG1lbW8gPSByZWYgW10gaW5cbiAgICAoZnVuIHNjYW5fY2xvc2VfaWMgaWMgLT5cbiAgICAgdHJ5IExpc3QuYXNzcSBpYyAhbWVtbyB3aXRoXG4gICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgbGV0IGliID1cbiAgICAgICAgIGZyb21faWMgc2Nhbl9jbG9zZV9pYyAoRnJvbV9jaGFubmVsIGljKSBpYyBpblxuICAgICAgIG1lbW8gOj0gKGljLCBpYikgOjogIW1lbW87XG4gICAgICAgaWIpXG5cblxuICAoKiBPYnNvbGV0ZTogc2VlIHshbWVtb19mcm9tX2ljfSBhYm92ZS4gKilcbiAgbGV0IG1lbW9fZnJvbV9jaGFubmVsID0gbWVtb19mcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxudHlwZSAnYSBrc2NhbmZfcmVzdWx0ID0gQXJncyBvZiAnYSB8IEV4YyBvZiBleG5cblxubGV0IGtzY2FuZiBpYiBlZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCB0cnkgQXJncyAobWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycykgd2l0aFxuICAgICAgfCAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSkgYXMgZXhjIC0+IEV4YyBleGNcbiAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB3aXRoXG4gICAgICB8IEFyZ3MgYXJncyAtPiBhcHBseSBmIGFyZ3NcbiAgICAgIHwgRXhjIGV4YyAtPiBlZiBpYiBleGNcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuXG5cbigqIERlcHJlY2F0ZWQgKilcbmxldCBrZnNjYW5mIGljIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBlZiBmbXRcbmxldCBmc2NhbmYgaWMgZm10ID0ga3NjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgc2NhbmZfYmFkX2lucHV0IGZtdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNlZWRlZFNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGdldF9rZXk6ICdhIGNvbnRhaW5lciAtPiB0IG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshaXRlcn0sIHshZm9sZH0sIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGl0ZXIgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGRcbiAgICAgICAgICAgIGVuZDsgZG9fYnVja2V0IHJlc3QgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGZvbGQgZiBoIGluaXQgPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICAgICAgbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAgIGFjY3VcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZCBhY2N1XG4gICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0IGFjY3UgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgICAgZG9uZTtcbiAgICAgICFhY2N1XG5cbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZiBrIGQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZCAtPlxuICAgICAgICAgICAgICAgICAgICBILnNldF9rZXlfZGF0YSBjIGsgbmV3X2Q7XG4gICAgICAgICAgICAgICAgICAgIENvbnMoaGssIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCB0b19zZXEgdGJsID1cbiAgICAgICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICAgICAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgICAgICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gICAgICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgICAgICB8IENvbnMgKF8sIGMsIG5leHQpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggaSBuZXh0ICgpXG4gICAgICAgICAgICAgIHwgU29tZSBrZXksIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYXV4IDAgRW1wdHlcblxuICAgIGxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKHQyOignaywnZCkgdCk6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIG1hdGNoIEFycmF5Lmxlbmd0aCBkaW1zLCBsYXlvdXQgd2l0aFxuICAgIHwgMCwgXyAtPiBhcnJcbiAgICB8IGRsZW4sIENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IGRsZW4sIEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxuKCogQW4gaW50ZWdlciBudW1iZXIgb2YgY2VudHMgKilcbnR5cGUgbW9uZXkgPSBaLnRcbnR5cGUgaW50ZWdlciA9IFoudFxudHlwZSBkZWNpbWFsID0gUS50XG50eXBlIGRhdGUgPSBDYWxlbmRhckxpYi5EYXRlLnRcbnR5cGUgZHVyYXRpb24gPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC50XG50eXBlICdhIGVvcHRpb24gPSBFTm9uZSBvZiB1bml0IHwgRVNvbWUgb2YgJ2FcblxudHlwZSBzb3VyY2VfcG9zaXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBzdGFydF9saW5lIDogaW50O1xuICBzdGFydF9jb2x1bW4gOiBpbnQ7XG4gIGVuZF9saW5lIDogaW50O1xuICBlbmRfY29sdW1uIDogaW50O1xuICBsYXdfaGVhZGluZ3MgOiBzdHJpbmcgbGlzdDtcbn1cbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxuZXhjZXB0aW9uIEVtcHR5RXJyb3JcbmV4Y2VwdGlvbiBBc3NlcnRpb25GYWlsZWQgb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gQ29uZmxpY3RFcnJvciBvZiBzb3VyY2VfcG9zaXRpb25cbmV4Y2VwdGlvbiBVbmNvbXBhcmFibGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbmRpdmlzYWJsZUR1cmF0aW9uc1xuZXhjZXB0aW9uIEltcG9zc2libGVEYXRlXG5leGNlcHRpb24gTm9WYWx1ZVByb3ZpZGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuXG5sZXQgbW9uZXlfb2ZfY2VudHNfc3RyaW5nIChjZW50cyA6IHN0cmluZykgOiBtb25leSA9IFoub2Zfc3RyaW5nIGNlbnRzXG5sZXQgbW9uZXlfb2ZfdW5pdHNfaW50ICh1bml0cyA6IGludCkgOiBtb25leSA9IFouKG9mX2ludCB1bml0cyAqIG9mX2ludCAxMDApXG5sZXQgbW9uZXlfb2ZfY2VudHNfaW50ZWdlciAoY2VudHMgOiBpbnRlZ2VyKSA6IG1vbmV5ID0gY2VudHNcbmxldCBtb25leV90b19mbG9hdCAobSA6IG1vbmV5KSA6IGZsb2F0ID0gWi50b19mbG9hdCBtIC8uIDEwMC5cblxubGV0IG1vbmV5X29mX2RlY2ltYWwgKGQgOiBkZWNpbWFsKSA6IG1vbmV5ID1cbiAgUS50b19iaWdpbnQgKFEubXVsIGQgKFEub2ZfaW50IDEwMCkpXG5cbmxldCBtb25leV90b19zdHJpbmcgKG0gOiBtb25leSkgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlLjJmXCIgUS4odG9fZmxvYXQgKG9mX2JpZ2ludCBtIC8gb2ZfaW50IDEwMCkpXG5cbmxldCBtb25leV90b19jZW50cyBtID0gbVxuXG5sZXQgbW9uZXlfcm91bmQgKG0gOiBtb25leSkgOiBtb25leSA9XG4gIGxldCB1bml0cywgY2VudHMgPSBaLmRpdl9yZW0gbSAoWi5vZl9pbnQgMTAwKSBpblxuICAoKiBJZiBbbV0gaXMgbmVnYXRpdmUsIFtjZW50c10gd2lsbCBhbHNvIGJlIG5lZ2F0aXZlLiAqKVxuICBpZiBaLihhYnMgY2VudHMgPCBvZl9pbnQgNTApIHRoZW4gWi4odW5pdHMgKiBvZl9pbnQgMTAwKVxuICBlbHNlIFouKCh1bml0cyArIG9mX2ludCAoc2lnbiB1bml0cykpICogb2ZfaW50IDEwMClcblxubGV0IGRlY2ltYWxfb2Zfc3RyaW5nIChkIDogc3RyaW5nKSA6IGRlY2ltYWwgPSBRLm9mX3N0cmluZyBkXG5sZXQgZGVjaW1hbF90b19mbG9hdCAoZCA6IGRlY2ltYWwpIDogZmxvYXQgPSBRLnRvX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2Zsb2F0IChkIDogZmxvYXQpIDogZGVjaW1hbCA9IFEub2ZfZmxvYXQgZFxubGV0IGRlY2ltYWxfb2ZfaW50ZWdlciAoZCA6IGludGVnZXIpIDogZGVjaW1hbCA9IFEub2ZfYmlnaW50IGRcblxubGV0IGRlY2ltYWxfdG9fc3RyaW5nIH4obWF4X3ByZWNfZGlnaXRzIDogaW50KSAoaSA6IGRlY2ltYWwpIDogc3RyaW5nID1cbiAgbGV0IHNpZ24gPSBRLnNpZ24gaSBpblxuICBsZXQgbiA9IFouYWJzIChRLm51bSBpKSBpblxuICBsZXQgZCA9IFouYWJzIChRLmRlbiBpKSBpblxuICBsZXQgaW50X3BhcnQgPSBaLmVkaXYgbiBkIGluXG4gIGxldCBuID0gcmVmIChaLmVyZW0gbiBkKSBpblxuICBsZXQgZGlnaXRzID0gcmVmIFtdIGluXG4gIGxldCBsZWFkaW5nX3plcm9lcyAoZGlnaXRzIDogWi50IGxpc3QpIDogaW50ID1cbiAgICBtYXRjaFxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gZGlnaXQgbnVtX2xlYWRpbmdfemVyb2VzIC0+XG4gICAgICAgICAgbWF0Y2ggbnVtX2xlYWRpbmdfemVyb2VzIHdpdGhcbiAgICAgICAgICB8IGBFbmQgXyAtPiBudW1fbGVhZGluZ196ZXJvZXNcbiAgICAgICAgICB8IGBCZWdpbiBpIC0+IGlmIFouKGRpZ2l0ID0gemVybykgdGhlbiBgQmVnaW4gKGkgKyAxKSBlbHNlIGBFbmQgaSlcbiAgICAgICAgZGlnaXRzIChgQmVnaW4gMClcbiAgICB3aXRoXG4gICAgfCBgRW5kIGkgLT4gaVxuICAgIHwgYEJlZ2luIGkgLT4gaVxuICBpblxuICB3aGlsZVxuICAgICFuIDw+IFouemVyb1xuICAgICYmIExpc3QubGVuZ3RoICFkaWdpdHMgLSBsZWFkaW5nX3plcm9lcyAhZGlnaXRzIDwgbWF4X3ByZWNfZGlnaXRzXG4gIGRvXG4gICAgbiA6PSBaLm11bCAhbiAoWi5vZl9pbnQgMTApO1xuICAgIGRpZ2l0cyA6PSBaLmVkaXYgIW4gZCA6OiAhZGlnaXRzO1xuICAgIG4gOj0gWi5lcmVtICFuIGRcbiAgZG9uZTtcbiAgRm9ybWF0LmFzcHJpbnRmIFwiJXMlYS4lYSVzXCJcbiAgICAoaWYgc2lnbiA8IDAgdGhlbiBcIi1cIiBlbHNlIFwiXCIpXG4gICAgWi5wcF9wcmludCBpbnRfcGFydFxuICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBfZm10ICgpIC0+ICgpKVxuICAgICAgIChmdW4gZm10IGRpZ2l0IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhXCIgWi5wcF9wcmludCBkaWdpdCkpXG4gICAgKExpc3QucmV2ICFkaWdpdHMpXG4gICAgKGlmIExpc3QubGVuZ3RoICFkaWdpdHMgLSBsZWFkaW5nX3plcm9lcyAhZGlnaXRzID0gbWF4X3ByZWNfZGlnaXRzIHRoZW4gXCLigKZcIlxuICAgIGVsc2UgXCJcIilcblxubGV0IGRlY2ltYWxfcm91bmQgKHEgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPVxuICAoKiBJbXBsZW1lbnRzIHRoZSB3b3JrYXJvdW5kIGJ5XG4gICAgIGh0dHBzOi8vZ21wbGliLm9yZy9saXN0LWFyY2hpdmVzL2dtcC1kaXNjdXNzLzIwMDktTWF5LzAwMzc2Ny5odG1sICopXG4gIGxldCBuID0gUS5udW0gcSBpblxuICBsZXQgZCA9IFEuZGVuIHEgaW5cbiAgUS5vZl9iaWdpbnQgWi4oZmRpdiAoKG9mX2ludCAyICogbikgKyBkKSAob2ZfaW50IDIgKiBkKSlcblxubGV0IGRlY2ltYWxfb2ZfbW9uZXkgKG0gOiBtb25leSkgOiBkZWNpbWFsID1cbiAgUS5kaXYgKFEub2ZfYmlnaW50IG0pIChRLm9mX2ludCAxMDApXG5cbmxldCBpbnRlZ2VyX29mX3N0cmluZyAocyA6IHN0cmluZykgOiBpbnRlZ2VyID0gWi5vZl9zdHJpbmcgc1xubGV0IGludGVnZXJfdG9fc3RyaW5nIChpIDogaW50ZWdlcikgOiBzdHJpbmcgPSBaLnRvX3N0cmluZyBpXG5sZXQgaW50ZWdlcl90b19pbnQgKGkgOiBpbnRlZ2VyKSA6IGludCA9IFoudG9faW50IGlcbmxldCBpbnRlZ2VyX29mX2ludCAoaSA6IGludCkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgaVxubGV0IGludGVnZXJfZXhwb25lbnRpYXRpb24gKGkgOiBpbnRlZ2VyKSAoZSA6IGludCkgOiBpbnRlZ2VyID0gWi5wb3cgaSBlXG5sZXQgaW50ZWdlcl9sb2cyID0gWi5sb2cyXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgKENhbGVuZGFyTGliLkRhdGUueWVhciBkKVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBaLm9mX2ludCAoQ2FsZW5kYXJMaWIuRGF0ZS5pbnRfb2ZfbW9udGggKENhbGVuZGFyTGliLkRhdGUubW9udGggZCkpXG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIFoub2ZfaW50IChDYWxlbmRhckxpYi5EYXRlLmRheV9vZl9tb250aCBkKVxuXG5sZXQgZGF0ZV9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZGF0ZSA9XG4gIHRyeSBDYWxlbmRhckxpYi5EYXRlLm1ha2UgeWVhciBtb250aCBkYXkgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID0gQ2FsZW5kYXJMaWIuUHJpbnRlci5EYXRlLnRvX3N0cmluZyBkXG5cbmxldCBmaXJzdF9kYXlfb2ZfbW9udGggKGQgOiBkYXRlKSA6IGRhdGUgPVxuICBkYXRlX29mX251bWJlcnMgKENhbGVuZGFyTGliLkRhdGUueWVhciBkKVxuICAgIChDYWxlbmRhckxpYi5EYXRlLmludF9vZl9tb250aCAoQ2FsZW5kYXJMaWIuRGF0ZS5tb250aCBkKSlcbiAgICAxXG5cbmxldCBsYXN0X2RheV9vZl9tb250aCAoZCA6IGRhdGUpIDogZGF0ZSA9XG4gIGRhdGVfb2ZfbnVtYmVycyAoQ2FsZW5kYXJMaWIuRGF0ZS55ZWFyIGQpXG4gICAgKENhbGVuZGFyTGliLkRhdGUuaW50X29mX21vbnRoIChDYWxlbmRhckxpYi5EYXRlLm1vbnRoIGQpKVxuICAgIChDYWxlbmRhckxpYi5EYXRlLmRheXNfaW5fbW9udGggZClcblxubGV0IGR1cmF0aW9uX29mX251bWJlcnMgKHllYXIgOiBpbnQpIChtb250aCA6IGludCkgKGRheSA6IGludCkgOiBkdXJhdGlvbiA9XG4gIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm1ha2UgeWVhciBtb250aCBkYXlcblxubGV0IGR1cmF0aW9uX3RvX3N0cmluZyAoZCA6IGR1cmF0aW9uKSA6IHN0cmluZyA9XG4gIGxldCB4LCB5LCB6ID0gQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QueW1kIGQgaW5cbiAgbGV0IHRvX3ByaW50ID1cbiAgICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICBpblxuICBtYXRjaCB0b19wcmludCB3aXRoXG4gIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gIHwgXyAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIilcbiAgICAgICAgIChmdW4gZm10IChkLCBsKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZCAlc1wiIGQgbCkpXG4gICAgICB0b19wcmludFxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC55bWQgZFxuXG5sZXQgeW9qc29uX29mX21vbmV5IChtIDogbW9uZXkpID0gYEZsb2F0IChtb25leV90b19mbG9hdCBtKVxubGV0IHlvanNvbl9vZl9pbnRlZ2VyIChpIDogaW50ZWdlcikgPSBgSW50IChpbnRlZ2VyX3RvX2ludCBpKVxubGV0IHlvanNvbl9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgPSBgRmxvYXQgKGRlY2ltYWxfdG9fZmxvYXQgZClcbmxldCB5b2pzb25fb2ZfZGF0ZSAoZCA6IGRhdGUpID0gYFN0cmluZyAoZGF0ZV90b19zdHJpbmcgZClcbmxldCB5b2pzb25fb2ZfZHVyYXRpb24gKGQgOiBkdXJhdGlvbikgPSBgU3RyaW5nIChkdXJhdGlvbl90b19zdHJpbmcgZClcblxudHlwZSBydW50aW1lX3ZhbHVlID1cbiAgfCBVbml0XG4gIHwgQm9vbCBvZiBib29sXG4gIHwgTW9uZXkgb2YgbW9uZXlcbiAgfCBJbnRlZ2VyIG9mIGludGVnZXJcbiAgfCBEZWNpbWFsIG9mIGRlY2ltYWxcbiAgfCBEYXRlIG9mIGRhdGVcbiAgfCBEdXJhdGlvbiBvZiBkdXJhdGlvblxuICB8IEVudW0gb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nICogcnVudGltZV92YWx1ZSlcbiAgfCBTdHJ1Y3Qgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nICogcnVudGltZV92YWx1ZSkgbGlzdFxuICB8IEFycmF5IG9mIHJ1bnRpbWVfdmFsdWUgYXJyYXlcbiAgfCBVbmVtYmVkZGFibGVcbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxubGV0IHVuZW1iZWRkYWJsZSBfID0gVW5lbWJlZGRhYmxlXG5sZXQgZW1iZWRfdW5pdCAoKSA9IFVuaXRcbmxldCBlbWJlZF9ib29sIHggPSBCb29sIHhcbmxldCBlbWJlZF9tb25leSB4ID0gTW9uZXkgeFxubGV0IGVtYmVkX2ludGVnZXIgeCA9IEludGVnZXIgeFxubGV0IGVtYmVkX2RlY2ltYWwgeCA9IERlY2ltYWwgeFxubGV0IGVtYmVkX2RhdGUgeCA9IERhdGUgeFxubGV0IGVtYmVkX2R1cmF0aW9uIHggPSBEdXJhdGlvbiB4XG5sZXQgZW1iZWRfYXJyYXkgZiB4ID0gQXJyYXkgKEFycmF5Lm1hcCBmIHgpXG5cbnR5cGUgaW5mb3JtYXRpb24gPSBzdHJpbmcgbGlzdCBbQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbnR5cGUgcmF3X2V2ZW50ID1cbiAgfCBCZWdpbkNhbGwgb2YgaW5mb3JtYXRpb25cbiAgfCBFbmRDYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgVmFyaWFibGVEZWZpbml0aW9uIG9mIGluZm9ybWF0aW9uICogcnVudGltZV92YWx1ZVxuICB8IERlY2lzaW9uVGFrZW4gb2Ygc291cmNlX3Bvc2l0aW9uXG5cbnR5cGUgZXZlbnQgPVxuICB8IFZhckNvbXB1dGF0aW9uIG9mIHZhcl9kZWZcbiAgfCBGdW5DYWxsIG9mIGZ1bl9jYWxsXG4gIHwgU3ViU2NvcGVDYWxsIG9mIHtcbiAgICAgIG5hbWUgOiBpbmZvcm1hdGlvbjtcbiAgICAgIGlucHV0cyA6IHZhcl9kZWYgbGlzdDtcbiAgICAgIGJvZHkgOiBldmVudCBsaXN0O1xuICAgIH1cbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxuYW5kIHZhcl9kZWYgPSB7XG4gIHBvcyA6IHNvdXJjZV9wb3NpdGlvbiBvcHRpb247XG4gIG5hbWUgOiBpbmZvcm1hdGlvbjtcbiAgdmFsdWUgOiBydW50aW1lX3ZhbHVlO1xuICBmdW5fY2FsbHMgOiBmdW5fY2FsbCBsaXN0IG9wdGlvbjtcbn1cblxuYW5kIGZ1bl9jYWxsID0ge1xuICBmdW5fbmFtZSA6IGluZm9ybWF0aW9uO1xuICBpbnB1dCA6IHZhcl9kZWY7XG4gIGJvZHkgOiBldmVudCBsaXN0O1xuICBvdXRwdXQgOiB2YXJfZGVmO1xufVxuXG5sZXQgbG9nX3JlZiA6IHJhd19ldmVudCBsaXN0IHJlZiA9IHJlZiBbXVxubGV0IHJlc2V0X2xvZyAoKSA9IGxvZ19yZWYgOj0gW11cbmxldCByZXRyaWV2ZV9sb2cgKCkgPSBMaXN0LnJldiAhbG9nX3JlZlxuXG5sZXQgbG9nX2JlZ2luX2NhbGwgaW5mbyBmID1cbiAgbG9nX3JlZiA6PSBCZWdpbkNhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgZlxuXG5sZXQgbG9nX2VuZF9jYWxsIGluZm8geCA9XG4gIGxvZ19yZWYgOj0gRW5kQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiAoaW5mbyA6IHN0cmluZyBsaXN0KSBlbWJlZCAoeCA6ICdhKSA9XG4gIGxvZ19yZWYgOj0gVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBlbWJlZCB4KSA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX2RlY2lzaW9uX3Rha2VuIHBvcyB4ID1cbiAgaWYgeCB0aGVuIGxvZ19yZWYgOj0gRGVjaXNpb25UYWtlbiBwb3MgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IHJlYyBwcF9ldmVudHMgPyhpc19maXJzdF9jYWxsID0gdHJ1ZSkgcHBmIGV2ZW50cyA9XG4gIGxldCByZWMgZm9ybWF0X3Zhcl9kZWYgcHBmIHZhciA9XG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aG92IDI+PHZhcl9kZWYgYXQgJWE+QCAlczpAICVhQF1cIiBmb3JtYXRfcG9zX29wdFxuICAgICAgdmFyLnBvc1xuICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyLm5hbWUpXG4gICAgICBmb3JtYXRfdmFsdWUgdmFyLnZhbHVlXG4gIGFuZCBmb3JtYXRfcG9zX29wdCBwcGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJub19wb3NcIlxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzIGxpbmUgJWQgdG8gJWRcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLmVuZF9saW5lXG4gIGFuZCBmb3JtYXRfdmFyX2RlZnMgcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAIFwiKVxuICAgICAgZm9ybWF0X3Zhcl9kZWYgcHBmXG4gIGFuZCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBwcGYgdmFyX3dpdGhfZnVuID1cbiAgICBtYXRjaCB2YXJfd2l0aF9mdW4uZnVuX2NhbGxzIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFtdIC0+IGZvcm1hdF92YXJfZGVmIHBwZiB2YXJfd2l0aF9mdW5cbiAgICB8IFNvbWUgZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMj48dmFyX2RlZl93aXRoX2Z1bj5AICVzOiAlYUAgY29tcHV0ZWQgZnJvbUAgOkAgQFs8aHYgMj5bQCAlYUA7XFxcbiAgICAgICAgIDwxIC0yPl1AXSBAXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhcl93aXRoX2Z1bi5uYW1lKVxuICAgICAgICBmb3JtYXRfdmFsdWUgdmFyX3dpdGhfZnVuLnZhbHVlXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKVxuICAgICAgICAgICAoZnVuIHBwZiBmdW5fY2FsbCAtPiBmb3JtYXRfZXZlbnQgcHBmIChGdW5DYWxsIGZ1bl9jYWxsKSkpXG4gICAgICAgIGZ1bl9jYWxsc1xuICBhbmQgZm9ybWF0X3ZhbHVlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmVtYmVkZGFibGUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiZnVuXCJcbiAgICB8IFVuaXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiKClcIlxuICAgIHwgQm9vbCB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiViXCIgeFxuICAgIHwgTW9uZXkgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc+KCrFwiIChtb25leV90b19zdHJpbmcgeClcbiAgICB8IEludGVnZXIgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZFwiIChpbnRlZ2VyX3RvX2ludCB4KVxuICAgIHwgRGVjaW1hbCB4IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkZWNpbWFsX3RvX3N0cmluZyB+bWF4X3ByZWNfZGlnaXRzOjEwIHgpXG4gICAgfCBEYXRlIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGF0ZV90b19zdHJpbmcgeClcbiAgICB8IER1cmF0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZHVyYXRpb25fdG9fc3RyaW5nIHgpXG4gICAgfCBFbnVtIChfLCAobmFtZSwgXykpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgbmFtZVxuICAgIHwgU3RydWN0IChuYW1lLCBhdHRycykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+JXMgPSB7QCAlYUA7PDEgLTI+fUBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAsXCIpXG4gICAgICAgICAgIChmdW4gZm10IChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczogJWFcIiBuYW1lIGZvcm1hdF92YWx1ZSB2YWx1ZSkpXG4gICAgICAgIGF0dHJzXG4gICAgfCBBcnJheSBlbHRzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPltAICVhQDs8MSAtMj5dQF1cIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCI7QCBcIilcbiAgICAgICAgICAgZm9ybWF0X3ZhbHVlKVxuICAgICAgICAoZWx0cyB8PiBBcnJheS50b19saXN0KVxuICBhbmQgZm9ybWF0X2V2ZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmX3dpdGhfZnVuXG4gICAgICB3aGVuIE9wdGlvbi5pc19zb21lIHZhcl9kZWZfd2l0aF9mdW4uZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHZhcl9kZWZfd2l0aF9mdW5cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZiB2YXJfZGVmXG4gICAgfCBGdW5DYWxsIHsgZnVuX25hbWU7IGlucHV0OyBib2R5OyBvdXRwdXQgfSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgIFwiQFs8aG92IDE+PGZ1bmN0aW9uX2NhbGw+QCAlcyA6PUAge0BbPGh2IDE+QCBpbnB1dDpAICVhLEAgb3V0cHV0OkAgXFxcbiAgICAgICAgICVhLEAgYm9keTpAIFtALFxcXG4gICAgICAgICAlYV1AXUAsXFxcbiAgICAgICAgIEBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIGZ1bl9uYW1lKVxuICAgICAgICBmb3JtYXRfdmFyX2RlZiBpbnB1dCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBvdXRwdXRcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICAgIHwgU3ViU2NvcGVDYWxsIHsgbmFtZTsgaW5wdXRzOyBib2R5IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGh2IDI+PHN1YnNjb3BlX2NhbGw+QCAlcyA6PUAge0BbPGh2IDE+QCxcXFxuICAgICAgICAgaW5wdXRzOkAgQFs8aHYgMj5bQCxcXFxuICAgICAgICAgJWFAXV0sQCxcXFxuICAgICAgICAgYm9keTpAIEBbPGh2IDI+W0AgJWFAIF1AXUBdQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSkgZm9ybWF0X3Zhcl9kZWZzIGlucHV0c1xuICAgICAgICAocHBfZXZlbnRzIH5pc19maXJzdF9jYWxsOmZhbHNlKVxuICAgICAgICBib2R5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgIChcIkBbPGh2IDE+JWFAXVwiIF5eIGlmIGlzX2ZpcnN0X2NhbGwgdGhlbiBcIkAuXCIgZWxzZSBcIlwiKVxuICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQCBcIilcbiAgICAgICBmb3JtYXRfZXZlbnQpXG4gICAgZXZlbnRzXG5cbm1vZHVsZSBFdmVudFBhcnNlciA9IHN0cnVjdFxuICBtb2R1bGUgVmFyRGVmTWFwID0gc3RydWN0XG4gICAgbW9kdWxlIFN0cmluZ01hcCA9IE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICB0eXBlIHQgPSB2YXJfZGVmIGxpc3QgU3RyaW5nTWFwLnRcblxuICAgIGxldCBhZGQgKG5hbWUgOiBzdHJpbmcpICh2IDogdmFyX2RlZikgKG1hcCA6IHQpIDogdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aFxuICAgICAgfCBTb21lIGxzIC0+IFN0cmluZ01hcC5hZGQgbmFtZSAodiA6OiBscykgbWFwXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nTWFwLmFkZCBuYW1lIFt2XSBtYXBcblxuICAgICgqKiBbZ2V0IG5hbWUgbWFwXSByZXR1cm5zIHRoZSBsaXN0IG9mIGRlZmluaXRpb25zIGlmIHRoZXJlIGlzIGFcbiAgICAgICAgY29ycmVzcG9uZGluZyBlbnRyeSwgb3RoZXJ3aXNlLCByZXR1cm5zIGFuIGVtcHR5IGFycmF5LiAqKVxuICAgIGxldCBnZXQgKG5hbWUgOiBzdHJpbmcpIChtYXAgOiB0KSA6IHZhcl9kZWYgbGlzdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aCBTb21lIGxzIC0+IGxzIHwgTm9uZSAtPiBbXVxuXG4gICAgbGV0IGVtcHR5IDogdCA9IFN0cmluZ01hcC5lbXB0eVxuICBlbmRcblxuICB0eXBlIGNvbnRleHQgPSB7XG4gICAgKCogS2VlcHMgdHJhY2tzIG9mIHRoZSBzdWJzY29wZSBpbnB1dCB2YXJpYWJsZSBkZWZpbml0aW9ucy4gKilcbiAgICB2YXJzIDogVmFyRGVmTWFwLnQ7XG4gICAgKCogQ3VycmVudCBwYXJzZWQgZXZlbnRzLiAqKVxuICAgIGV2ZW50cyA6IGV2ZW50IGxpc3Q7XG4gICAgcmVzdCA6IHJhd19ldmVudCBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5X2N0eCA9IHsgdmFycyA9IFZhckRlZk1hcC5lbXB0eTsgZXZlbnRzID0gW107IHJlc3QgPSBbXSB9XG5cbiAgbGV0IHJhd19ldmVudF90b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQmVnaW5DYWxsIG5hbWUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiQmVnaW5DYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgRW5kQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkVuZENhbGwoWyBcIiBeIFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUgXiBcIiBdKVwiXG4gICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJWYXJpYWJsZURlZmluaXRpb24oWyAlcyBdLCAlcylcIiAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSlcbiAgICAgICAgKHlvanNvbl9vZl9ydW50aW1lX3ZhbHVlIHZhbHVlIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZylcbiAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBQcmludGYuc3ByaW50ZiBcIkRlY2lzaW9uVGFrZW4oXylcIlxuXG4gIGxldCBwYXJzZV9yYXdfZXZlbnRzIHJhd19ldmVudHMgPVxuICAgIGxldCBuYl9yYXdfZXZlbnRzID0gTGlzdC5sZW5ndGggcmF3X2V2ZW50c1xuICAgIGFuZCBpc19mdW5jdGlvbl9jYWxsIGluZm9zID0gMiA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgPSAzID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfdmFyX2RlZiBuYW1lID0gMiA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICBhbmQgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcIm91dHB1dFwiID0gTGlzdC5udGggbmFtZSAyXG4gICAgYW5kIGlzX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcImlucHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuXG4gICAgbGV0IHJlYyBwYXJzZV9ldmVudHMgKGN0eCA6IGNvbnRleHQpIDogY29udGV4dCA9XG4gICAgICBtYXRjaCBjdHgucmVzdCB3aXRoXG4gICAgICB8IFtdIC0+IHsgY3R4IHdpdGggZXZlbnRzID0gY3R4LmV2ZW50cyB8PiBMaXN0LnJldiB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgXykgOjogcmVzdCB3aGVuIGlzX3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICAoKiBWYXJpYWJsZURlZmluaXRpb24gd2l0aG91dCBwb3NpdGlvbiBjb3JyZXNwb25kcyB0byBhIGZ1bmN0aW9uXG4gICAgICAgICAgIGRlZmluaXRpb24gd2hpY2ggYXJlIGlnbm9yZWQgZm9yIG5vdyBpbiBzdHJ1Y3R1cmVkIGV2ZW50cy4gKilcbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggcmVzdCB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmIG5hbWUgLT4gKFxuICAgICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZV0gLT5cbiAgICAgICAgICBsZXQgdmFyX25hbWUgPVxuICAgICAgICAgICAgTGlzdC5udGggKFN0cmluZy5zcGxpdF9vbl9jaGFyICcuJyB2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lKSAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgdmFycyA9XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNcbiAgICAgICAgICAgICAgICB8PiBWYXJEZWZNYXAuYWRkIHZhcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9O1xuICAgICAgICAgICAgICByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2lucHV0X3Zhcl9kZWZdIHRlc3RcIilcbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgOjogcmVzdFxuICAgICAgICB3aGVuIGlzX3Zhcl9kZWYgbmFtZSB8fCBpc19vdXRwdXRfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICBWYXJDb21wdXRhdGlvbiB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9XG4gICAgICAgICAgICAgIDo6IGN0eC5ldmVudHM7XG4gICAgICAgICAgICByZXN0O1xuICAgICAgICAgIH1cbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF9cbiAgICAgICAgd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zIC0+XG4gICAgICAgICgqIFZhcmlhYmxlIGRlZmluaXRpb24gd2l0aCBmdW5jdGlvbiBjYWxscy4gKilcbiAgICAgICAgbGV0IHJlYyBwYXJzZV9mdW5fY2FsbHMgZnVuX2NhbGxzIHJhd19ldmVudHMgPVxuICAgICAgICAgIG1hdGNoIHJhd19ldmVudHMgd2l0aFxuICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF9cbiAgICAgICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxsID0gcGFyc2VfZnVuX2NhbGwgcmF3X2V2ZW50cyBpblxuICAgICAgICAgICAgcGFyc2VfZnVuX2NhbGxzIChmdW5fY2FsbCA6OiBmdW5fY2FsbHMpIHJlc3RcbiAgICAgICAgICB8IHJlc3QgLT4gcmVzdCwgZnVuX2NhbGxzIHw+IExpc3QucmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN0LCB2YXJfY29tcCA9XG4gICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxscyA9IHBhcnNlX2Z1bl9jYWxscyBbXSAoTGlzdC50bCBjdHgucmVzdCkgaW5cbiAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICggcmVzdCxcbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb25cbiAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gU29tZSBmdW5fY2FsbHMgfSApXG4gICAgICAgICAgfCBldmVudCA6OiBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoXCJJbnZhbGlkIGZ1bmN0aW9uIGNhbGwgKFsgXCJcbiAgICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBpbmZvc1xuICAgICAgICAgICAgICBeIFwiIF0pOiBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uIChmdW5jdGlvbiBvdXRwdXQpLCBmb3VuZDogXCJcbiAgICAgICAgICAgICAgXiByYXdfZXZlbnRfdG9fc3RyaW5nIGV2ZW50XG4gICAgICAgICAgICAgIF4gXCJbXCJcbiAgICAgICAgICAgICAgXiAobmJfcmF3X2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlc3QgKyAxIHw+IHN0cmluZ19vZl9pbnQpXG4gICAgICAgICAgICAgIF4gXCJdXCIpXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFxcXG4gICAgICAgICAgICAgICAgIGVuZCBvZiB0b2tlbnNcIilcbiAgICAgICAgaW5cblxuICAgICAgICBwYXJzZV9ldmVudHMgeyBjdHggd2l0aCBldmVudHMgPSB2YXJfY29tcCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF8gd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zXG4gICAgICAgIC0+XG4gICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIGN0eC5yZXN0IGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gRnVuQ2FsbCBmdW5fY2FsbCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgQmVnaW5DYWxsIGluZm9zIDo6IHJlc3Qgd2hlbiBpc19zdWJzY29wZV9jYWxsIGluZm9zIC0+IChcbiAgICAgICAgbWF0Y2ggaW5mb3Mgd2l0aFxuICAgICAgICB8IFtfOyB2YXJfbmFtZTsgX10gLT5cbiAgICAgICAgICBsZXQgYm9keV9jdHggPSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0IH0gaW5cbiAgICAgICAgICBsZXQgaW5wdXRzID0gVmFyRGVmTWFwLmdldCB2YXJfbmFtZSBjdHgudmFycyBpblxuICAgICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICAgIFN1YlNjb3BlQ2FsbCB7IG5hbWUgPSBpbmZvczsgaW5wdXRzOyBib2R5ID0gYm9keV9jdHguZXZlbnRzIH1cbiAgICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgICByZXN0ID0gYm9keV9jdHgucmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidW5yZWFjaGFibGUgZHVlIHRvIHRoZSBbaXNfc3Vic2NvcGVfY2FsbF0gdGVzdFwiKVxuICAgICAgfCBFbmRDYWxsIF8gOjogcmVzdCAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXY7IHJlc3QgfVxuICAgICAgfCBldmVudCA6OiBfIC0+IGZhaWx3aXRoIChcIlVuZXhwZWN0ZWQgZXZlbnQ6IFwiIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudClcbiAgICBhbmQgcGFyc2VfZnVuX2NhbGwgZXZlbnRzID1cbiAgICAgIG1hdGNoIGV2ZW50cyB3aXRoXG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAmJiBpc19pbnB1dF92YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgbGV0IHJlc3QsIGJvZHksIG91dHB1dCA9XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID1cbiAgICAgICAgICAgIHBhcnNlX2V2ZW50cyB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBib2R5X3JldiA9IExpc3QucmV2IGJvZHlfY3R4LmV2ZW50cyBpblxuICAgICAgICAgIGJvZHlfY3R4LnJlc3QsIGJvZHlfcmV2IHw+IExpc3QudGwgfD4gTGlzdC5yZXYsIGJvZHlfcmV2IHw+IExpc3QuaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gdmFyX2RlZlxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1pc3NpbmcgZnVuY3Rpb24gb3V0cHV0IHZhcmlhYmxlIGRlZmluaXRpb24uXCJcbiAgICAgICAgaW5cblxuICAgICAgICAoIHJlc3QsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuX25hbWUgPSBpbmZvcztcbiAgICAgICAgICAgIGlucHV0ID0geyBwb3MgPSBOb25lOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9O1xuICAgICAgICAgICAgYm9keTtcbiAgICAgICAgICAgIG91dHB1dDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIkludmFsaWQgc3RhcnQgb2YgZnVuY3Rpb24gY2FsbC5cIlxuICAgIGluXG5cbiAgICBsZXQgY3R4ID1cbiAgICAgIHRyeSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0ID0gcmF3X2V2ZW50cyB9XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+XG4gICAgICAgICgqIFRPRE86IGRpc2N1c3Mgd2hhdCBzaG91bGQgYmUgZG9uZS4gKilcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHJhdyBldmVudHM6ICVzXFxuXCIgbXNnO1xuICAgICAgICBlbXB0eV9jdHhcbiAgICBpblxuICAgIGN0eC5ldmVudHNcbmVuZFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgOlxuICAgICAgJ2EuXG4gICAgICBzb3VyY2VfcG9zaXRpb24gLT5cbiAgICAgICh1bml0IC0+ICdhKSBhcnJheSAtPlxuICAgICAgKHVuaXQgLT4gYm9vbCkgLT5cbiAgICAgICh1bml0IC0+ICdhKSAtPlxuICAgICAgJ2EgPVxuIGZ1biBwb3MgZXhjZXB0aW9ucyBqdXN0IGNvbnMgLT5cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbGV0IG5ld192YWwgPSB0cnkgU29tZSAoZXhjZXB0ICgpKSB3aXRoIEVtcHR5RXJyb3IgLT4gTm9uZSBpblxuICAgICAgICBtYXRjaCBhY2MsIG5ld192YWwgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gbmV3X3ZhbFxuICAgICAgICB8IFNvbWUgXywgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIF8sIFNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgTm9uZSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGlmIGp1c3QgKCkgdGhlbiBjb25zICgpIGVsc2UgcmFpc2UgRW1wdHlFcnJvclxuXG5sZXQgaGFuZGxlX2RlZmF1bHRfb3B0XG4gICAgKHBvcyA6IHNvdXJjZV9wb3NpdGlvbilcbiAgICAoZXhjZXB0aW9ucyA6ICdhIGVvcHRpb24gYXJyYXkpXG4gICAgKGp1c3QgOiBib29sIGVvcHRpb24pXG4gICAgKGNvbnMgOiAnYSBlb3B0aW9uKSA6ICdhIGVvcHRpb24gPVxuICBsZXQgZXhjZXB0ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGV4Y2VwdCAtPlxuICAgICAgICBtYXRjaCBhY2MsIGV4Y2VwdCB3aXRoXG4gICAgICAgIHwgRU5vbmUgXywgXyAtPiBleGNlcHRcbiAgICAgICAgfCBFU29tZSBfLCBFTm9uZSBfIC0+IGFjY1xuICAgICAgICB8IEVTb21lIF8sIEVTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIChFTm9uZSAoKSkgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IEVTb21lIF8gLT4gZXhjZXB0XG4gIHwgRU5vbmUgXyAtPiAoXG4gICAgbWF0Y2gganVzdCB3aXRoXG4gICAgfCBFU29tZSBiIC0+IGlmIGIgdGhlbiBjb25zIGVsc2UgRU5vbmUgKClcbiAgICB8IEVOb25lIF8gLT4gRU5vbmUgKCkpXG5cbmxldCBub19pbnB1dCA6IHVuaXQgLT4gJ2EgPSBmdW4gXyAtPiByYWlzZSBFbXB0eUVycm9yXG5cbmxldCAoICokICkgKGkxIDogbW9uZXkpIChpMiA6IGRlY2ltYWwpIDogbW9uZXkgPVxuICBsZXQgaTFfYWJzID0gWi5hYnMgaTEgaW5cbiAgbGV0IGkyX2FicyA9IFEuYWJzIGkyIGluXG4gIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICBsZXQgcmF0X3Jlc3VsdCA9IFEubXVsIChRLm9mX2JpZ2ludCBpMV9hYnMpIGkyX2FicyBpblxuICBsZXQgcmVzLCByZW1haW5kZXIgPSBaLmRpdl9yZW0gKFEubnVtIHJhdF9yZXN1bHQpIChRLmRlbiByYXRfcmVzdWx0KSBpblxuICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICBkZWNpbWFsICEqKVxuICBpZiBaLihvZl9pbnQgMiAqIHJlbWFpbmRlciA+PSBRLmRlbiByYXRfcmVzdWx0KSB0aGVuXG4gICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICBlbHNlIFouKHJlcyAqIG9mX2ludCBzaWduX2ludClcblxubGV0ICggLyQgKSAobTEgOiBtb25leSkgKG0yIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICBlbHNlIFEuZGl2IChRLm9mX2JpZ2ludCBtMSkgKFEub2ZfYmlnaW50IG0yKVxuXG5sZXQgKCArJCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBtb25leSA9IFouYWRkIG0xIG0yXG5sZXQgKCAtJCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBtb25leSA9IFouc3ViIG0xIG0yXG5sZXQgKCB+LSQgKSAobTEgOiBtb25leSkgOiBtb25leSA9IFouc3ViIFouemVybyBtMVxubGV0ICggKyEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGludGVnZXIgPSBaLmFkZCBpMSBpMlxubGV0ICggLSEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGludGVnZXIgPSBaLnN1YiBpMSBpMlxubGV0ICggfi0hICkgKGkxIDogaW50ZWdlcikgOiBpbnRlZ2VyID0gWi5zdWIgWi56ZXJvIGkxXG5sZXQgKCAqISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogaW50ZWdlciA9IFoubXVsIGkxIGkyXG5cbmxldCAoIC8hICkgKGkxIDogaW50ZWdlcikgKGkyIDogaW50ZWdlcikgOiBpbnRlZ2VyID1cbiAgaWYgWi56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgWi5kaXYgaTEgaTJcblxubGV0ICggKyYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPSBRLmFkZCBpMSBpMlxubGV0ICggLSYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPSBRLnN1YiBpMSBpMlxubGV0ICggfi0mICkgKGkxIDogZGVjaW1hbCkgOiBkZWNpbWFsID0gUS5zdWIgUS56ZXJvIGkxXG5sZXQgKCAqJiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogZGVjaW1hbCA9IFEubXVsIGkxIGkyXG5cbmxldCAoIC8mICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgaWYgUS56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS5kaXYgaTEgaTJcblxubGV0ICggK0AgKSAoZDEgOiBkYXRlKSAoZDIgOiBkdXJhdGlvbikgOiBkYXRlID0gQ2FsZW5kYXJMaWIuRGF0ZS5hZGQgZDEgZDJcbmxldCAoIC1AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBkdXJhdGlvbiA9IENhbGVuZGFyTGliLkRhdGUuc3ViIGQxIGQyXG5cbmxldCAoICteICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGR1cmF0aW9uID1cbiAgQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QuYWRkIGQxIGQyXG5cbmxldCAoIC1eICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGR1cmF0aW9uID1cbiAgQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2Quc3ViIGQxIGQyXG5cbigqIChFbWlsZVJvbGxleSkgTk9URTogeyFDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzfSBpcyBkZXByZWNhdGVkLFxuICAgeyFDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5zYWZlX25iX2RheXN9IHNob3VsZCBiZSB1c2VkLiBCdXQgdGhlIGN1cnJlbnRcbiAgIHshZHVyYXRpb259IGlzIGdyZWF0ZXIgdGhhdCB0aGUgc3VwcG9ydGVkIHBvbHltb3JwaGljIHZhcmlhbnRzLiopXG5sZXQgKCAvXiApIChkMSA6IGR1cmF0aW9uKSAoZDIgOiBkdXJhdGlvbikgOiBkZWNpbWFsID1cbiAgdHJ5XG4gICAgbGV0IG5iX2RheTEgPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzIGQxIGluXG4gICAgbGV0IG5iX2RheTIgPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzIGQyIGluXG4gICAgaWYgMCA9IG5iX2RheTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS4obmJfZGF5MSAvLyBuYl9kYXkyKVxuICB3aXRoIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLk5vdF9jb21wdXRhYmxlIC0+IHJhaXNlIEluZGl2aXNhYmxlRHVyYXRpb25zXG5cbmxldCAoICpeICkgKGQxIDogZHVyYXRpb24pIChpMSA6IGludGVnZXIpIDogZHVyYXRpb24gPVxuICBsZXQgeSwgbSwgZCA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkMSBpblxuICBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5tYWtlXG4gICAgKHkgKiBpbnRlZ2VyX3RvX2ludCBpMSlcbiAgICAobSAqIGludGVnZXJfdG9faW50IGkxKVxuICAgIChkICogaW50ZWdlcl90b19pbnQgaTEpXG5cbmxldCAoIDw9JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yIDw9IDBcbmxldCAoID49JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yID49IDBcbmxldCAoIDwkICkgKG0xIDogbW9uZXkpIChtMiA6IG1vbmV5KSA6IGJvb2wgPSBaLmNvbXBhcmUgbTEgbTIgPCAwXG5sZXQgKCA+JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yID4gMFxubGV0ICggPSQgKSAobTEgOiBtb25leSkgKG0yIDogbW9uZXkpIDogYm9vbCA9IFouY29tcGFyZSBtMSBtMiA9IDBcbmxldCAoID49ISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogYm9vbCA9IFouY29tcGFyZSBpMSBpMiA+PSAwXG5sZXQgKCA8PSEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGJvb2wgPSBaLmNvbXBhcmUgaTEgaTIgPD0gMFxubGV0ICggPiEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGJvb2wgPSBaLmNvbXBhcmUgaTEgaTIgPiAwXG5sZXQgKCA8ISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogYm9vbCA9IFouY29tcGFyZSBpMSBpMiA8IDBcbmxldCAoID0hICkgKGkxIDogaW50ZWdlcikgKGkyIDogaW50ZWdlcikgOiBib29sID0gWi5jb21wYXJlIGkxIGkyID0gMFxubGV0ICggPj0mICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBib29sID0gUS5jb21wYXJlIGkxIGkyID49IDBcbmxldCAoIDw9JiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogYm9vbCA9IFEuY29tcGFyZSBpMSBpMiA8PSAwXG5sZXQgKCA+JiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogYm9vbCA9IFEuY29tcGFyZSBpMSBpMiA+IDBcbmxldCAoIDwmICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBib29sID0gUS5jb21wYXJlIGkxIGkyIDwgMFxubGV0ICggPSYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGJvb2wgPSBRLmNvbXBhcmUgaTEgaTIgPSAwXG5sZXQgKCA+PUAgKSAoZDEgOiBkYXRlKSAoZDIgOiBkYXRlKSA6IGJvb2wgPSBDYWxlbmRhckxpYi5EYXRlLmNvbXBhcmUgZDEgZDIgPj0gMFxubGV0ICggPD1AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBib29sID0gQ2FsZW5kYXJMaWIuRGF0ZS5jb21wYXJlIGQxIGQyIDw9IDBcbmxldCAoID5AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBib29sID0gQ2FsZW5kYXJMaWIuRGF0ZS5jb21wYXJlIGQxIGQyID4gMFxubGV0ICggPEAgKSAoZDEgOiBkYXRlKSAoZDIgOiBkYXRlKSA6IGJvb2wgPSBDYWxlbmRhckxpYi5EYXRlLmNvbXBhcmUgZDEgZDIgPCAwXG5sZXQgKCA9QCApIChkMSA6IGRhdGUpIChkMiA6IGRhdGUpIDogYm9vbCA9IENhbGVuZGFyTGliLkRhdGUuY29tcGFyZSBkMSBkMiA9IDBcblxubGV0IGNvbXBhcmVfcGVyaW9kc1xuICAgIChwMSA6IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnQpXG4gICAgKHAyIDogQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QudCkgOiBpbnQgPVxuICB0cnlcbiAgICBsZXQgcDFfZGF5cyA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm5iX2RheXMgcDEgaW5cbiAgICBsZXQgcDJfZGF5cyA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm5iX2RheXMgcDIgaW5cbiAgICBjb21wYXJlIHAxX2RheXMgcDJfZGF5c1xuICB3aXRoIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLk5vdF9jb21wdXRhYmxlIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG5sZXQgKCA+PV4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+PSAwXG5sZXQgKCA8PV4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8PSAwXG5sZXQgKCA+XiApIChkMSA6IGR1cmF0aW9uKSAoZDIgOiBkdXJhdGlvbikgOiBib29sID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID4gMFxubGV0ICggPF4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8IDBcbmxldCAoID1eICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGJvb2wgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPSAwXG5sZXQgKCB+LV4gKSAoZDEgOiBkdXJhdGlvbikgOiBkdXJhdGlvbiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm9wcCBkMVxuXG5sZXQgYXJyYXlfZmlsdGVyIChmIDogJ2EgLT4gYm9vbCkgKGEgOiAnYSBhcnJheSkgOiAnYSBhcnJheSA9XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QuZmlsdGVyIGYgKEFycmF5LnRvX2xpc3QgYSkpXG5cbmxldCBhcnJheV9sZW5ndGggKGEgOiAnYSBhcnJheSkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgKEFycmF5Lmxlbmd0aCBhKVxuIixudWxsLG51bGwsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz4uXG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBSX29jYW1sID0gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbmNsYXNzIHR5cGUgc291cmNlX3Bvc2l0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGZpbGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBsYXdIZWFkaW5ncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSByYXdfZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZXZlbnRUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzb3VyY2VQb3NpdGlvbiA6IHNvdXJjZV9wb3NpdGlvbiBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gICAgbWV0aG9kIGxvZ2dlZFZhbHVlSnNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZHVyYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgeWVhcnMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250aHMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXlzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkdXJhdGlvbl9vZl9qc29vIGQgPVxuICBSX29jYW1sLmR1cmF0aW9uX29mX251bWJlcnMgZCMjLnllYXJzIGQjIy5tb250aHMgZCMjLmRheXNcblxubGV0IGR1cmF0aW9uX3RvX2pzb28gZCA9XG4gIGxldCB5ZWFycywgbW9udGhzLCBkYXlzID0gUl9vY2FtbC5kdXJhdGlvbl90b195ZWFyc19tb250aHNfZGF5cyBkIGluXG4gIG9iamVjdCVqc1xuICAgIHZhbCB5ZWFycyA9IHllYXJzXG4gICAgdmFsIG1vbnRocyA9IG1vbnRoc1xuICAgIHZhbCBkYXlzID0gZGF5c1xuICBlbmRcblxubGV0IGRhdGVfb2ZfanNvbyBkID1cbiAgbGV0IGQgPSBKcy50b19zdHJpbmcgZCBpblxuICBsZXQgZCA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGQgJ1QnIHRoZW4gZCB8PiBTdHJpbmcuc3BsaXRfb25fY2hhciAnVCcgfD4gTGlzdC5oZFxuICAgIGVsc2UgZFxuICBpblxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciAnLScgZCB3aXRoXG4gIHwgW3llYXI7IG1vbnRoOyBkYXldIC0+XG4gICAgUl9vY2FtbC5kYXRlX29mX251bWJlcnMgKGludF9vZl9zdHJpbmcgeWVhcikgKGludF9vZl9zdHJpbmcgbW9udGgpXG4gICAgICAoaW50X29mX3N0cmluZyBkYXkpXG4gIHwgXyAtPiBmYWlsd2l0aCBcImRhdGVfb2ZfanNvbzogaW52YWxpZCBkYXRlXCJcblxubGV0IGRhdGVfdG9fanNvbyBkID0gSnMuc3RyaW5nIEBAIFJfb2NhbWwuZGF0ZV90b19zdHJpbmcgZFxuXG5jbGFzcyB0eXBlIGV2ZW50X21hbmFnZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzZXRMb2cgOiAodW5pdCwgdW5pdCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVFdmVudHMgOlxuICAgICAgKHVuaXQsIGV2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgOlxuICAgICAgKHVuaXQsIHJhd19ldmVudCBKcy50IEpzLmpzX2FycmF5IEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcblxubGV0IGV2ZW50X21hbmFnZXIgOiBldmVudF9tYW5hZ2VyIEpzLnQgPVxuICBvYmplY3QlanNcbiAgICBtZXRob2QgcmVzZXRMb2cgPSBKcy53cmFwX21ldGhfY2FsbGJhY2sgUl9vY2FtbC5yZXNldF9sb2dcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA9XG4gICAgICBKcy53cmFwX21ldGhfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgKFJfb2NhbWwucmV0cmlldmVfbG9nICgpXG4gICAgICAgICAgICAgICB8PiBSX29jYW1sLkV2ZW50UGFyc2VyLnBhcnNlX3Jhd19ldmVudHNcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICBvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGRhdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBZb2pzb24uU2FmZS50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSkpKVxuXG4gICAgbWV0aG9kIHJldHJpZXZlUmF3RXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGV2ZW50VHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUl9vY2FtbC5CZWdpbkNhbGwgXyAtPiBcIkJlZ2luIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgXyAtPiBcIkVuZCBjYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gXyAtPiBcIlZhcmlhYmxlIGRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBcIkRlY2lzaW9uIHRha2VuXCIpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBpbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCZWdpbkNhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoaW5mbywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBKcy5zdHJpbmcgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBbXSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsb2dnZWRWYWx1ZUpzb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoXywgdikgLT4gdlxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gfCBCZWdpbkNhbGwgXyB8IERlY2lzaW9uVGFrZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBSX29jYW1sLnVuZW1iZWRkYWJsZSAoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX3J1bnRpbWVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzb3VyY2VQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5kZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZmlsZU5hbWUgPSBKcy5zdHJpbmcgcG9zLmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRMaW5lID0gcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRMaW5lID0gcG9zLmVuZF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRDb2x1bW4gPSBwb3Muc3RhcnRfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kQ29sdW1uID0gcG9zLmVuZF9jb2x1bW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxhd0hlYWRpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBKcy5zdHJpbmcgcG9zLmxhd19oZWFkaW5ncykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IEpzLnVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKCkpKSkpXG4gIGVuZFxuXG5sZXQgZXhlY3V0ZV9vcl90aHJvd19lcnJvciBmID1cbiAgbGV0IHRocm93X2Vycm9yIChkZXNjciA6IHN0cmluZykgKHBvcyA6IFJfb2NhbWwuc291cmNlX3Bvc2l0aW9uKSA9XG4gICAgbGV0IG1zZyA9XG4gICAgICBKcy5zdHJpbmdcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzIGluIGZpbGUgJXMsIHBvc2l0aW9uICVkOiVkLS0lZDolZC5cIiBkZXNjclxuICAgICAgICAgICBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmUgcG9zLnN0YXJ0X2NvbHVtbiBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgcG9zLmVuZF9jb2x1bW4pXG4gICAgaW5cbiAgICBKcy5Kc19lcnJvci5yYWlzZV9cbiAgICAgIChKcy5Kc19lcnJvci5vZl9lcnJvclxuICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgdmFsIG11dGFibGUgbmFtZSA9IEpzLnN0cmluZyBcIk5vVmFsdWVQcm92aWRlZFwiXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBtZXNzYWdlID0gbXNnXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFjayA9IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICAgICAgbWV0aG9kIHRvU3RyaW5nID0gbXNnXG4gICAgICAgICBlbmQpKVxuICBpblxuICB0cnkgZiAoKSB3aXRoXG4gIHwgUl9vY2FtbC5Ob1ZhbHVlUHJvdmlkZWQgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiTm8gcnVsZSBhcHBsaWVzIGluIHRoZSBnaXZlbiBjb250ZXh0IHRvIGdpdmUgYSB2YWx1ZSB0byB0aGUgdmFyaWFibGVcIiBwb3NcbiAgfCBSX29jYW1sLkNvbmZsaWN0RXJyb3IgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiQSBjb25mbGljdCBoYXBwZW5kIGJldHdlZW4gdHdvIHJ1bGVzIGdpdmluZyBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQXNzZXJ0aW9uRmFpbGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yIFwiQSBmYWlsdXJlIGhhcHBlbmVkIGluIHRoZSBhc3NlcnRpb25cIiBwb3NcbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNvbXB0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBDb21wbGV0ZSBvZiB1bml0XG4gICAgfCBQYXJ0YWdlZSBvZiB1bml0XG4gICAgfCBaZXJvIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY29tcHRlICh4OiBQcmlzZUVuQ29tcHRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNvbXB0ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDb21wbGV0ZSB4IC0+IChcIkNvbXBsw6h0ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXJ0YWdlZSB4IC0+IChcIlBhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBaZXJvIHggLT4gKFwiWsOpcm9cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QWxsb2NhdGlvbnMgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTm9ybWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMgKHg6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVmVyc2VtZW50QWxsb2NhdGlvbnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9ybWFsIHggLT4gKFwiTm9ybWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBFbmZhbnRFbnRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRfaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkX2RhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGRfcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9lbnRyZWUgKHg6IEVuZmFudEVudHJlZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50RW50csOpZVwiXSxcbiAgWyhcImRfaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50RW50cmVlLmRfaWRlbnRpZmlhbnQpO1xuICAgIChcImRfcsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEVudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRfZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50RW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJkX2FfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkX2LDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGFnZTogaW50ZWdlcjtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnQgKHg6IEVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRW5mYW50XCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50LmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHguRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCLDomdlXCIsIGVtYmVkX2ludGVnZXIgeC5FbmZhbnQuYWdlKTtcbiAgICAoXCJwcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnRfb3V0OiBFbmZhbnQudCAtPiBib29sO1xuICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0OiBFbmZhbnQudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMl9vdXQ6IGludGVnZXI7XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmRyb2l0X291dmVydF9vdXQpO1xuICAgIChcImNvbmRpdGlvbnNfaG9yc1/DomdlX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5jb25kaXRpb25zX2hvcnNfYWdlX291dCk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMl9vdXRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmFnZV9sNTEyXzNfMl9vdXQpO1xuICAgIChcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dDogaW50ZWdlcn1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0ICh4OiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhfb3V0XCJdLFxuICBbKFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM19vdXQpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIChfOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQpIDogcnVudGltZV92YWx1ZSA9IFVuaXRcblxuXG5tb2R1bGUgRW5mYW50TGVQbHVzQWdlT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtsZV9wbHVzX2FnZV9vdXQ6IEVuZmFudC50fVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlX291dCAoeDogRW5mYW50TGVQbHVzQWdlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9vdXRcIl0sXG4gIFsoXCJsZV9wbHVzX8OiZ8OpX291dFwiLCBlbWJlZF9lbmZhbnQgeC5FbmZhbnRMZVBsdXNBZ2VPdXQubGVfcGx1c19hZ2Vfb3V0KV0pXG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbmZhbnRzX2luOiBFbmZhbnQudCBhcnJheX1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiAoeDogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpX2luXCJdLFxuICBbKFwiZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSB4LkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4pXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ZlcnNlX291dDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF92ZXJzw6lfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF92ZXJzZV9vdXQpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBlbmZhbnRzX2FfY2hhcmdlX2luOiBFbmZhbnQudCBhcnJheTtcbiAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJlbmZhbnRzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbik7XG4gICAgKFwiYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxubW9kdWxlIFNtaWNPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pY19vdXQgKHg6IFNtaWNPdXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfb3V0XCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlX291dFwiLCBlbWJlZF9tb25leSB4LlNtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCldKVxuXG5cbm1vZHVsZSBTbWljSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGU7IHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9zbWljX2luICh4OiBTbWljSW4udCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZSB4LlNtaWNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2lfbW9udGFudF92ZXJzZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJpX21vbnRhbnRfdmVyc8OpX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LmlfbW9udGFudF92ZXJzZV9vdXQpXSlcblxuXG5tb2R1bGUgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlfZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBpX2VuZmFudHNfaW46IEVuZmFudEVudHJlZS50IGFycmF5O1xuICAgIGlfcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIGlfcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbjogYm9vbDtcbiAgICBpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiaV9kYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiaV9lbmZhbnRzX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnRfZW50cmVlKVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9lbmZhbnRzX2luKTtcbiAgICAoXCJpX3Jlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwiaV9yw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNpZGVuY2VfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbik7XG4gICAgKFwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwiaV9hdmFpdF9lbmZhbnRfw6BfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cblxuXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbjogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LnQgPVxuICBsZXQgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7QWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhPdXQuYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dCA9XG4gICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM199XG5cbmxldCBlbmZhbnRfbGVfcGx1c19hZ2UgKGVuZmFudF9sZV9wbHVzX2FnZV9pbjogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBFbmZhbnRMZVBsdXNBZ2VPdXQudCA9XG4gIGxldCBlbmZhbnRzXzogRW5mYW50LnQgYXJyYXkgPSBlbmZhbnRfbGVfcGx1c19hZ2VfaW4uRW5mYW50TGVQbHVzQWdlSW4uZW5mYW50c19pbiBpblxuICBsZXQgbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkVuZmFudExlUGx1c8OCZ8OpXCI7IFwibGVfcGx1c1/DomfDqVwiXSAoZW1iZWRfZW5mYW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobGV0IHByZWRpY2F0ZV8gOiBfID1cbiAgICAgICAgICAgICAgIChmdW4gKHBvdGVudGllbF9wbHVzX2FnZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBwb3RlbnRpZWxfcGx1c19hZ2VfLkVuZmFudC5hZ2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogXykgKGl0ZW1fOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmICgocHJlZGljYXRlXyBhY2NfKSA+ISAocHJlZGljYXRlXyBpdGVtXykpIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgIGFjY18gZWxzZSBpdGVtXylcbiAgICAgICAgICAgICAgIHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCItMVwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UgPSAoZGF0ZV9vZl9udW1iZXJzICgxOTAwKSAoMSkgKDEpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5hZ2UgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlfSBlbmZhbnRzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge0VuZmFudExlUGx1c0FnZU91dC5sZV9wbHVzX2FnZV9vdXQgPSBsZV9wbHVzX2FnZV99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJTbWljXCI7IFwiYnJ1dF9ob3JhaXJlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzc0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCA9IGJydXRfaG9yYWlyZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMS82NSBkdSAxOSBtYXJzIDIwMjEgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjEgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDgxXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfb3V0ID0gbW9udGFudF99XG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IFByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBhZ2VfbDUxMl8zXzJfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgc21pY19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NjsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMucsOpc2lkZW5jZVwiXSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NjsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdIHNtaWMpXG4gICAge1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgU21pY0luLnJlc2lkZW5jZV9pbiA9IHNtaWNfZG90X3Jlc2lkZW5jZV99KSkgaW5cbiAgbGV0IHNtaWNfZG90X2JydXRfaG9yYWlyZV86IG1vbmV5ID0gcmVzdWx0Xy5TbWljT3V0LmJydXRfaG9yYWlyZV9vdXQgaW5cbiAgbGV0IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI3NTUtMC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKHNtaWNfZG90X2JydXRfaG9yYWlyZV8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChzbWljX2RvdF9icnV0X2hvcmFpcmVfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpICokXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOyBlbmRfY29sdW1uPTU3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXy5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSkgPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2F1dHJlc19jb2Rlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFLDqGdsZXMgZGUgbm9uLWN1bXVsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSkgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJhbV8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpIDwhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2w1MTJfM18yXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge1ByZXN0YXRpb25zRmFtaWxpYWxlc091dC5kcm9pdF9vdXZlcnRfb3V0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID0gY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0ID0gYWdlX2w1MTJfM18yXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luIGluXG4gIGxldCBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBwcmlzZV9lbl9jb21wdGVfOiBFbmZhbnQudCAtPiBQcmlzZUVuQ29tcHRlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IFByaXNlRW5Db21wdGUuUGFydGFnZWUgKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU0OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLlplcm8gKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY0OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCB2ZXJzZW1lbnRfOiBFbmZhbnQudCAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2VtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1OTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDg7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4ODsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9lbmZhbnRzX2w1MjFfMV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfZW5mYW50c19sNTIxXzFcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDY7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjkxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfYWxpbsOpYV8yX2w1MjFfM1wiXVxuICAgIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByZXN1bHRfOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2lvbl9hdnJpbF8yMDA4XCI7XG4gICAgICBcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgpXG4gICAgKCkpKSBpblxuICBsZXQgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBpbnRlZ2VyID0gcmVzdWx0Xy5BbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfb3V0IGluXG4gIGxldCBibWFmX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xNDM7IGVuZF9jb2x1bW49NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGJtYWZfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xNDA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICB7UHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlX30pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmRyb2l0X291dmVydF9vdXQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl86IGludGVnZXIgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXQgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpLmVuZmFudHNcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGVuZmFudHNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVuZmFudExlUGx1c0FnZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJFbmZhbnRMZVBsdXPDgmfDqVwiXVxuICAgIGVuZmFudF9sZV9wbHVzX2FnZSlcbiAgICB7RW5mYW50TGVQbHVzQWdlSW4uZW5mYW50c19pbiA9IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c199KSkgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IHJlc3VsdF8uRW5mYW50TGVQbHVzQWdlT3V0LmxlX3BsdXNfYWdlX291dCBpblxuICBsZXQgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogRW5mYW50LnQgLT4gaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM7IHN0YXJ0X2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxMSkgKDApICgwKSkpIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiMTRcIikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV86IEVuZmFudC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcImVuZmFudHNfw6BfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03NTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSBlbmZhbnRzX2FfY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV8gPSBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9pX2Q1MjFfM186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9JSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4NzcwMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5NTU4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTY4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE1NTgwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzgzMDAwMFwiKSArJFxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2Mjg2MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTY4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Nzc1OTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTgyNzkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKSArJFxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X2NvbXBsZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X2NvbXBsw6ltZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIwOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChhcnJheV9sZW5ndGggZW5mYW50c19hX2NoYXJnZV8pID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnQuYWdlKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmnDqG1lX2VuZmFudF9ldF9wbHVzX21heW90dGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSA+IVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICgoYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIC0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzacOobWVfZW5mYW50X21heW90dGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2MTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDQ7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pID4hXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfdG90YWxfZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfdG90YWxfZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfbW95ZW5fZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfbW95ZW5fZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChhY2NfOiBkZWNpbWFsKSAoZW5mYW50XzogXykgLT5cbiAgICAgICAgICAgICAgICAgYWNjXyArJlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNDVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzOTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyNzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjgzOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTk7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTEwNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDk3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDcxN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1ODhcIikpXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1ODhcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTk7IHN0YXJ0X2NvbHVtbj0yOTsgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfYmFzZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfYmFzZVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICA+PSEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSEgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpID49ISAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9lbmZhbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpID49ISAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfaW50ZWdlcikgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29tcGxlbWVudF9kZWdyZXNzaWZfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzQ7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9faV9pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSQgcmVzc291cmNlc19tZW5hZ2VfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fICokIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJCByZXNzb3VyY2VzX21lbmFnZV8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzM7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDExN1wiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUwNTlcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X2V0X3BsdXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2nDqG1lX2VuZmFudF9ldF9wbHVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDFcIikpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwNVwiKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwMjVcIikpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGnDqG1lX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzc5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0MzdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQ5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yNTU1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2MTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY3MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yODA0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI5MzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzA2OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKSAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlXyA+JCBwbGFmb25kX19pX2Q1MjFfM18pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXCJdIChlbWJlZF9kZWNpbWFsKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV90b3RhbF9lbmZhbnRzXyA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgKG5vbWJyZV9tb3llbl9lbmZhbnRzXyAvJiBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2lfZDUyMV8zXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDRcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF8gKiRcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGludGVnZXIpIChlbmZhbnRfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgYWNjXylcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU0OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XykpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfICskXG4gICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJhbV8uRW5mYW50LmFnZSkgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTFcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXy5FbmZhbnQuYWdlKSA8IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIikpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50LmFnZSkgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU2N1wiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2ZvcmZhaXRhaXJlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV8gPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9faV9pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX19pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGxhZm9uZF9faV9kNTIxXzNfICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4MzsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX2Jhc2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfaW5pdGlhbF9iYXNlXyAqJCByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX21ham9yYXRpb25fKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgIChtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuWmVybyBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlbiBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV9cbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgIChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogbW9uZXkpIChlbmZhbnRfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhY2NfICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgXCIwXCIpIGVuZmFudHNfYV9jaGFyZ2VfKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2Jhc2VfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4NzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfdmVyc2VfYmFzZV8gKyQgbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9jb21wbGVtZW50XyB0aGVuXG4gICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRfZGVncmVzc2lmXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICBtb250YW50X2Jhc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl8pKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgICgoKChtb250YW50X3ZlcnNlX2Jhc2VfICskIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pICskXG4gICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV8pICskXG4gICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSArJFxuICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV8pIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKChub3QgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV8pKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19KSBpblxuICB7QWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfdmVyc2Vfb3V0ID0gbW9udGFudF92ZXJzZV99XG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgaV9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgaV9lbmZhbnRzXzogRW5mYW50RW50cmVlLnQgYXJyYXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4gaW5cbiAgbGV0IGlfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IGlfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRzX8OgX2NoYXJnZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogXykgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlKSArQFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMykgKDApICgwKSkpID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoeWVhcl9vZl9kYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX29mX251bWJlcnMgKDApICgxKSAoMSkpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlfZGF0ZV9jb3VyYW50ZV8gLUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pXG4gICAgICAgICAgICAgIGlfZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5yZXNzb3VyY2VzX23DqW5hZ2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpX3Jlc3NvdXJjZXNfbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGlfcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZW5mYW50c1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZW5mYW50c19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXztcbiAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXztcbiAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mYW50c19hX2NoYXJnZV87XG4gICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJffSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50X3ZlcnNlXzogbW9uZXkgPSByZXN1bHRfLkFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X3ZlcnNlX291dCBpblxuICBsZXQgaV9tb250YW50X3ZlcnNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJpX21vbnRhbnRfdmVyc8OpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF92ZXJzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpKSkgaW5cbiAge0ludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5pX21vbnRhbnRfdmVyc2Vfb3V0ID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBlbmZhbnRfZW50cmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRJZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkRGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRQcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfdG9fanNvbyAoZW5mYW50X2VudHJlZSA6IEVuZmFudEVudHJlZS50KVxuICAgIDogZW5mYW50X2VudHJlZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkSWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfZW50cmVlLmRfaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9lbnRyZWUuZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZERhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfZW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBkUHJpc2VFbkNoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBkQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfZW50cmVlX29mX2pzb28gKGVuZmFudF9lbnRyZWUgOiBlbmZhbnRfZW50cmVlIEpzLnQpIDpcbiAgICBFbmZhbnRFbnRyZWUudCA9XG4gICAge1xuICAgICAgZF9pZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9lbnRyZWUjIy5kSWRlbnRpZmlhbnQ7XG4gICAgICBkX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRSZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkX2RhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kRGF0ZURlTmFpc3NhbmNlO1xuICAgICAgZF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnRfZW50cmVlIyMuZFByaXNlRW5DaGFyZ2U7XG4gICAgICBkX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9lbnRyZWUjIy5kQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9lbnRyZWUjIy5kQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgYWdlID0gaW50ZWdlcl90b19pbnQgZW5mYW50LmFnZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnQucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9vZl9qc29vIChlbmZhbnQgOiBlbmZhbnQgSnMudCkgOiBFbmZhbnQudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnQjIy5pZGVudGlmaWFudDtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vIGVuZmFudCMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50IyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50IyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50IyMuYWdlO1xuICAgICAgcHJpc2VfZW5fY2hhcmdlID0gcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gZW5mYW50IyMucHJpc2VFbkNoYXJnZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHJvaXRPdXZlcnRPdXQ6IChlbmZhbnQgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlT3V0OlxuICAgICAgKGVuZmFudCBKcy50LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExT3V0OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuZHJvaXRfb3V2ZXJ0X291dCAoZW5mYW50X29mX2pzb28gaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZU91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQgKGVuZmFudF9vZl9qc29vIGlucHV0KSkpXG4gICAgICB2YWwgYWdlTDUxMjMyT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuYWdlX2w1MTJfM18yX291dFxuICAgICAgdmFsIHJlZ2ltZU91dHJlTWVyTDc1MTFPdXQgPVxuICAgICAgICBKcy5ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dFxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF9vZl9qc29vXG4gICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID1cbiAgICB7XG4gICAgICBkcm9pdF9vdXZlcnRfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2Ryb2l0X291dmVydF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBhZ2VfbDUxMl8zXzJfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5hZ2VMNTEyMzJPdXQ7XG4gICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXQgPVxuICAgICAgICBKcy50b19ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMucmVnaW1lT3V0cmVNZXJMNzUxMU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBhZ2VNaW5pbXVtQWxpbmVhMUw1MjEzT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9vdXRcbiAgICA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhZ2VNaW5pbXVtQWxpbmVhMUw1MjEzT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9vdXQuYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dFxuICAgICAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dF9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0XG4gICAgICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0IEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50ID1cbiAgICB7XG4gICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCMjLmFnZU1pbmltdW1BbGluZWExTDUyMTNPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA9XG5vYmplY3QgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl90b19qc29vIChfIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCA9IG9iamVjdCVqcyBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb28gKF8gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50ID0gKClcbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlX291dCA9XG4gIG9iamVjdCBtZXRob2QgbGVQbHVzQWdlT3V0OiBlbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX291dF90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0XG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VPdXQudCkgOiBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxlUGx1c0FnZU91dCA9XG4gICAgICAgIGVuZmFudF90b19qc29vIGVuZmFudF9sZV9wbHVzX2FnZV9vdXQubGVfcGx1c19hZ2Vfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9vdXRfb2ZfanNvb1xuICAgIChlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IDogZW5mYW50X2xlX3BsdXNfYWdlX291dCBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlT3V0LnQgPVxuICAgIHtsZV9wbHVzX2FnZV9vdXQgPSBlbmZhbnRfb2ZfanNvbyBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IyMubGVQbHVzQWdlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9sZV9wbHVzX2FnZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZW5mYW50c0luOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyAoZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF90b19qc29vIHgpIGVuZmFudF9sZV9wbHVzX2FnZV9pbi5lbmZhbnRzX2luXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gICAgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlSW4udCA9XG4gICAge1xuICAgICAgZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbmZhbnRfbGVfcGx1c19hZ2VfaW4jIy5lbmZhbnRzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2VPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQubW9udGFudF92ZXJzZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF92ZXJzZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5tb250YW50VmVyc2VPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRzQUNoYXJnZUluOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgZW5mYW50c0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5lbmZhbnRzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLnBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZW5mYW50c19hX2NoYXJnZV9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZW5mYW50c0FDaGFyZ2VJbjtcbiAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5hdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19vdXQgPVxuICBvYmplY3QgbWV0aG9kIGJydXRIb3JhaXJlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19vdXRfdG9fanNvbyAoc21pY19vdXQgOiBTbWljT3V0LnQpIDogc21pY19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYnJ1dEhvcmFpcmVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgc21pY19vdXQuYnJ1dF9ob3JhaXJlX291dFxuICAgICAgZW5kXG4gIGxldCBzbWljX291dF9vZl9qc29vIChzbWljX291dCA6IHNtaWNfb3V0IEpzLnQpIDogU21pY091dC50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHNtaWNfb3V0IyMuYnJ1dEhvcmFpcmVPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50T3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dFxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudE91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dC5tb250YW50X291dFxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMubW9udGFudE91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dFxuICAgIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaU1vbnRhbnRWZXJzZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQuaV9tb250YW50X3ZlcnNlX291dFxuICAgICAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgaV9tb250YW50X3ZlcnNlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5pTW9udGFudFZlcnNlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlEYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpRW5mYW50c0luOiBlbmZhbnRfZW50cmVlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNzb3VyY2VzTWVuYWdlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaURhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGlFbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9lbnRyZWVfdG9fanNvbyB4KSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2VuZmFudHNfaW5cbiAgICAgIHZhbCBpUmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCBpUmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc2lkZW5jZV9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblxuICAgICAgdmFsIGlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgaV9kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaURhdGVDb3VyYW50ZUluO1xuICAgICAgaV9lbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlFbmZhbnRzSW47XG4gICAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaVJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIGlfcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNpZGVuY2VJbjtcbiAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cblxuXG5cbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50KVxuICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0IEpzLnQgPVxuICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0X3RvX2pzb29cblxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudClcbiAgOiBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IEpzLnQgPVxuICBlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV9vdXRfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWNfb3V0IEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfb3V0X3RvX2pzb29cblxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG5cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuXG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQgPVxuICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cblxuXG5sZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4IDogKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCAtPiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAgICAgXG4gICAgICBtZXRob2QgZW5mYW50TGVQbHVzQWdlIDogKGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50IC0+IGVuZmFudF9sZV9wbHVzX2FnZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVuZmFudF9sZV9wbHVzX2FnZVxuICAgICAgXG4gICAgICBtZXRob2Qgc21pYyA6IChzbWljX2luIEpzLnQgLT4gc21pY19vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBwcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBhbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICBlbmQpIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxubW9kdWxlIFR5cGVCYWlsbGV1ciA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1clNvY2lhbCBvZiB1bml0XG4gICAgfCBCYWlsbGV1clByaXZlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9iYWlsbGV1ciAoeDogVHlwZUJhaWxsZXVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUJhaWxsZXVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyU29jaWFsIHggLT4gKFwiQmFpbGxldXJTb2NpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQmFpbGxldXJQcml2ZSB4IC0+IChcIkJhaWxsZXVyUHJpdsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVQcmV0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEQzMzFfMzIgb2YgdW5pdFxuICAgIHwgRDMzMV82M182NCBvZiB1bml0XG4gICAgfCBEMzMxXzU5Xzggb2YgdW5pdFxuICAgIHwgRDMzMV83Nl8xIG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9wcmV0ICh4OiBUeXBlUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVQcsOqdFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEMzMxXzMyIHggLT4gKFwiRDMzMV8zMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzYzXzY0IHggLT4gKFwiRDMzMV82M182NFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzU5XzggeCAtPiAoXCJEMzMxXzU5XzhcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV83Nl8xIHggLT4gKFwiRDMzMV83Nl8xXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVGl0dWxhaXJlUHJldCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEZW1hbmRldXIgb2YgdW5pdFxuICAgIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3RpdHVsYWlyZV9wcmV0ICh4OiBUaXR1bGFpcmVQcmV0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVGl0dWxhaXJlUHLDqnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyIHggLT4gKFwiRGVtYW5kZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24geCAtPlxuICAgICAgKFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgb2YgdW5pdFxuICAgIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSAoeDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVUcmF2YXV4TG9nZW1lbnREODMyXzE1XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgeCAtPlxuICAgICAgKFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIHggLT5cbiAgICAgIChcIlRyYXZhdXhTdXJMb2dlbWVudETDqWrDoEFjcXVpc0Q4MzJfMTVfMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXNEZVRyYXZhdXggeCAtPiAoXCJQYXNEZVRyYXZhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSBvZiB1bml0XG4gICAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ICh4OiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlVHJhdmF1eExvZ2VtZW50Ujg0Ml81XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IHggLT4gKFwiT2JqZWN0aWZEw6ljZW5jZUxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSB4IC0+IChcIlByw6l2dURhbnNMaXN0ZVIzMjFfMTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgeCAtPlxuICAgICAgKFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFzRGVUcmF2YXV4IHggLT4gKFwiUGFzRGVUcmF2YXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFtZWxpb3JlUGFyT2NjdXBhbnQgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgT3VpIG9mIHVuaXRcbiAgICB8IE5vbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCAoeDogQW1lbGlvcmVQYXJPY2N1cGFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkFtw6lsaW9yw6lQYXJPY2N1cGFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPdWkgeCAtPiAoXCJPdWlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExpbWl0ZVRyYW5jaGUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIG1vbmV5XG4gICAgfCBJbmZpbmkgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9saW1pdGVfdHJhbmNoZSAoeDogTGltaXRlVHJhbmNoZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkxpbWl0ZVRyYW5jaGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUmV2ZW51IHggLT4gKFwiUmV2ZW51XCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTGltaXRlVHJhbmNoZURlY2ltYWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIGRlY2ltYWxcbiAgICB8IEluZmluaSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwgKHg6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTGltaXRlVHJhbmNoZUTDqWNpbWFsXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFJldmVudSB4IC0+IChcIlJldmVudVwiLCBlbWJlZF9kZWNpbWFsIHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvblJlY3VlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25fcmVjdWUgKHg6IFByZXN0YXRpb25SZWN1ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByZXN0YXRpb25SZcOndWVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IHggLT4gKFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlQ29udHJhdFRyYXZhaWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQ0RJIG9mIHVuaXRcbiAgICB8IEF1dHJlcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfY29udHJhdF90cmF2YWlsICh4OiBUeXBlQ29udHJhdFRyYXZhaWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQ29udHJhdFRyYXZhaWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ0RJIHggLT4gKFwiQ0RJXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlcyB4IC0+IChcIkF1dHJlc1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRPdUF1dHJlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBvZiBkZWNpbWFsXG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3BhcmVudF9vdV9hdXRyZSAoeDogUGFyZW50T3VBdXRyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudE91QXV0cmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHggLT5cbiAgICAgIChcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2Npw6l0w6lzXCIsIGVtYmVkX2RlY2ltYWwgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBvZiBkZWNpbWFsXG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSAoeDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkdhcmRlQWx0ZXJuw6llXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFBhc0RlR2FyZGVBbHRlcm5lZSB4IC0+IChcIlBhc0RlR2FyZGVBbHRlcm7DqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiLCBlbWJlZF9kZWNpbWFsIHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFzY2VuZGFudCBvZiB1bml0XG4gICAgfCBEZXNjZW5kYW50IG9mIHVuaXRcbiAgICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFyZW50ZSAoeDogUGFyZW50ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFzY2VuZGFudCB4IC0+IChcIkFzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEZXNjZW5kYW50IHggLT4gKFwiRGVzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSB4IC0+XG4gICAgICAoXCJDb2xsYXTDqXJhbERldXhpw6htZVRyb2lzacOobWVEZWdyw6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGF0ZURlTmFpc3NhbmNlIG9mIGRhdGVcbiAgICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2Ugb2YgdW5pdFxuICAgIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlXG4gICh4OiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERhdGVEZU5haXNzYW5jZSB4IC0+IChcIkRhdGVEZU5haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHgpXG4gICAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIHggLT5cbiAgICAgIChcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgeCAtPlxuICAgICAgKFwiQXByw6hzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIE5hdGlvbmFsaXRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEZyYW5jYWlzZSBvZiB1bml0XG4gICAgfCBFdHJhbmdlcmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9uYXRpb25hbGl0ZSAoeDogTmF0aW9uYWxpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOYXRpb25hbGl0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRnJhbmNhaXNlIHggLT4gKFwiRnJhbsOnYWlzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHJhbmdlcmUgeCAtPiAoXCLDiXRyYW5nw6hyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBab25lREhhYml0YXRpb24gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgWm9uZTEgb2YgdW5pdFxuICAgIHwgWm9uZTIgb2YgdW5pdFxuICAgIHwgWm9uZTMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiAoeDogWm9uZURIYWJpdGF0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiWm9uZURIYWJpdGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFpvbmUxIHggLT4gKFwiWm9uZTFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTIgeCAtPiAoXCJab25lMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBab25lMyB4IC0+IChcIlpvbmUzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENhdGVnb3JpZUNhbGN1bEFQTCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2NhdGlvbiBvZiB1bml0XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgb2YgdW5pdFxuICAgIHwgTG9nZW1lbnRGb3llciBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wgKHg6IENhdGVnb3JpZUNhbGN1bEFQTC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNhdMOpZ29yaWVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9jYXRpb24geCAtPiAoXCJMb2NhdGlvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgeCAtPiAoXCJBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMb2dlbWVudEZveWVyIHggLT4gKFwiTG9nZW1lbnRGb3llclwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBvZiBtb25leVxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAoeDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIHggLT4gKFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1ciBvZiB1bml0XG4gICAgfCBCZW5lZmljaWFpcmUgb2YgdW5pdFxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2EgKHg6IFZlcnNlbWVudEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnTDgFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBCYWlsbGV1ciB4IC0+IChcIkJhaWxsZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEJlbmVmaWNpYWlyZSB4IC0+IChcIkLDqW7DqWZpY2lhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSB4IC0+IChcIsOJdGFibGlzc2VtZW50SGFiaWxpdMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBvZiBtb25leVxuICAgIHwgTWVuc3VhbGl0ZSBvZiBtb25leVxuICAgIHwgTG95ZXIgb2YgbW9uZXlcbiAgZW5kXG5sZXQgZW1iZWRfZGVwZW5zZV9sb2dlbWVudCAoeDogRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyB4IC0+IChcIlRvdGFsQW5udWVsw4ljaMOpYW5jZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE1lbnN1YWxpdGUgeCAtPiAoXCJNZW5zdWFsaXTDqVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTG95ZXIgeCAtPiAoXCJMb3llclwiLCBlbWJlZF9tb25leSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb25JbXBheWUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgSW1wYXllTG95ZXIgb2YgdW5pdFxuICAgIHwgSW1wYXllUHJldCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUgKHg6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTW9kZU9jY3VwYXRpb25JbXBhecOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEltcGF5ZUxveWVyIHggLT4gKFwiSW1wYXnDqUxveWVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEltcGF5ZVByZXQgeCAtPiAoXCJJbXBhecOpUHLDqnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRWxpZ2libGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGFzRWxpZ2libGUgeCAtPiAoXCJQYXPDiWxpZ2libGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCB4IC0+XG4gICAgICAoXCJBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25GYW1pbGlhbGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2VsaWJhdGFpcmUgb2YgdW5pdFxuICAgIHwgTWFyaWVzIG9mIGRhdGVcbiAgICB8IFBhY3NlcyBvZiB1bml0XG4gICAgfCBDb25jdWJpbnMgb2YgdW5pdFxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgb2YgdW5pdFxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSAoeDogU2l0dWF0aW9uRmFtaWxpYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uRmFtaWxpYWxlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENlbGliYXRhaXJlIHggLT4gKFwiQ8OpbGliYXRhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcmllcyB4IC0+IChcIk1hcmnDqXNcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgUGFjc2VzIHggLT4gKFwiUGFjc8Opc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb25jdWJpbnMgeCAtPiAoXCJDb25jdWJpbnNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgeCAtPlxuICAgICAgKFwiQ8OpbGliYXRhaXJlU8OpcGFyw6lEZUZhaXRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IHggLT5cbiAgICAgIChcIkNvbmN1YmluYWdlRG9udFPDqXBhcsOpRGVGYWl0XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByaXNlRW5DaGFyZ2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJSw6lzaWRlbmNlQWx0ZXJuw6llQWxsb2NhdGFpcmVVbmlxdWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIHggLT5cbiAgICAgIChcIlLDqXNpZGVuY2VBbHRlcm7DqWVBbGxvY2F0aW9uc1BhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VTb2NpYWxlIG9mIHVuaXRcbiAgICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciAoeDogVHlwZUxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlTG9nZW1lbnRGb3llclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyB4IC0+XG4gICAgICAoXCJMb2dlbWVudFBlcnNvbm5lc8OCZ8OpZXNPdUhhbmRpY2Fww6llc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VTb2NpYWxlIHggLT4gKFwiUsOpc2lkZW5jZVNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgeCAtPlxuICAgICAgKFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubsOpTDM1M18yQXZhbnQxOTk1XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZSBvZiB1bml0XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVSZWhhYmlsaXRlZSBvZiB1bml0XG4gICAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBvZiB1bml0XG4gICAgfCBBdXRyZXNQZXJzb25uZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoeDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2F0w6lnb3JpZcOJcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlIHggLT4gKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWUgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVSw6loYWJpbGl0w6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IHggLT5cbiAgICAgIChcIlBlcnNvbm5lc8OCZ8OpZXNTZWxvbjNEZUQ4NDJfMTZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmVzUGVyc29ubmVzIHggLT4gKFwiQXV0cmVzUGVyc29ubmVzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBQZXJzb25uZVNldWxlIG9mIHVuaXRcbiAgICB8IENvdXBsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sICh4OiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGVyc29ubmVTZXVsZSB4IC0+IChcIlBlcnNvbm5lU2V1bGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ291cGxlIHggLT4gKFwiQ291cGxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlRW5mYW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCAoeDogUHJpc2VFbkNoYXJnZUVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZVBhcnRhZ2VBbGxvY2F0aW9uc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWXDgExhRmFtaWxsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBdmFudCBvZiB1bml0XG4gICAgfCBQZW5kYW50IG9mIHVuaXRcbiAgICB8IEFwcmVzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgKHg6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdmFudCB4IC0+IChcIkF2YW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlbmRhbnQgeCAtPiAoXCJQZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzIHggLT4gKFwiQXByw6hzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbMOpbWVudFByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IHggLT5cbiAgICAgIChcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IHggLT4gKFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbsOJZHVjYXRpb25FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25SZW50csOpZVNjb2xhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Kb3VybmFsacOocmVQcmVzZW5jZVBhcmVudGFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQZXJzb25uZVNvdXNMb2NhdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb246IGludGVnZXI7XG4gICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiAoeDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lU291c0xvY2F0aW9uXCJdLFxuICBbKFwiYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24pO1xuICAgIChcImNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlBlcnNvbm5lU291c0xvY2F0aW9uLmNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xKV0pXG5cblxubW9kdWxlIFBhdHJpbW9pbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80OiBtb25leTtcbiAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQ6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3BhdHJpbW9pbmUgKHg6IFBhdHJpbW9pbmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBhdHJpbW9pbmVcIl0sXG4gIFsoXCJwcm9kdWlzYW50X3JldmVudV9ww6lyaW9kZV9yODIyXzNfM19yODIyXzRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpO1xuICAgIChcIm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9ww6lyaW9kZV9yODIyXzNfM19yODIyXzRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KV0pXG5cblxubW9kdWxlIFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXM6IGJvb2w7XG4gICAgcmVzc291cmNlczogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyICh4OiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXJcIl0sXG4gIFsoXCJkdXLDqWVfcsOpc2lkZW5jZV9kdXJhbnRfcMOpcmlvZGVfcl84MjJfM18xX3N1cMOpcmlldXJlX8OgXzZfbW9pc1wiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcyk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIucmVzc291cmNlcyldKVxuXG5cbm1vZHVsZSBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIFsoXCJhbmNpZW5fbG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBCYWlsbGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9iYWlsbGV1cjogVHlwZUJhaWxsZXVyLnQ7XG4gICAgcmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WOiBib29sO1xuICAgIHJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUk6IGJvb2w7XG4gICAgY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQ6IGJvb2w7XG4gICAgYWNxdWlzaXRpb25fYWlkZXNfZXRhdF9wcmV0X3RpdHJlX0lJX291X2xpdnJlX0lJSTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9iYWlsbGV1ciAoeDogQmFpbGxldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkJhaWxsZXVyXCJdLFxuICBbKFwidHlwZV9iYWlsbGV1clwiLCBlbWJlZF90eXBlX2JhaWxsZXVyXG4gICAgeC5CYWlsbGV1ci50eXBlX2JhaWxsZXVyKTtcbiAgICAoXCJyZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1ZcIiwgZW1iZWRfYm9vbFxuICAgIHguQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WKTtcbiAgICAoXCJyZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUkpO1xuICAgIChcImNvbnN0cnVpdF9hbcOpbGlvcsOpX2NvbmRpdGlvbnNfbDgzMV8xXzRcIiwgZW1iZWRfYm9vbFxuICAgIHguQmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQpO1xuICAgIChcImFjcXVpc2l0aW9uX2FpZGVzX8OpdGF0X3Byw6p0X3RpdHJlX0lJX291X2xpdnJlX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5CYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJKV0pXG5cblxubW9kdWxlIFByZXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfcHJldDogVHlwZVByZXQudDtcbiAgICBkYXRlX3NpZ25hdHVyZTogZGF0ZTtcbiAgICB0aXR1bGFpcmVfcHJldDogVGl0dWxhaXJlUHJldC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXQgKHg6IFByZXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlByw6p0XCJdLFxuICBbKFwidHlwZV9wcsOqdFwiLCBlbWJlZF90eXBlX3ByZXQgeC5QcmV0LnR5cGVfcHJldCk7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVcIiwgZW1iZWRfZGF0ZSB4LlByZXQuZGF0ZV9zaWduYXR1cmUpO1xuICAgIChcInRpdHVsYWlyZV9wcsOqdFwiLCBlbWJlZF90aXR1bGFpcmVfcHJldCB4LlByZXQudGl0dWxhaXJlX3ByZXQpXSlcblxuXG5tb2R1bGUgTmV1Zk91QW5jaWVuID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5ldWYgb2YgdW5pdFxuICAgIHwgQW5jaWVuIG9mIEFtZWxpb3JlUGFyT2NjdXBhbnQudFxuICBlbmRcbmxldCBlbWJlZF9uZXVmX291X2FuY2llbiAoeDogTmV1Zk91QW5jaWVuLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTmV1Zk91QW5jaWVuXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5ldWYgeCAtPiAoXCJOZXVmXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFuY2llbiB4IC0+IChcIkFuY2llblwiLCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgeCkpXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2hhdXQ6IExpbWl0ZVRyYW5jaGUudDsgYmFzOiBtb25leTsgdGF1eDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX3RyYW5jaGVfcmV2ZW51ICh4OiBUcmFuY2hlUmV2ZW51LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFuY2hlUmV2ZW51XCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZSB4LlRyYW5jaGVSZXZlbnUuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX21vbmV5IHguVHJhbmNoZVJldmVudS5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnUudGF1eCldKVxuXG5cbm1vZHVsZSBUcmFuY2hlUmV2ZW51RGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZURlY2ltYWwudDsgYmFzOiBkZWNpbWFsOyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCAoeDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVEw6ljaW1hbFwiXSxcbiAgWyhcImhhdXRcIiwgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpO1xuICAgIChcImJhc1wiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKTtcbiAgICAoXCJ0YXV4XCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KV0pXG5cblxubW9kdWxlIEF1dHJlUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZXNzb3VyY2VzOiBtb25leTtcbiAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZTogYm9vbDtcbiAgICBwYXJlbnRlOiBQYXJlbnRlLnQ7XG4gICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2k6IGJvb2w7XG4gICAgYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1OiBib29sO1xuICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcyk7XG4gICAgKFwiYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0w6lyYWxfZGV1eGnDqG1lX3Ryb2lzacOobWVfZGVncsOpXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpO1xuICAgIChcInBhcmVudMOpXCIsIGVtYmVkX3BhcmVudGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpO1xuICAgIChcImluY2FwYWNpdMOpXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVwiLCBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3PDqWN1XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSk7XG4gICAgKFwidGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfw6Jnw6llXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXSlcblxuXG5tb2R1bGUgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBvZiB1bml0XG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgb2YgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAoeDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlTmFpc3NhbmNlVHJvaXNpw6htZU91RGVybmllclBsdXNFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyB4IC0+IChcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGx1c0RlVHJvaXNFbmZhbnRzIHggLT5cbiAgICAgIChcIlBsdXNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSB4KSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVkZXZhbmNlOiBtb25leTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgKHg6IEluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJyZWRldmFuY2VcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXSlcblxuXG5tb2R1bGUgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBhZ2U6IGludGVnZXI7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcIsOiZ2VcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnRcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnRBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2w7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBhZ2U6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2FfY2hhcmdlICh4OiBFbmZhbnRBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnTDgENoYXJnZVwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICB4LkVuZmFudEFDaGFyZ2UucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCLDomdlXCIsIGVtYmVkX2ludGVnZXIgeC5FbmZhbnRBQ2hhcmdlLmFnZSk7XG4gICAgKFwic2l0dWF0aW9uX2dhcmRlX2FsdGVybsOpZVwiLCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICB4LkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKV0pXG5cblxubW9kdWxlIExvdWVPdVNvdXNMb3VlQURlc1RpZXJzID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vbiBvZiB1bml0XG4gICAgfCBPdWkgb2YgUGVyc29ubmVTb3VzTG9jYXRpb24udFxuICBlbmRcbmxldCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyAoeDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMb3XDqU91U291c0xvdcOpw4BEZXNUaWVyc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24geCkpXG5cblxubW9kdWxlIERlbWFuZGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZTogYm9vbDtcbiAgICBhZ2VfZGVtYW5kZXVyOiBpbnRlZ2VyO1xuICAgIGRhdGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGNvbnRyYXRfZGVfdHJhdmFpbDogVHlwZUNvbnRyYXRUcmF2YWlsLnQ7XG4gICAgbmF0aW9uYWxpdGU6IE5hdGlvbmFsaXRlLnQ7XG4gICAgcGF0cmltb2luZTogUGF0cmltb2luZS50O1xuICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZGVtYW5kZXVyICh4OiBEZW1hbmRldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkRlbWFuZGV1clwiXSxcbiAgWyhcInNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3PDqWN1cml0w6lfc29jaWFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5EZW1hbmRldXIuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSk7XG4gICAgKFwiYWdlX2RlbWFuZGV1clwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5EZW1hbmRldXIuYWdlX2RlbWFuZGV1cik7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRGVtYW5kZXVyLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJjb250cmF0X2RlX3RyYXZhaWxcIiwgZW1iZWRfdHlwZV9jb250cmF0X3RyYXZhaWxcbiAgICB4LkRlbWFuZGV1ci5jb250cmF0X2RlX3RyYXZhaWwpO1xuICAgIChcIm5hdGlvbmFsaXTDqVwiLCBlbWJlZF9uYXRpb25hbGl0ZVxuICAgIHguRGVtYW5kZXVyLm5hdGlvbmFsaXRlKTtcbiAgICAoXCJwYXRyaW1vaW5lXCIsIGVtYmVkX3BhdHJpbW9pbmVcbiAgICB4LkRlbWFuZGV1ci5wYXRyaW1vaW5lKTtcbiAgICAoXCJwZXJzb25uZV9ow6liZXJnw6llX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3PDqWN1cml0w6lfc29jaWFsZVwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKV0pXG5cblxubW9kdWxlIENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IENoYW5nZW1lbnQgb2YgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50XG4gICAgfCBQYXNEZUNoYW5nZW1lbnQgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ2hhbmdlbWVudCB4IC0+XG4gICAgICAoXCJDaGFuZ2VtZW50XCIsIGVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IHgpXG4gICAgfCBQYXNEZUNoYW5nZW1lbnQgeCAtPiAoXCJQYXNEZUNoYW5nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JhaWxsZXVyOiBCYWlsbGV1ci50fVxuZW5kXG5sZXQgZW1iZWRfbG9jYXRpb24gKHg6IExvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2NhdGlvblwiXSxcbiAgWyhcImJhaWxsZXVyXCIsIGVtYmVkX2JhaWxsZXVyIHguTG9jYXRpb24uYmFpbGxldXIpXSlcblxuXG5tb2R1bGUgUHJvcHJpZXRhaXJlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtwcmV0OiBQcmV0LnR9XG5lbmRcbmxldCBlbWJlZF9wcm9wcmlldGFpcmUgKHg6IFByb3ByaWV0YWlyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJvcHJpw6l0YWlyZVwiXSwgWyhcInByw6p0XCIsIGVtYmVkX3ByZXQgeC5Qcm9wcmlldGFpcmUucHJldCldKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZTogbW9uZXk7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQ6IG1vbmV5O1xuICAgIGRhdGVfc2lnbmF0dXJlX3ByZXQ6IGRhdGU7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnQ6IGRhdGU7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTU6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudDtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81OiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudDtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmU6IGJvb2w7XG4gICAgY29wcm9wcmlldGU6IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTc6IGJvb2w7XG4gICAgdHlwZV9wcmV0OiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnQ6IE5ldWZPdUFuY2llbi50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX3ByaW5jaXBhbGUpO1xuICAgIChcImNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdFwiLCBlbWJlZF9tb25leVxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0KTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdFwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9zaWduYXR1cmVfcHJldCk7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5kYXRlX2VudHJlZV9sb2dlbWVudCk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSk7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5jb3Byb3ByaWV0ZSk7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcIiwgZW1iZWRfYm9vbFxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KTtcbiAgICAoXCJ0eXBlX3Byw6p0XCIsIGVtYmVkX3R5cGVfcHJldFxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfcHJldCk7XG4gICAgKFwiYW5jaWVubmV0w6lfbG9nZW1lbnRcIiwgZW1iZWRfbmV1Zl9vdV9hbmNpZW5cbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5hbmNpZW5uZXRlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIFBlcnNvbm5lQUNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFbmZhbnRBQ2hhcmdlIG9mIEVuZmFudEFDaGFyZ2UudFxuICAgIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2Ugb2YgQXV0cmVQZXJzb25uZUFDaGFyZ2UudFxuICBlbmRcbmxldCBlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSAoeDogUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFbmZhbnRBQ2hhcmdlIHggLT4gKFwiRW5mYW50w4BDaGFyZ2VcIiwgZW1iZWRfZW5mYW50X2FfY2hhcmdlIHgpXG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSB4IC0+XG4gICAgICAoXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIiwgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgeCkpXG5cblxubW9kdWxlIEluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbDogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzOiBib29sO1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlOiBib29sO1xuICAgIGNvbG9jYXRpb246IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnM6IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGU6IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzI6IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQ6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmICh4OiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxveWVyX3ByaW5jaXBhbCk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlKTtcbiAgICAoXCJjb2xvY2F0aW9uXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY29sb2NhdGlvbik7XG4gICAgKFwiw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc1wiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpO1xuICAgIChcInLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGUpO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV91c2VyOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudDogZGF0ZTtcbiAgICBsb2NhdGlvbjogTG9jYXRpb24udDtcbiAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMTogYm9vbDtcbiAgICBjb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvZ2VtZW50X2ZveWVyICh4OiBMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJMb2dlbWVudEZveWVyXCJdLFxuICBbKFwidHlwZVwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcik7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KTtcbiAgICAoXCJsb2NhdGlvblwiLCBlbWJlZF9sb2NhdGlvblxuICAgIHguTG9nZW1lbnRGb3llci5sb2NhdGlvbik7XG4gICAgKFwicmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSk7XG4gICAgKFwiY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkpXSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zQ2FsY3VsQVBMID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEluZm9zTG9jYXRpZiBvZiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnRcbiAgICB8IEluZm9zTG9nZW1lbnRGb3llciBvZiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2dlbWVudEZveWVyLnRcbiAgICB8IEluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIG9mIEluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50XG4gIGVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgKHg6IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkluZm9ybWF0aW9uc0NhbGN1bEFQTFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJbmZvc0xvY2F0aWYgeCAtPlxuICAgICAgKFwiSW5mb3NMb2NhdGlmXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiB4KVxuICAgIHwgSW5mb3NMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIkluZm9zTG9nZW1lbnRGb3llclwiLCBlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyIHgpXG4gICAgfCBJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSB4IC0+XG4gICAgICAoXCJJbmZvc0FjY2Vzc2lvblByb3ByacOpdMOpXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb24gPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBvZiBMb2dlbWVudEZveWVyLnRcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IFNvdXNMb2NhdGFpcmUgb2YgTG9jYXRpb24udFxuICAgIHwgTG9jYXRpb25BY2Nlc3Npb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uICh4OiBNb2RlT2NjdXBhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk1vZGVPY2N1cGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0YWlyZSB4IC0+IChcIkxvY2F0YWlyZVwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIlLDqXNpZGVudExvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24geCAtPlxuICAgICAgKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgU291c0xvY2F0YWlyZSB4IC0+IChcIlNvdXNMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIHggLT4gKFwiTG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpKVxuXG5cbm1vZHVsZSBMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzaWRlbmNlX3ByaW5jaXBhbGU6IGJvb2w7XG4gICAgZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2Y6IGJvb2w7XG4gICAgbW9kZV9vY2N1cGF0aW9uOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHByb3ByaWV0YWlyZTogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50O1xuICAgIHVzdWZydWl0OiBQYXJlbnRPdUF1dHJlLnQ7XG4gICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjI6IGJvb2w7XG4gICAgc3VyZmFjZV9tX2NhcnJlczogaW50ZWdlcjtcbiAgICBlc3RfYW5jaWVuX2w4MzFfMjogYm9vbDtcbiAgICBzaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzI6IGJvb2w7XG4gICAgem9uZTogWm9uZURIYWJpdGF0aW9uLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnQgKHg6IExvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2dlbWVudFwiXSxcbiAgWyhcInLDqXNpZGVuY2VfcHJpbmNpcGFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZSk7XG4gICAgKFwiZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2ZcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2YpO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbik7XG4gICAgKFwicHJvcHJpw6l0YWlyZVwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnByb3ByaWV0YWlyZSk7XG4gICAgKFwibG91w6lfb3Vfc291c19sb3XDqV/DoF9kZXNfdGllcnNcIiwgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICB4LkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKTtcbiAgICAoXCJ1c3VmcnVpdFwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnVzdWZydWl0KTtcbiAgICAoXCJsb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2Mik7XG4gICAgKFwic3VyZmFjZV9tX2NhcnLDqXNcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiZXN0X2FuY2llbl9sODMxXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2FuY2llbl9sODMxXzIpO1xuICAgIChcInNpdHXDqV9jb21tdW5lX2TDqXPDqXF1aWxpYnJlX2w4MzFfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpO1xuICAgIChcInpvbmVcIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb24geC5Mb2dlbWVudC56b25lKV0pXG5cblxubW9kdWxlIE1lbmFnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJlc3RhdGlvbnNfcmVjdWVzOiBQcmVzdGF0aW9uUmVjdWUudCBhcnJheTtcbiAgICBsb2dlbWVudDogTG9nZW1lbnQudDtcbiAgICBwZXJzb25uZXNfYV9jaGFyZ2U6IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5O1xuICAgIG5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50OiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGU6IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIGNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaTogYm9vbDtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZTogYm9vbDtcbiAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1czpcbiAgICAgIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbWVuYWdlICh4OiBNZW5hZ2UudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIk3DqW5hZ2VcIl0sXG4gIFsoXCJwcmVzdGF0aW9uc19yZcOndWVzXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wcmVzdGF0aW9uX3JlY3VlKVxuICAgIHguTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgKFwibG9nZW1lbnRcIiwgZW1iZWRfbG9nZW1lbnQgeC5NZW5hZ2UubG9nZW1lbnQpO1xuICAgIChcInBlcnNvbm5lc1/DoF9jaGFyZ2VcIiwgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgIHguTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSk7XG4gICAgKFwibm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4Lk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJjb25kaXRpb25fcmF0dGFjaMOpX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpO1xuICAgIChcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5NZW5hZ2Uubm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlKTtcbiAgICAoXCJlbmZhbnRfw6BfbmHDrnRyZV9hcHLDqHNfcXVhdHJpw6htZV9tb2lzX2dyb3NzZXNzZVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4Lk1lbmFnZS5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9vdXQ6IGRhdGU7XG4gICAgZWxpZ2liaWxpdGVfb3V0OiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQ6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQ6IGRlY2ltYWwgYXJyYXk7XG4gICAgY29uZGl0aW9uXzJfcjgyM180X291dDogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X291dFwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfb3V0XCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmRhdGVfY291cmFudGVfb3V0KTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpX291dFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlX291dFwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQpO1xuICAgIChcImNvbmRpdGlvbl8yX3I4MjNfNF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX291dDogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZV9vdXQ6IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dDogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dDogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0ICh4OiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9vdXRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX291dFwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQpO1xuICAgIChcIsOpbGlnaWJpbGl0w6lfb3V0XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0KTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZV9vdXRcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0OiBpbnRlZ2VyO1xuICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0OiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0ICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudF9vdXRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dFwiLFxuICAgIGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dCk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVfb3V0XCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBib29sO1xuICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW46IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfb3V0OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudF9vdXRcIl0sXG4gIFsoXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50X291dFwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50T3V0Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9lbW1lbmFnZW1lbnRfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9lbW3DqW5hZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZMOpcGVuc2VzX2p1c3RpZmnDqWVzX3LDqWVsbGVtZW50X2VuZ2Fnw6llc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luKV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge3Jlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfb3V0KV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19kZW1hbmRldXJfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW46IG1vbmV5O1xuICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW46XG4gICAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50IGFycmF5O1xuICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW46IGJvb2w7XG4gICAgcGVyc29ubmVzX2FfY2hhcmdlX2luOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbjogYm9vbDtcbiAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbjogYm9vbDtcbiAgICBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW46IGRhdGU7XG4gICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbjpcbiAgICAgIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwicmVzc291cmNlc19kZW1hbmRldXJfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbik7XG4gICAgKFwicmVzc291cmNlc19jb25qb2ludF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4pO1xuICAgIChcInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW5cIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyKVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4pO1xuICAgIChcImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0w6lfcsOpbXVuw6lyw6llX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImNvbmRpdGlvbl/DomdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3Vww6lyaWV1cl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbik7XG4gICAgKFwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc1/DqXR1ZGVzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbik7XG4gICAgKFwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4pO1xuICAgIChcInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cIixcbiAgICBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X291dDogbW9uZXkgLT4gbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCAoeDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXQ6IG1vbmV5O1xuICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX291dDogbW9uZXk7XG4gICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQ6IG1vbmV5O1xuICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dDogZGVjaW1hbDtcbiAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlX291dDogbW9uZXk7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dDogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZl9vdXRcIl0sXG4gIFsoXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dCk7XG4gICAgKFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQpO1xuICAgIChcInBhcnRpY2lwYXRpb25fbWluaW1hbGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCk7XG4gICAgKFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dCk7XG4gICAgKFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4pO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcImNvbG9jYXRpb25faW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlX291dFwiXSxcbiAgWyhcIm1vbnRhbnRfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiBib29sO1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW46IGRlY2ltYWxcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luICh4OiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZV9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbik7XG4gICAgKFwiY29uZGl0aW9uXzJfZHVfODMyXzI1X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgKHg6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llcl9vdXRcIl0sXG4gIFsoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dFwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQ6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNV9vdXQ6IG1vbmV5O1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0OiBkZWNpbWFsO1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dDogbW9uZXk7XG4gICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQ6IG1vbmV5O1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dDogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0OiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0ICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJfb3V0XCJdLFxuICBbKFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X291dCk7XG4gICAgKFwiY29lZmZpY2llbnRfcl9kODMyXzI1X291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3JfZDgzMl8yNV9vdXQpO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQpO1xuICAgIChcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXQpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogdW5pdCAtPiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lfb3V0XCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXRcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQubl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfb3V0OiBtb25leTtcbiAgICBtZW5zdWFsaXRlX21pbmltYWxlX291dDogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0OiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfb3V0XCJdLFxuICBbKFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5tZW5zdWFsaXRlX2VsaWdpYmxlX291dCk7XG4gICAgKFwibWVuc3VhbGl0w6lfbWluaW1hbGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfbWluaW1hbGVfb3V0KTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXRcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXQpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0KTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgdHlwZV9wcmV0X2luOiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfaW46IE5ldWZPdUFuY2llbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInR5cGVfcHLDqnRfaW5cIiwgZW1iZWRfdHlwZV9wcmV0XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luKTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudF9pblwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dDogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0KTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW46IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW46IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpX291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luOiBib29sO1xuICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW46IGRhdGU7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudDtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW46IG1vbmV5O1xuICAgIGNvcHJvcHJpZXRlX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4pO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0X2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dDogZGVjaW1hbDtcbiAgICBlcXVpdmFsZW5jZV9sb3llcl9vdXQ6IG1vbmV5O1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19vdXQ6IG1vbmV5O1xuICAgIGxveWVyX21pbmltYWxfb3V0OiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dDogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llcl9vdXRcIl0sXG4gIFsoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9vdXQpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llcl9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX291dCk7XG4gICAgKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dCk7XG4gICAgKFwibG95ZXJfbWluaW1hbF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmxveWVyX21pbmltYWxfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZWRldmFuY2VfaW46IG1vbmV5O1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50X291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0KV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbjogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbildKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX291dmVydHVyZV9kcm9pdF9vdXQ6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZV9vdXRcIl0sXG4gIFsoXCLDomdlX291dmVydHVyZV9kcm9pdF9vdXRcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LmFnZV9vdXZlcnR1cmVfZHJvaXRfb3V0KV0pXG5cblxubW9kdWxlIE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfYXNzdXLDqV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbildKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfaW1wYXllX291dDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwibW9udGFudF9pbXBhecOpX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50T3V0Lm1vbnRhbnRfaW1wYXllX291dCldKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIGFpZGVfdmVyc2VlX2luOiBWZXJzZW1lbnRBLnQ7XG4gICAgbW9udGFudF9hcGxfaW46IG1vbmV5O1xuICAgIG1vbnRhbnRfY2hhcmdlc19pbjogbW9uZXk7XG4gICAgZGVwZW5zZV9sb2dlbWVudF9pbjogRGVwZW5zZUxvZ2VtZW50LnQ7XG4gICAgbW9udGFudF9kZXR0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwiYWlkZV92ZXJzw6llX2luXCIsIGVtYmVkX3ZlcnNlbWVudF9hXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbik7XG4gICAgKFwibW9udGFudF9hcGxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luKTtcbiAgICAoXCJtb250YW50X2NoYXJnZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbik7XG4gICAgKFwiZMOpcGVuc2VfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGVwZW5zZV9sb2dlbWVudFxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbik7XG4gICAgKFwibW9udGFudF9kZXR0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBlbGlnaWJpbGl0ZV9vdXQ6IGJvb2w7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leTtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dDogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudF9vdXRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpX291dFwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVfb3V0XCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0KV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW46IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGVfb3V0OiBib29sOyBhaWRlX2ZpbmFsZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfb3V0XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQuZWxpZ2liaWxpdGVfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LmFpZGVfZmluYWxlX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbjogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJpbmZvcm1hdGlvbnNfY2FsY3VsX2luXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBTbWljT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmVfb3V0OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX3NtaWNfb3V0ICh4OiBTbWljT3V0LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX291dFwiXSxcbiAgWyhcImJydXRfaG9yYWlyZV9vdXRcIiwgZW1iZWRfbW9uZXkgeC5TbWljT3V0LmJydXRfaG9yYWlyZV9vdXQpXSlcblxuXG5tb2R1bGUgU21pY0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlOyByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50fVxuZW5kXG5sZXQgZW1iZWRfc21pY19pbiAoeDogU21pY0luLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGUgeC5TbWljSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnRfb3V0OiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0OiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMl9vdXQ6IGludGVnZXI7XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuZHJvaXRfb3V2ZXJ0X291dCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2Vfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQpO1xuICAgIChcIsOiZ2VfbDUxMl8zXzJfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmFnZV9sNTEyXzNfMl9vdXQpO1xuICAgIChcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQucmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbjogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5cblxubGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGV4b25lcmVfY3NnXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImV4b27DqXLDqV9jc2dcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTM2LTEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogRGUgbGEgY29udHJpYnV0aW9uIHNvY2lhbGUgc3VyIGxlcyByZXZlbnVzIGQnYWN0aXZpdMOpIGV0IHN1ciBsZXMgcmV2ZW51cyBkZSByZW1wbGFjZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDYgOiBDb250cmlidXRpb24gc29jaWFsZSBnw6luw6lyYWxpc8OpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfY3Jkc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJ0YXV4X2NyZHNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0zOTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTgpICg5KSAoMSkpKSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHBhcmFtXyAqJCB0YXV4X2NyZHNfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU0OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKHRyeSBleG9uZXJlX2NzZ18gd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pIGluXG4gIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi50KSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNlwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yOTAzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYzMlwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfOiBUcmFuY2hlUmV2ZW51LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF90cmFuY2hlX3JldmVudSkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjE3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjE3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg2ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIFt8e1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKX07XG4gICAgICAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDc2MVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQyMzAzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI0XCIpfTtcbiAgICAgICAgICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQ3NjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDhcIil9O1xuICAgICAgICAgICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mjk4NVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKX07XG4gICAgICAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA5NTA1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzI4XCIpfXxdKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODI5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgW3x7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIikpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwNFwiKX07XG4gICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKSk7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMTZcIil9O1xuICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIikpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIik7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY0XCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40OFwiKX18XSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXzogVHJhbmNoZVJldmVudURlY2ltYWwudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjtcbiAgICAgIFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpw6llc1wiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjE4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTA3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX21vbmV5IHRyYW5jaGVfaGF1dF8pIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKSkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMgPVxuICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5iYXMpKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCA9ICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LnRhdXgpfSlcbiAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE1ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgICAgICAoKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGRlY2ltYWwpICh0cmFuY2hlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pIDw9JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0mIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHRyYW5jaGVfaGF1dF8gLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSArJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9tb25leSBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMjA7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgKCgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogZGVjaW1hbCkgKHRyYW5jaGVfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjY18gKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0mICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodHJhbmNoZV9oYXV0XyAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIComICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykgLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJiAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGVjaW1hbF9vZl9tb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSkgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpKVxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykgKyZcbiAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQubW9udGFudF9vdXQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA3Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5ODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSArJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQubl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCA9XG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzExXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMzMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZiAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQubl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXQgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExX31cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW46IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV86IGRhdGUgPSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luLk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luIGluXG4gIGxldCBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiOyBcIsOiZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwxNjEtMTctMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYyKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX25haXNzYW5jZV9hc3N1cmVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTJcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoOSkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTNcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMikgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTRcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0X291dCA9IGFnZV9vdXZlcnR1cmVfZHJvaXRffVxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IEltcGF5ZURlcGVuc2VMb2dlbWVudE91dC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGFpZGVfdmVyc2VlXzogVmVyc2VtZW50QS50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfYXBsXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbiBpblxuICBsZXQgbW9udGFudF9jaGFyZ2VzXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4gaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfOiBEZXBlbnNlTG9nZW1lbnQudCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZGV0dGVfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJtb2RlX29jY3VwYXRpb25faW1wYXnDqVwiXVxuICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlXzogRGVwZW5zZUxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcImTDqXBlbnNlX2xvZ2VtZW50X2JydXRlXCJdXG4gICAgKGVtYmVkX2RlcGVuc2VfbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM3ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDUxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI5MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTG95ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X2xveWVyXyAtJCBtb250YW50X2FwbF8pKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzg3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF9lY2hlYW5jZXNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAodG90YWxfZWNoZWFuY2VzXyAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbnRhbnRfYXBsXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuc3VhbGl0ZV8gLSQgbW9udGFudF9hcGxfKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXykpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwic2V1aWxfaW1wYXnDqV9kw6lwZW5zZV9kZV9sb2dlbWVudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjY4OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjY4OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfbmV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX25ldF8gKyQgbW9udGFudF9jaGFyZ2VzXykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjUyOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI1MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl9icnV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb3llcl9icnV0XyArJCBtb250YW50X2NoYXJnZXNfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzYyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNjI7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWNoZWFuY2VfcHJldF9uZXR0ZV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpIC8mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX25ldHRlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzM0OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzM0OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGVjaGVhbmNlX3ByZXRfYnJ1dGVfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIikgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlX2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1lbnN1YWxpdGVfYnJ1dGVfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDg7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW1wYXllXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vbnRhbnRfaW1wYXnDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNTM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMxMDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9udGFudF9kZXR0ZV8gPj0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZGV0dGVfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjQ3OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbnRhbnRfZGV0dGVfID49JCBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNTM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0ltcGF5ZURlcGVuc2VMb2dlbWVudE91dC5tb250YW50X2ltcGF5ZV9vdXQgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBubyBEU1MvU0QyQi8yMDIwLzMzIGR1IDE4IGbDqXZyaWVyIDIwMjAgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjAgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjEvNjUgZHUgMTkgbWFycyAyMDIxIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIxIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCA9IG1vbnRhbnRffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pY091dC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwM1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAxNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5OFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7IFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pKSkpIGluXG4gIHtTbWljT3V0LmJydXRfaG9yYWlyZV9vdXQgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGZyYWN0aW9uX2w4MzJfM186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJmcmFjdGlvbl9sODMyXzNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk3NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjA2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5tb250YW50X291dCBpblxuICBsZXQgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTkwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKSAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSEgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMlwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ5NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTI0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk0MzkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIwIGF1IDFlciBqYW52aWVyIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1NzIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4MzkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMlwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAxNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2MzEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4OTM4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTI0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkyNDYwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3JlZmVyZW5jZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfcsOpZsOpcmVuY2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Nzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIHR5cGVfYWlkZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MzU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzODQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxMzZcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA0NzNcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDIxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODM1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDgyMVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNzQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIwNDRcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjg7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAzNDVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDAzXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzIzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDcxN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4OTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjYxXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEzXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE4MjFcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MzQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MTVcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDYzMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4OTVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDk0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc0M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI0NlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTM5MlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQ2MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4NzBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDcyM1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODc7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg3OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODc7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg3OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAocGxhZm9uZF9sb3llcl9kODIzXzE2XzJfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjQuXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9kw6lncmVzc2l2aXTDqV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy40XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTczOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU3MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODgwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKGxveWVyX3ByaW5jaXBhbF8gPiQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXyBlbHNlIGxveWVyX3ByaW5jaXBhbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTI2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIChsb3llcl9wcmluY2lwYWxfID4kIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZiAobG95ZXJfcHJpbmNpcGFsXyA+JCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX3ByaW5jaXBhbF8gLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pIC8kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8gLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoKGxveWVyX2VsaWdpYmxlXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzOVwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKChsb3llcl9lbGlnaWJsZV8gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpID49JFxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChsb3llcl9lbGlnaWJsZV8gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9sb3llcnNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicmFwcG9ydF9sb3llcnNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyAvJCBsb3llcl9yZWZlcmVuY2VfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyAvJCBsb3llcl9yZWZlcmVuY2VfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkzNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MzY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPCYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyYXBwb3J0X2xveWVyc18gPj0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPCZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIChyYXBwb3J0X2xveWVyc18gPCYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChyYXBwb3J0X2xveWVyc18gPj0mIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhcHBvcnRfbG95ZXJzXyA8JiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gLSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPj0mIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSkgKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhcHBvcnRfbG95ZXJzXyAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTUxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICgobW9uZXlfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV8gKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgKHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV8gKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpIC8mXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAocmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfICokIGZyYWN0aW9uX2w4MzJfM18pKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgIChyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8gKiQgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjAyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAzMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMDMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV8gKyYgdGF1eF9sb3llcl9lbGlnaWJsZV9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTg0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjAwMzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV8gKyRcbiAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIC0kXG4gICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfKSAqJFxuICAgICAgICAgICAgICAgICB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoKGxveWVyX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pIC0kXG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXykgPCQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pIC0kXG4gICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTI5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTkyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTI5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTkyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgoZnJhY3Rpb25fbDgzMl8zXyA+PSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZnJhY3Rpb25fbDgzMl8zXyA8PSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgzMzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzMzsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzM7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfb3V0ID1cbiAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgPVxuICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV9vdXQgPVxuICAgICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXQgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3OTY7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIxNzI2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzcxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NTI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzgyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSkgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU4OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NzQ7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICB7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MTc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIzMjFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU3ODhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTcwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzNjM1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjg2MzdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzExOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA4MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc2MzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA3ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDM2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3OTI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE3MjdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjQzNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDUwNTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc4MDJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDk1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTEwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc2NTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ0NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIxMDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU1NTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTQ1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzY5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjgzNTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzA4OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc0MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA1NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDEzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3Njg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE0NjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjQwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ4NjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc2MDJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc0NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzODg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc0MTZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Njg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg0ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKHBhcmFtXyAtJCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2ODsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Njg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMDg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMDQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU1OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDA2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjkxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY2OFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjUxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1MTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODA2OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE0MjA5MVwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzM5MzQwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIsOpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKHJlZGV2YW5jZV8gPj0kIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ0OyBzdGFydF9jb2x1bW49MTk7IGVuZF9saW5lPTY0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTE5OyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDQ7IHN0YXJ0X2NvbHVtbj0xOTsgZW5kX2xpbmU9NjQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMDY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjA2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIC0kIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjQ5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTY1NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4Mzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzODsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTY1NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzNjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODQwOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NjI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMjI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIikgLSZcbiAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyAvJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSAtJlxuICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gLSRcbiAgICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9yX2Q4MzJfMjVfICokIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkgLyRcbiAgICAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfICokXG4gICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjEwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN18pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDw9JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN18pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3XyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY0NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjUzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODM0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV8gLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAoKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfIC0mXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpIComIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjYzOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg2Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4NjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02Njk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Njk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjY0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Fycm9uZGlfID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfYXJyb25kaV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk1ODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9hcnJvbmRpXyA+PSZcbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjQ7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NzA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjcwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NzA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjcwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgwMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoKGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXyAtJCBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pIDwkXG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgKChlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gLSQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY3MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfb3V0ID1cbiAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0ID1cbiAgICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQubl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfb3V0ID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCA9XG4gICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCB0eXBlX3ByZXRfOiBUeXBlUHJldC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gaW5cbiAgbGV0IGFuY2llbm5ldGVfbG9nZW1lbnRfOiBOZXVmT3VBbmNpZW4udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTc4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTg5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjM7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1OTg7IHN0YXJ0X2NvbHVtbj0xNTsgZW5kX2xpbmU9MjU5ODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTExMzNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzIzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjkwOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MTM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwODVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfdHJhbmNoZV9pbmbDqXJpZXVyZV9kODMyXzE1XzFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MTQ7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfc3Vww6lyaWV1cmVfZDgzMl8xNV8xXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjYxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjE1OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIikgLyYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzMwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzMwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM1NDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC5uX25vbWJyZV9wYXJ0c19kODMyXzExX291dCBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjcyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoMTApICgxKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTcyXCIpXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfc2lnbmF0dXJlX3ByZXRfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc0NDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY0Njsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjQ2OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQ7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY0OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGF0ZV9jb3VyYW50ZV8gPEBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY3OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyAtJCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChwYXJhbV8gLSQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXykgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTczODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03Mzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTczODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03Mzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfZDgzMl8xOFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY1MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gPD0kXG4gICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfICokXG4gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfKSkgdGhlblxuICAgICAgICAgICAgICAobWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAqJCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XylcbiAgICAgICAgICAgICAgZWxzZSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjE4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQyODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02Njg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMDYwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTU1MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIwMDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDAwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE0MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3ODcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDkzMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTg5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1ODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDYwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjE4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQyODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MTgwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDI4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkwMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPiBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NzEwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA3MzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkyNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDg4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYwMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMwODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTk1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNTUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDAyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTkzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1ODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MTQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODI3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3ODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzEwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDw9QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3NzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcyOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjIwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTMwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM0MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODc3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDQzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg2MTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3NTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NDMwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzU5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM2MTVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzcyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3NjhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU3MThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU5NjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTIyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzA0MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA0NzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzU3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYyODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNDI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTEyNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxMzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjE1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY2NzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTIwN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ4MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODk0OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTI0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY0NDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1NTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTIzM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2NzdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjM5M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODNcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMzMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTE0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAzNDdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU0N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTU4MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1ODJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDkzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTI5N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxODFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM3NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTYxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDY2NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1MjVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTcwNFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE1ODRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgyOVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3MTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTk3M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNjJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMjNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTk2MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MzdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk0OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTQ2OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY2NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQxOFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4NDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjgxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIxNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzQ5MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzMzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYyMVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc4MTRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjUzNFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3MjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTU2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg4MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMDdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMwMjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY3NDJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2ODI4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTM4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE1NTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MDEyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NDFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDg4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjEzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NjQ2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTUwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDg1MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDI2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQyOFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEwMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0ODAzMlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjcwMTZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjY5N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYxNzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODMyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTYwNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY4NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2ODVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjU5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MzgyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzNjhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4ODJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTUwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDQ5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzIyM1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzOTU3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjM2MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNzczXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTgwNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODE3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyNlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4MjZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTExNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM4MlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxMzNcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzQ1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgxMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjgyM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxMTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzYxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk2MDdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MjQ2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQwOThcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzgwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA5MDNcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDEwOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTUzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTg0NVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MTk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NDk1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE0OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODIyOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTI4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY5OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDE1M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjczMjZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxMzFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDU4M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY0NTBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU0NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTM1M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4ODhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg1NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NDg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTA5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNjgwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU4ODVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyOTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzUxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5OTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1ODU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzI1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNjU1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzM5OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDI5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjUxNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5ODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTgxOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzY3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODg2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4MjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc5NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTcyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI0NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNThcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg4MjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3OTlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjEyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE3NDRcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTU4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU5OTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NjU1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NjVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MDc1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNjczXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjA5NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY1M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MDIzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTQ0NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzQ2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkwMlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDM5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYwMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTU2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MjU5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjY5M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNjg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjc5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTA4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjExMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxOTExXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjEzMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjM0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQwMlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTQyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkzMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI5Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjk5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDgxXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2Mjk2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjY5OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTQyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjExNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5Njc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTgxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxOTQ1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjEzNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjY0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQwNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTcwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkzNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzg4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNDcyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2NFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTg5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2NjQzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjc0OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzEwM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMjY0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE2MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQyOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDMyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5ODk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjA3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjYwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE4MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA5N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTQzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQ0N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0ODg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODI5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ5NDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjYyOVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2ODdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwMTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0Njc4M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3NjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTAzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzM5NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYxNzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjUxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIzODZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MjAxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2NTZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDYzXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ5NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MzRcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzUwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNikgKDMwKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKSAtJCBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjEwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAtJCBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQzNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQxNzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTU7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTQ7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC5tb250YW50X291dCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzEyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI2NTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpIC0mXG4gICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIC8kXG4gICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXyAqJFxuICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzEyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MjE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjIxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDw9JFxuICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykgLSRcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19jb3Byb3ByacOpdGFpcmVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjI3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ5Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUwODsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgICAgICAoKCggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXykgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXkgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXykgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJiB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV8pKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NDk7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICgoY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV8gLSZcbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSkgKiYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgIC8mIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjA4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTY5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAobWVuc3VhbGl0ZV9wcmluY2lwYWxlXyA+JFxuICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18pIHRoZW5cbiAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfIGVsc2VcbiAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4NDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Fycm9uZGlfID49JlxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxNDsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIyNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSkgKyQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE0OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKCgoKG1lbnN1YWxpdGVfZWxpZ2libGVfICskXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXykgLSRcbiAgICAgICAgICAgICAgICAgICBtZW5zdWFsaXRlX21pbmltYWxlXykgKiRcbiAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXykgPCRcbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoKChtZW5zdWFsaXRlX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAtJCBtZW5zdWFsaXRlX21pbmltYWxlXykgKiRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczNjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjUwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NDE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NDE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfZWxpZ2libGVfb3V0ID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQubWVuc3VhbGl0ZV9taW5pbWFsZV9vdXQgPVxuICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsX291dCA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbjogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT4gYm9vbCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9wcmV0XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX3Byw6p0XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcGV1cGxlbWVudF9sb2dlbWVudF9sODIyXzEwXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpw6l0w6lcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdSBiw6luw6lmaWNpYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjFcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzODsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdFwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzOTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl81X3BhdHJpbW9pbmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzVfcGF0cmltb2luZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNDA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IFByaXNlIGVuIGNvbXB0ZSBkdSBwYXRyaW1vaW5lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMDAwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInVzdWZydWl0X291X3Byb3ByacOpdMOpX2ZhbWlsbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPiBmYWxzZSkgfHxcbiAgICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnVzdWZydWl0KVxuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudF86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudFwiXVxuICAgIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKChtYXRjaCAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIilcbiAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpXG4gICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIilcbiAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgKyFcbiAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpICshXG4gICAgICAgICAgICAgIChhcnJheV9sZW5ndGggKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl85X2RlY2VuY2VfbG9nZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjU7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1ODsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1ODsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnLDqXNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjE7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0NTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIikpICshXG4gICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KSArIVxuICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aCAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpICohXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjlcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjMwXCIpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVNvdXNMb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMTg7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTg7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MzQ2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXy5EZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICB7T3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV99KSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVPdXQuYWdlX291dmVydHVyZV9kcm9pdF9vdXQgaW5cbiAgbGV0IHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNClcbiAgICAgICAgICAgICAgKyRcbiAgICAgICAgICAgICAgKChkZW1hbmRldXJfLkRlbWFuZGV1ci5wYXRyaW1vaW5lKS5QYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzU7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX25hdGlvbmFsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbmF0aW9uYWxpdMOpXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChkZW1hbmRldXJfLkRlbWFuZGV1ci5uYXRpb25hbGl0ZSlcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRnJhbmNhaXNlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBOYXRpb25hbGl0ZS5FdHJhbmdlcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5zYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zw6ljdVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDQpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDQxODQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4Mzg0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIyLTMgZHUgMTEvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIyXFxcIlwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwMDE0NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE5OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE5OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSA8JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnVzdWZydWl0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSA8JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzIzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2NDsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA+PSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI4XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zdXJmYWNlX21fY2FycmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCI3MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zdXJmYWNlX21fY2FycmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbmltYWxlX3NhbnNfc2V1aWxfbV9jYXJyZXNfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNDM7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg1OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjY7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2ODsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1cl8gPj0kIHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OTsgc3RhcnRfY29sdW1uPTMzOyBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1cl8gPiQgc2V1aWxfbDgyMl81X3BhdHJpbW9pbmVfKVxuICAgICAgICAgICAgICB0aGVuIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyXyBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQ7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzhfIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc18gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wzNTFfOF8xX3NlY3VfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDomdlX2wzNTFfOF8xX3PDqWN1XCJdXG4gICAgKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM0MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwzNTEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNSA6IFRhdXggZXQgbW9udGFudCBkZSBsYSBwZW5zaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0LCBsaXF1aWRhdGlvbiBldCBjYWxjdWwgZGVzIHBlbnNpb25zIGRlIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgViA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlIC0gQXNzdXJhbmNlIHZldXZhZ2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJSUkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBhc3N1cmFuY2VzIHNvY2lhbGVzIGV0IMOgIGRpdmVyc2VzIGNhdMOpZ29yaWVzIGRlIHBlcnNvbm5lcyByYXR0YWNow6llcyBhdSByw6lnaW1lIGfDqW7DqXJhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFnZV9sMTYxXzE3XzJfc2VjdV8gK14gKGR1cmF0aW9uX29mX251bWJlcnMgKDUpICgwKSAoMCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0NzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbmF0aW9uYWxpdGVfICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9sb2dlbWVudF8pKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQZXJzb25uZUFDaGFyZ2UudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE4OTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUGFyZW50ZS5Bc2NlbmRhbnQgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS4yNVwiKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArQCBhZ2VfbDM1MV84XzFfc2VjdV8pIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UudGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg2NSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD1AIGRhdGVfY291cmFudGVfKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK0AgYWdlX2wxNjFfMTdfMl9zZWN1XykgPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICokIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdIGNvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFnZSkgPD0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJwZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zNDk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzYzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgY29lZmZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmXylcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgIChhcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0OTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNjE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfIDwmXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfIDwmXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODE7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmRhdGVfY291cmFudGVfb3V0ID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0ID1cbiAgICAgICBjb25kaXRpb25fMl9yODIzXzRffVxuXG5sZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbjogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfZGVtYW5kZXVyXzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbiBpblxuICBsZXQgcmVzc291cmNlc19jb25qb2ludF86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19jb25qb2ludF9pbiBpblxuICBsZXQgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luIGluXG4gIGxldCBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gaW5cbiAgbGV0IHBlcnNvbm5lc19hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luIGluXG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luIGluXG4gIGxldCBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfOiBkYXRlID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luIGluXG4gIGxldCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXzogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19zZXVpbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTI0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyMjsgc3RhcnRfY29sdW1uPTQ2OyBlbmRfbGluZT01MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSBmYWxzZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTI0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgYXBwbGljYWJsZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1ODkwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgYXBwbGljYWJsZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUzMjsgc3RhcnRfY29sdW1uPTUxOyBlbmRfbGluZT01MzI7IGVuZF9jb2x1bW49NTc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSBmYWxzZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGFjY186IG1vbmV5KSAocGVyc29ubmVfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBhY2NfICskXG4gICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKSlcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzEwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKSA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIDw9IVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKSA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIDw9IVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzQ7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT01MzQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAge0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzhfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzhcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5PdWlBdmVjTG95ZXJPdUNoYXJnZXMgbG95ZXJfb3VfY2hhcmdlc18gLT5cbiAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhfXG4gICAgICAgICAgICB8IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUyNzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUzNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzNzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAzIDogTW9udGFudCBmb3JmYWl0YWlyZSBkZSByZXNzb3VyY2VzIGFwcGxpY2FibGUgYXV4IMOpdHVkaWFudHNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAocmVzc291cmNlc19kZW1hbmRldXJfICskIHJlc3NvdXJjZXNfY29uam9pbnRfKSArJFxuICAgICAgICAgICAgICByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Mzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV8gJiZcbiAgICAgICAgICAgICAgICAgKGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfICYmXG4gICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19jb25qb2ludF8gKyQgcmVzc291cmNlc19jb25qb2ludF8pID49JFxuICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSB0aGVuXG4gICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN18gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwZXJzb25uZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcykpXG4gICAgICAgICAgICAgICAgICAgICAgIHRydWUgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbjogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiMjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICB7U21pY0luLmRhdGVfY291cmFudGVfaW4gPSBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBTbWljSW4ucmVzaWRlbmNlX2luID0gc21pY19kb3RfcmVzaWRlbmNlX30pKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCBpblxuICBsZXQgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChcbiAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjc1NS0wLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoc21pY19kb3RfYnJ1dF9ob3JhaXJlXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoc21pY19kb3RfYnJ1dF9ob3JhaXJlXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTg1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXykpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEgYWdlX2w1MTJfM18yXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuZHJvaXRfb3V2ZXJ0X291dCA9IGRyb2l0X291dmVydF87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID1cbiAgICAgICBjb25kaXRpb25zX2hvcnNfYWdlXztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuYWdlX2w1MTJfM18yX291dCA9IGFnZV9sNTEyXzNfMl87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb3llcl9wcmluY2lwYWxcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI3ODsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxveWVyX3ByaW5jaXBhbF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikgLyYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbG95ZXJfcHJpbmNpcGFsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMDsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTYwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgyMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODMxOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2NjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi7DomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODM1OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Njc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgzODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gdHlwZV9haWRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Njk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY5OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuY29sb2NhdGlvblwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NDA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNvbG9jYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODQyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVffSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDY7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG95ZXJfcHJpbmNpcGFsXyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gcGFyYW1fKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgxMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMzg7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzM4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobG95ZXJfcHJpbmNpcGFsXyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbCkpXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChsb3llcl9wcmluY2lwYWxfIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODQ2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl86IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk2MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI3ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2TDqXBlbnNlX25ldHRlX2Q4NDJfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTYyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk2MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mzc5OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njg7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODk1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICB7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODU7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb2RlX29jY3VwYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4OTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnpvbmVcIl1cbiAgICAgIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM2OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4NzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlZGV2YW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODYyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NjI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgZWxzZVxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgKyRcbiAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpICokXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjU7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMDc7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMDc7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQxNFwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMTAwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM0Mjsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM0MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDY0MFwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDczXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjA7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyNDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMyNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzAxMlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTc4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5MTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTExOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKChwYXJhbV8gLSQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XykgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTc4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Mzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk3MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODkxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUwMjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAoZXF1aXZhbGVuY2VfbG95ZXJfICskIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIC0kXG4gICAgICAgICAgICAgICAgICAgcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJsb3llcl9taW5pbWFsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTAzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUwMzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDM0OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkgPCQgbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN18pXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NzY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgoZXF1aXZhbGVuY2VfbG95ZXJfICskIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIC0kXG4gICAgICAgICAgICAgICBsb3llcl9taW5pbWFsXykgKiQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5MjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk0NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpID4kIHJlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgdGhlbiByZWRldmFuY2VfIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODA7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk1OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSkgKyQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTgyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgPCRcbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0ID1cbiAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuZXF1aXZhbGVuY2VfbG95ZXJfb3V0ID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19vdXQgPVxuICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc187XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmxveWVyX21pbmltYWxfb3V0ID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF86IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gaW5cbiAgbGV0IGNvcHJvcHJpZXRlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTU2OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODgyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIHByZW1pZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSw6hnbGVtZW50IChDRSkgbsKwMjg2Ni85OCBkdSBjb25zZWlsIGR1IDMxIGTDqWNlbWJyZSAxOTk4IGNvbmNlcm5hbnQgbGVzIHRhdXggZGUgY29udmVyc2lvbiBlbnRyZSBsJ2V1cm8gZXQgbGVzIG1vbm5haWVzIGRlcyDDiXRhdHMgbWVtYnJlcyBhZG9wdGFudCBsJ2V1cm9cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTY2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjQzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjM2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDUwMzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTA1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC5uX25vbWJyZV9wYXJ0c19kODMyXzExX291dCBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk0MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOTg7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAmJiBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKSArJFxuICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSArJFxuICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODcyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTEzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XykgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwMjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTAyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzEyNDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTEzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk4MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwNjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxODcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTcwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDc4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTEwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqJCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMTY7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ2MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NTYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDM1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTYwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzNDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICokIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI2MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI5MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODIwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODk1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE5OTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTY5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM1MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3MTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqJCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDM3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDMwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjg4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIyMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICokIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQwMDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDYyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5OTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODYyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA5NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjYyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTczXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ5MTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzOTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxODEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyMDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MTYwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcxMTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Mzg4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3MzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYzNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzUwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTExOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIzMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ3MTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE5NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODM2MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNDFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgxNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMDFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MDcyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI3NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0OTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEzMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNTFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NzhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjU5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzYyODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjkxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjM2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzMTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAxNDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMDY1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1NDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDg2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU5NzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg1MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMwMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTA2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA0MjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNjgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk1NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyMTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY3MzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NzM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYyMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzNDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI1MlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MjAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTU5MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODY3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjU1NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Nzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzc3OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNzVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI0NjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjk4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3NThcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc2MzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk2NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzU3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5NTE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDYwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE3MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2MDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzM5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA4ODhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ0MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIyODlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk3N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYzMTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwMTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODA4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE0OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODY4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTk1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEwNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzA3NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjEzMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzczNzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTMzOFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0Njg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTk0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk5M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzNjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTQ0NVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODUzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM1MDVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzg5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE3NTFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjMwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg5ODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwOTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTIyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIzODFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzNTE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MDMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5ODI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTA3MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0ODRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3ODc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNjk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyODkyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTI4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5ODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTE0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyNjU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzgwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDcyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ3MjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODk1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDA4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5MjZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzMyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTYzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEwOTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyOTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzIxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODEyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5NjFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzMzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMzgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzgyMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTgwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0MTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc1MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTM2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzgwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkxMDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTMyNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MTUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjY4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMzNzhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzcxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzOTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTg4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc1Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2MjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgoKGRhdGVfc2lnbmF0dXJlX3ByZXRfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9zaWduYXR1cmVfcHJldF8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAqJCBjb2VmZmljaWVudF9kODQyXzEyXykpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3NzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3NzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Nzsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2OTc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgIChjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF8gKyQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAtJCBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTc4OyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTc4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgcGFyYW1fKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjI7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19zZXVpbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3OTU7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzg1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3ODU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXyA8PSRcbiAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV8pIHRoZW5cbiAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgKChzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlXyArJFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTk5XCIpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkpICokXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY1MDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgPCQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2MzI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ5OTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ5ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXJcbiAgICAgICAgICAgICAge0xvZ2VtZW50Rm95ZXIudHlwZV91c2VyID1cbiAgICAgICAgICAgICAgICAgKFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKCkpO1xuICAgICAgICAgICAgICAgICBMb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudCA9XG4gICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSk7XG4gICAgICAgICAgICAgICAgIExvZ2VtZW50Rm95ZXIubG9jYXRpb24gPVxuICAgICAgICAgICAgICAgICAgIHtMb2NhdGlvbi5iYWlsbGV1ciA9XG4gICAgICAgICAgICAgICAgICAgICAge0JhaWxsZXVyLnR5cGVfYmFpbGxldXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfViA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9JSSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWV9fTtcbiAgICAgICAgICAgICAgICAgTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICBMb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkgPSBmYWxzZX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzM7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MzM7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTM1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM2OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzOTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM3OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkyOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDU4OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ2NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwic2V1aWxfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MzE7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MzQ7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKCgobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiB0cnVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfc2lnbmF0dXJlX3ByZXRfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXyAqJFxuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTFfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODgwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Nzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ3OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfID4kIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfIGVsc2UgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODczOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDk0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ2ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzA4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSA8JCBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlXyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0Mzk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgobWVuc3VhbGl0ZV9lbGlnaWJsZV8gKyQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgLSRcbiAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKSAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTI3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTQ2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU0NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwNDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTY5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9jYWxjdWxfYXBsXzogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzYyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzYyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTY7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIwNDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfICskIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBcIjQ5OTlcIikpICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kubWVuc3VhbGl0w6lfcHJpbmNpcGFsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICBcIjBcIilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NzY7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4MjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ5NDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnR5cGVfdHJhdmF1eF9sb2dlbWVudFwiXVxuICAgICAgKGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU0MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9zaWduYXR1cmVfcHLDqnRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTQ4OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmRhdGVfc2lnbmF0dXJlX3ByZXQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5sb2NhbF9oYWJpdMOpX3ByZW1pw6hyZV9mb2lzX2LDqW7DqWZpY2lhaXJlXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NTM7IGVuZF9jb2x1bW49NzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfZW50csOpZV9sb2dlbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NTk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY29wcm9wcmlldGVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmNvcHJvcHJpw6l0w6lcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTY0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuY29wcm9wcmlldGUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU2OTsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDg2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV9wcmV0XzogVHlwZVByZXQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS50eXBlX3Byw6p0XCJdIChlbWJlZF90eXBlX3ByZXQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTc0OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IChUeXBlUHJldC5EMzMxXzMyICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZVByZXQuRDMzMV8zMiAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9hbmNpZW5uZXRlX2xvZ2VtZW50XzogTmV1Zk91QW5jaWVuLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuYW5jaWVubmV0w6lfbG9nZW1lbnRcIl0gKGVtYmVkX25ldWZfb3VfYW5jaWVuKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU4MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAoTmV1Zk91QW5jaWVuLk5ldWYgKCkpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChOZXVmT3VBbmNpZW4uTmV1ZiAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmFuY2llbm5ldGVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODk7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqVwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9tZW5zdWFsaXRlX3ByaW5jaXBhbGVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfc2lnbmF0dXJlX3ByZXRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9lbnRyZWVfbG9nZW1lbnRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9jb3Byb3ByaWV0ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9yODIyXzExXzEzXzE3XztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfcHJldF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYW5jaWVubmV0ZV9sb2dlbWVudF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X21lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5tZW5zdWFsaXRlX2VsaWdpYmxlX291dCBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfbWluaW1hbGVfb3V0IGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0IGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyLm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9kZV9vY2N1cGF0aW9uXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjMyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDc0OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4MDsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9nZW1lbnRfZm95ZXIuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzY7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU4NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM4OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvcikpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb3llcl9wcmluY2lwYWxcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ3MzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLmLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTA0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2MDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImxvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDc4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9jYXRpZi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTA7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnpvbmVcIl1cbiAgICAgIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTEwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG9nZW1lbnRfZXN0X2NoYW1icmUpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xNTIzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Njc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY3OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTMwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHR5cGVfYWlkZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2OTsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfY29sb2NhdGlvbl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNvbG9jYXRpb25cIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTE2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY29sb2NhdGlvbilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUzMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4gPVxuICAgICAgIGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPSBsb2NhdGlmX2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF90eXBlX2FpZGVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX30pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3RhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAgICAgbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NzE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzcwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIGxvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NzA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSBlbHNlIHRydWUpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Njk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDcxOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gdHJ1ZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIGVsc2UgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2NzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Njc7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgZWxzZSB0cnVlKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDYxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYzOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRPdXQudCA9XG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE0ODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMjc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMzI7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKCgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogaW50ZWdlcikgKHBlcnNvbm5lX2FfY2hhcmdlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSBlbHNlIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXykgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSArIVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDgzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00OTA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00OTA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzExOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDg5OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTMxMjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEzOyBzdGFydF9jb2x1bW49MTc7IGVuZF9saW5lPTMxMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgIChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FwbC5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbCkgKHJhaXNlXG4gICAgICBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0IGluXG4gIGxldCBjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fcMOpcmlvZGVfZMOpbcOpbmFnZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEzNjsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE0NDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpcnN0X2RheV9vZl9tb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX25haXNzYW5jZV8gK0BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK0AgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00ODQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzOTQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi40XCIpKSArJFxuICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKSAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18pIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSA+IVxuICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKSAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00ODc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9yYW5nX2VuZmFudF8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfIC1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pIDw9XlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM184XzJfKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE3NDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAoZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzXyA8PSQgcGxhZm9uZF9kODIzXzIyXylcbiAgICAgICAgICAgICAgdGhlbiBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2VcbiAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50T3V0Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X291dCA9XG4gICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X31cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzFfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFByZXQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwODg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCAocGFyYW1fLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl9sb2dlbWVudF9wcsOqdFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQyOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MzM7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTM5NTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTE3OyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29uZGl0aW9uXzJfcjgyM180X291dCBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1YpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLmNvbnN0cnVpdF9hbWVsaW9yZV9jb25kaXRpb25zX2w4MzFfMV80KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfVilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5jb25zdHJ1aXRfYW1lbGlvcmVfY29uZGl0aW9uc19sODMxXzFfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1YpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc1ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzYzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM5ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk4OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM5NzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0XyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zOTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF86IGJvb2wgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4gaW5cbiAgbGV0IGR1cmVlX2w4NDFfMV8zXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiZHVyw6llX2w4NDFfMV8zXCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjQxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDUpICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzNTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZXN0YXRpb25fY291cmFudGVfOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MzU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00MzU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ4OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC5kcm9pdF9vdXZlcnRfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEzOyBzdGFydF9jb2x1bW49MTc7IGVuZF9saW5lPTMxMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mjg7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4Mjg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZmFsc2UpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mjk7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4Mjk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29uZGl0aW9uXzJfcjgyM180X291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9zb2NpYWxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50X3NvY2lhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTM2OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIucGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbG9nZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MjY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDA2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM4OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0NDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2OTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0NDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXVuZXNfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2Rpc3Bvc2l0aW9uc19jb21tdW5lc1wiXVxuICAgIChlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXykgdGhlblxuICAgICAgICAgICAgICAoRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5hc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc5OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjY18gKyFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIGVsc2UgYWNjXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIGRhdGVfbWFyaWFnZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9tYXJpYWdlXyArQFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJlZV9sODQxXzFfM18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7RW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpfSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXykgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKSAocHJlc3RhdGlvbl86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVzdGF0aW9uXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJlc3RhdGlvbl8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVzdGF0aW9uXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbDg0MV8yXCJdXG4gICAgKGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQxOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKChlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXVuZXNfID1cbiAgICAgICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXyB0aGVuXG4gICAgICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3NvY2lhbGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQxOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDYyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGNvbmRpdGlvbl9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSBlbHNlXG4gICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2w4NDFfMl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF9vdXQgPVxuICAgICBlbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODcxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfICskIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBcIjQ5OTlcIikpICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMTA7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU4OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NTk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2ODE7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MTM7IGVuZF9jb2x1bW49NTc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfc2lnbmF0dXJlX3Byw6p0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2OTI7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9zaWduYXR1cmVfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnR5cGVfdHJhdmF1eF9sb2dlbWVudFwiXVxuICAgICAgKGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY4NjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2xvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2OTc7IGVuZF9jb2x1bW49NzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MDM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTcxODsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY29wcm9wcmlldGVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5jb3Byb3ByacOpdMOpXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzA4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuY29wcm9wcmlldGUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqVwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fcjgyMl8xMV8xM18xN187XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX3NpZ25hdHVyZV9wcmV0XztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX2VudHJlZV9sb2dlbWVudF87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NvcHJvcHJpZXRlX30pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llci5yZWRldmFuY2UpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0ODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl1cbiAgICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjE7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb2RlX29jY3VwYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MDg7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTUwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE0OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTUyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9nZW1lbnRfZm95ZXIuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk1MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjE7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyMjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl86IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLmNhdMOpZ29yaWVfw6lxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcIl1cbiAgICAgIChlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzI5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXNcbiAgICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXNcbiAgICAgICAgICAgICAgICAgICAoKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk1NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luID0gbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZffSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5sb3llcl9taW5pbWFsX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubG95ZXJfcHJpbmNpcGFsXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjMzOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjA3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzkxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5MTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9jYXRpZi5iw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzkyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5NDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi56b25lXCJdIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY0NDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU3OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTY1NzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5OTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY2NDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0eXBlX2FpZGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MDE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9jb2xvY2F0aW9uXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNvbG9jYXRpb25cIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmNvbG9jYXRpb24pXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODAyOyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjY1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGUpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjcwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XzogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XCJdXG4gICAgICAoZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY3NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80KVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKCkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwNzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MDc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIl0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IGxvY2F0aWZfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3R5cGVfYWlkZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfY29sb2NhdGlvbl87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRffSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIGxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgXyAtPiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDI2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAyNjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAyNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDAzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDI1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSBlbHNlIHRydWUpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA1OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gdHJ1ZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIGVsc2UgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwMTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgZWxzZSB0cnVlKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbjogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDIzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTAxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjU7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5iw6luw6lmaWNpZV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDY2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuaW5mb3JtYXRpb25zX2NhbGN1bFwiXVxuICAgICAgKGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA3OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICB7RWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfO1xuICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsX30pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzg2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM4NjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDc2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5OTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzg3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM4ODsgc3RhcnRfY29sdW1uPTE3OyBlbmRfbGluZT0zODg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVffSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjA7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAwNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuaW5mb3JtYXRpb25zX2NhbGN1bFwiXVxuICAgICAgKGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NTsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTE2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTE2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMTI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTEyOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDA3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMDc7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEyNDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDA4OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzU7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC56b25lKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKSlcbiAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE1OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50KVxuICAgIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5tb2RlX29jY3VwYXRpb25cIl1cbiAgICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmluZm9ybWF0aW9uc19jYWxjdWxcIl1cbiAgICAgIChlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTExNDsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTEwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTExMDsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1MzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTIyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDgyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1NzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMzE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1ODsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTM3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnpvbmUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1OTsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc2MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50KVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHlwZV9haWRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDkxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlXyB8fFxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgKG5vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gcGFyYW1fIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA4OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGVsaWdpYmlsaXRlXykgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfICYmXG4gICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgPiQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKVxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0ID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVffVxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbjogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KSA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgbWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV86IE1lbmFnZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcIm3DqW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZVwiXSAoZW1iZWRfbWVuYWdlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMDI7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAge01lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMgPSAobWVuYWdlXy5NZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5sb2dlbWVudCA9IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgKGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uubm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpO1xuICAgICAgICAgICAgICAgTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKX0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE2NjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MDsgZW5kX2NvbHVtbj0xMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjY7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MDsgZW5kX2NvbHVtbj0xMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5pbmZvcm1hdGlvbnNfY2FsY3VsXCJdIChlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcwOyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjg7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcwOyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE4NTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA3NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlXCI7XG4gICAgICBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGVcIjtcbiAgICAgIFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luID0gY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID0gY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX30pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjY7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE4OTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDY3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5pbmZvcm1hdGlvbnNfY2FsY3VsXCJdXG4gICAgICAoZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTkxOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDY4OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE5MzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUucmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExOTY7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWVcIjsgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQpXG4gICAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfO1xuICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX30pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcIsOpbGlnaWJpbGl0w6lcIl0gKGVtYmVkX2Jvb2wpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTE3MzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExNzM7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNjc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIwMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY3OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImFpZGVfZmluYWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTc0OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ29uc2VpbCBkJ8OJdGF0LCA1w6htZSAtIDTDqG1lIGNoYW1icmVzIHLDqXVuaWVzLCAyMS8wNy8yMDE3LCAzOTg1NjNcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgIChjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfICskXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAoKGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfIC0kXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgICAgICokXG4gICAgICAgICAgICAgICAgICAgICAoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGRlY2ltYWwpIChjb2VmZl86IF8pIC0+IGFjY18gKyYgY29lZmZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKSkpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTE3NDsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQuYWlkZV9maW5hbGVfb3V0ID0gYWlkZV9maW5hbGVffVxuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEFpZGVzX2xvZ2VtZW50XG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHR5cGVfYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICAgIC0gXCJCYWlsbGV1clByaXZlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9iYWlsbGV1cl90b19qc29vIDogVHlwZUJhaWxsZXVyLnQgLT4gdHlwZV9iYWlsbGV1ciBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBCYWlsbGV1clNvY2lhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJhaWxsZXVyU29jaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQmFpbGxldXJQcml2ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJhaWxsZXVyUHJpdmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfYmFpbGxldXJfb2ZfanNvbyAodHlwZV9iYWlsbGV1ciA6IHR5cGVfYmFpbGxldXIgSnMudClcbiAgOiBUeXBlQmFpbGxldXIudCA9XG4gIG1hdGNoIHR5cGVfYmFpbGxldXIjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJCYWlsbGV1clNvY2lhbFwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCAoKVxuICB8IFwiQmFpbGxldXJQcml2ZVwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQmFpbGxldXIudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRDMzMV8zMlwiXG4gICAgICAgIC0gXCJEMzMxXzYzXzY0XCJcbiAgICAgICAgLSBcIkQzMzFfNTlfOFwiXG4gICAgICAgIC0gXCJEMzMxXzc2XzFcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3ByZXRfdG9fanNvbyA6IFR5cGVQcmV0LnQgLT4gdHlwZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEQzMzFfMzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzMyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV82M182NCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNjNfNjRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzU5XzggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzU5XzhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzc2XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzc2XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3ByZXRfb2ZfanNvbyAodHlwZV9wcmV0IDogdHlwZV9wcmV0IEpzLnQpIDogVHlwZVByZXQudCA9XG4gIG1hdGNoIHR5cGVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkQzMzFfMzJcIiAtPiBUeXBlUHJldC5EMzMxXzMyICgpXG4gIHwgXCJEMzMxXzYzXzY0XCIgLT4gVHlwZVByZXQuRDMzMV82M182NCAoKVxuICB8IFwiRDMzMV81OV84XCIgLT4gVHlwZVByZXQuRDMzMV81OV84ICgpXG4gIHwgXCJEMzMxXzc2XzFcIiAtPiBUeXBlUHJldC5EMzMxXzc2XzEgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZVByZXQuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVQcmV0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHRpdHVsYWlyZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyXCJcbiAgICAgICAgLSBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF90b19qc29vIDogVGl0dWxhaXJlUHJldC50IC0+IHRpdHVsYWlyZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF9vZl9qc29vICh0aXR1bGFpcmVfcHJldCA6IHRpdHVsYWlyZV9wcmV0IEpzLnQpXG4gIDogVGl0dWxhaXJlUHJldC50ID1cbiAgbWF0Y2ggdGl0dWxhaXJlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJcIiAtPiBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciAoKVxuICB8IFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiIC0+XG4gICAgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUaXR1bGFpcmVQcmV0LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICAgIC0gXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xICgpXG4gIHwgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICAgIC0gXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgICAtIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgKClcbiAgfCBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSAoKVxuICB8IFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aVwiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvb1xuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCAtPiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvb1xuICAoYW1lbGlvcmVfcGFyX29jY3VwYW50IDogYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnQpXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50ID1cbiAgbWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT3VpXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgKClcbiAgfCBcIk5vblwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdBbWVsaW9yZVBhck9jY3VwYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gOiBMaW1pdGVUcmFuY2hlLnQgLT4gbGltaXRlX3RyYW5jaGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIChsaW1pdGVfdHJhbmNoZSA6IGxpbWl0ZV90cmFuY2hlIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZS50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZSMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZS5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb29cbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50IC0+IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvb1xuICAobGltaXRlX3RyYW5jaGVfZGVjaW1hbCA6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlRGVjaW1hbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uX3JlY3VlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIDogUHJlc3RhdGlvblJlY3VlLnQgLT4gcHJlc3RhdGlvbl9yZWN1ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIChwcmVzdGF0aW9uX3JlY3VlIDogcHJlc3RhdGlvbl9yZWN1ZSBKcy50KVxuICA6IFByZXN0YXRpb25SZWN1ZS50ID1cbiAgbWF0Y2ggcHJlc3RhdGlvbl9yZWN1ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKClcbiAgfCBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiIC0+IFByZXN0YXRpb25SZWN1ZS5Db21wbGVtZW50RmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uSmV1bmVFbmZhbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlICgpXG4gIHwgXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJlc3RhdGlvblJlY3VlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfY29udHJhdF90cmF2YWlsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQ0RJXCJcbiAgICAgICAgLSBcIkF1dHJlc1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfY29udHJhdF90cmF2YWlsX3RvX2pzb29cbiAgOiBUeXBlQ29udHJhdFRyYXZhaWwudCAtPiB0eXBlX2NvbnRyYXRfdHJhdmFpbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBDREkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDRElcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfY29udHJhdF90cmF2YWlsX29mX2pzb29cbiAgKHR5cGVfY29udHJhdF90cmF2YWlsIDogdHlwZV9jb250cmF0X3RyYXZhaWwgSnMudCkgOiBUeXBlQ29udHJhdFRyYXZhaWwudCA9XG4gIG1hdGNoIHR5cGVfY29udHJhdF90cmF2YWlsIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ0RJXCIgLT4gVHlwZUNvbnRyYXRUcmF2YWlsLkNESSAoKVxuICB8IFwiQXV0cmVzXCIgLT4gVHlwZUNvbnRyYXRUcmF2YWlsLkF1dHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUNvbnRyYXRUcmF2YWlsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudF9vdV9hdXRyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV90b19qc29vIDogUGFyZW50T3VBdXRyZS50IC0+IHBhcmVudF9vdV9hdXRyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIChwYXJlbnRfb3VfYXV0cmUgOiBwYXJlbnRfb3VfYXV0cmUgSnMudClcbiAgOiBQYXJlbnRPdUF1dHJlLnQgPVxuICBtYXRjaCBwYXJlbnRfb3VfYXV0cmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIiAtPlxuICBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgcGFyZW50X291X2F1dHJlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVwiIC0+IFBhcmVudE91QXV0cmUuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudE91QXV0cmUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCAtPiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRGVHYXJkZUFsdGVybmVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA6IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50KVxuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiIC0+IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgLT5cbiAgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFzY2VuZGFudFwiXG4gICAgICAgIC0gXCJEZXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50ZV90b19qc29vIDogUGFyZW50ZS50IC0+IHBhcmVudGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRGVzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRlX29mX2pzb28gKHBhcmVudGUgOiBwYXJlbnRlIEpzLnQpIDogUGFyZW50ZS50ID1cbiAgbWF0Y2ggcGFyZW50ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFzY2VuZGFudFwiIC0+IFBhcmVudGUuQXNjZW5kYW50ICgpXG4gIHwgXCJEZXNjZW5kYW50XCIgLT4gUGFyZW50ZS5EZXNjZW5kYW50ICgpXG4gIHwgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiIC0+XG4gICAgUGFyZW50ZS5Db2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICAgIC0gXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgICAgLSBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCAtPiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEYXRlRGVOYWlzc2FuY2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV9vZl9qc29vXG4gIChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAgIDogZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudClcbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50ID1cbiAgbWF0Y2ggZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEYXRlRGVOYWlzc2FuY2VcIiAtPlxuICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLnBheWxvYWQpKVxuICB8IFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbmF0aW9uYWxpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJGcmFuY2Fpc2VcIlxuICAgICAgICAtIFwiRXRyYW5nZXJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfdG9fanNvbyA6IE5hdGlvbmFsaXRlLnQgLT4gbmF0aW9uYWxpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRnJhbmNhaXNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRnJhbmNhaXNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRyYW5nZXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRyYW5nZXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBuYXRpb25hbGl0ZV9vZl9qc29vIChuYXRpb25hbGl0ZSA6IG5hdGlvbmFsaXRlIEpzLnQpIDogTmF0aW9uYWxpdGUudCA9XG4gIG1hdGNoIG5hdGlvbmFsaXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRnJhbmNhaXNlXCIgLT4gTmF0aW9uYWxpdGUuRnJhbmNhaXNlICgpXG4gIHwgXCJFdHJhbmdlcmVcIiAtPiBOYXRpb25hbGl0ZS5FdHJhbmdlcmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ05hdGlvbmFsaXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHpvbmVfZF9oYWJpdGF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiWm9uZTFcIlxuICAgICAgICAtIFwiWm9uZTJcIlxuICAgICAgICAtIFwiWm9uZTNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIDogWm9uZURIYWJpdGF0aW9uLnQgLT4gem9uZV9kX2hhYml0YXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgWm9uZTEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vICh6b25lX2RfaGFiaXRhdGlvbiA6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQpXG4gIDogWm9uZURIYWJpdGF0aW9uLnQgPVxuICBtYXRjaCB6b25lX2RfaGFiaXRhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlpvbmUxXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUxICgpXG4gIHwgXCJab25lMlwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMiAoKVxuICB8IFwiWm9uZTNcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1pvbmVESGFiaXRhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTG9jYXRpb25cIlxuICAgICAgICAtIFwiQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgICAgLSBcIkxvZ2VtZW50Rm95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX3RvX2pzb29cbiAgOiBDYXRlZ29yaWVDYWxjdWxBUEwudCAtPiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvY2F0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRpb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBY2Nlc3Npb25Qcm9wcmlldGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMb2dlbWVudEZveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gIChjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIDogY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50KVxuICA6IENhdGVnb3JpZUNhbGN1bEFQTC50ID1cbiAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0aW9uXCIgLT4gQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uICgpXG4gIHwgXCJBY2Nlc3Npb25Qcm9wcmlldGVcIiAtPiBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpXG4gIHwgXCJMb2dlbWVudEZveWVyXCIgLT4gQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvb1xuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCAtPiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gIChwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgOiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQpXG4gIDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID1cbiAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiIC0+XG4gIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5wYXlsb2FkKSlcbiAgfCBcIk5vblwiIC0+IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJcIlxuICAgICAgICAtIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgICAgLSBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHZlcnNlbWVudF9hX3RvX2pzb28gOiBWZXJzZW1lbnRBLnQgLT4gdmVyc2VtZW50X2EgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEJlbmVmaWNpYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2Ffb2ZfanNvbyAodmVyc2VtZW50X2EgOiB2ZXJzZW1lbnRfYSBKcy50KSA6IFZlcnNlbWVudEEudCA9XG4gIG1hdGNoIHZlcnNlbWVudF9hIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJcIiAtPiBWZXJzZW1lbnRBLkJhaWxsZXVyICgpXG4gIHwgXCJCZW5lZmljaWFpcmVcIiAtPiBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSAoKVxuICB8IFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgLT4gVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEEudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgICAgLSBcIk1lbnN1YWxpdGVcIlxuICAgICAgICAtIFwiTG95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gOiBEZXBlbnNlTG9nZW1lbnQudCAtPiBkZXBlbnNlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBNZW5zdWFsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWVuc3VhbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IExveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyAoZGVwZW5zZV9sb2dlbWVudCA6IGRlcGVuc2VfbG9nZW1lbnQgSnMudClcbiAgOiBEZXBlbnNlTG9nZW1lbnQudCA9XG4gIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJNZW5zdWFsaXRlXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTG95ZXJcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGVwZW5zZUxvZ2VtZW50LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJJbXBheWVMb3llclwiXG4gICAgICAgIC0gXCJJbXBheWVQcmV0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCAtPiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEltcGF5ZUxveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBJbXBheWVQcmV0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllUHJldFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vXG4gIChtb2RlX29jY3VwYXRpb25faW1wYXllIDogbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50KVxuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPVxuICBtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiSW1wYXllTG95ZXJcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKVxuICB8IFwiSW1wYXllUHJldFwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uSW1wYXllLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNFbGlnaWJsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuICA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgLT4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQYXNFbGlnaWJsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0VsaWdpYmxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudClcbiAgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbWF0Y2ggZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0VsaWdpYmxlXCIgLT4gRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCAtPiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA6IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBtYXRjaCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlXCJcbiAgICAgICAgLSBcIk1hcmllc1wiXG4gICAgICAgIC0gXCJQYWNzZXNcIlxuICAgICAgICAtIFwiQ29uY3ViaW5zXCJcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCJcbiAgICAgICAgLSBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZS50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2VsaWJhdGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcmllcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcmllc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhY3NlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhY3Nlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmlucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1Ymluc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2ZhbWlsaWFsZSA6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCkgOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJDZWxpYmF0YWlyZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSAoKVxuICB8IFwiTWFyaWVzXCIgLT5cbiAgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyAoZGF0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5wYXlsb2FkKSlcbiAgfCBcIlBhY3Nlc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgKClcbiAgfCBcIkNvbmN1Ymluc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgKClcbiAgfCBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgKClcbiAgfCBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiIC0+XG4gICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV90b19qc29vIDogUHJpc2VFbkNoYXJnZS50IC0+IHByaXNlX2VuX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gKHByaXNlX2VuX2NoYXJnZSA6IHByaXNlX2VuX2NoYXJnZSBKcy50KVxuICA6IFByaXNlRW5DaGFyZ2UudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NoYXJnZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiIC0+IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpXG4gIHwgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgKClcbiAgfCBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5SZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByaXNlRW5DaGFyZ2UudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgICAtIFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgOiBUeXBlTG9nZW1lbnRGb3llci50IC0+IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZVNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAodHlwZV9sb2dlbWVudF9mb3llciA6IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOiBUeXBlTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyAoKVxuICB8IFwiUmVzaWRlbmNlU29jaWFsZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKClcbiAgfCBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSAoKVxuICB8IFwiQXV0cmVcIiAtPiBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUxvZ2VtZW50Rm95ZXIudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFdHVkaWFudExvZ2VFbkNoYW1icmVcIlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWVcIlxuICAgICAgICAtIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgICAtIFwiQXV0cmVzUGVyc29ubmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50IC0+IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVzUGVyc29ubmVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVzUGVyc29ubmVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gIChjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgIDogY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudClcbiAgOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gIG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmUgKClcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWUgKClcbiAgfCBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgKClcbiAgfCBcIkF1dHJlc1BlcnNvbm5lc1wiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGVyc29ubmVTZXVsZVwiXG4gICAgICAgIC0gXCJDb3VwbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGVyc29ubmVTZXVsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb3VwbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb3VwbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIDogc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGVyc29ubmVTZXVsZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpXG4gIHwgXCJDb3VwbGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29sbGVjdGl2aXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiR3VhZGVsb3VwZVwiXG4gICAgICAgIC0gXCJHdXlhbmVcIlxuICAgICAgICAtIFwiTWFydGluaXF1ZVwiXG4gICAgICAgIC0gXCJMYVJldW5pb25cIlxuICAgICAgICAtIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgICAgLSBcIlNhaW50TWFydGluXCJcbiAgICAgICAgLSBcIk1ldHJvcG9sZVwiXG4gICAgICAgIC0gXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgICAtIFwiTWF5b3R0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV90b19qc29vIDogQ29sbGVjdGl2aXRlLnQgLT4gY29sbGVjdGl2aXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEd1YWRlbG91cGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdWFkZWxvdXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR3V5YW5lIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3V5YW5lXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFydGluaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcnRpbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMYVJldW5pb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMYVJldW5pb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludEJhcnRoZWxlbXkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludE1hcnRpbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50TWFydGluXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWV0cm9wb2xlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWV0cm9wb2xlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWF5b3R0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1heW90dGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV9vZl9qc29vIChjb2xsZWN0aXZpdGUgOiBjb2xsZWN0aXZpdGUgSnMudClcbiAgOiBDb2xsZWN0aXZpdGUudCA9XG4gIG1hdGNoIGNvbGxlY3Rpdml0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkd1YWRlbG91cGVcIiAtPiBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKVxuICB8IFwiR3V5YW5lXCIgLT4gQ29sbGVjdGl2aXRlLkd1eWFuZSAoKVxuICB8IFwiTWFydGluaXF1ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpXG4gIHwgXCJMYVJldW5pb25cIiAtPiBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpXG4gIHwgXCJTYWludEJhcnRoZWxlbXlcIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpXG4gIHwgXCJTYWludE1hcnRpblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKVxuICB8IFwiTWV0cm9wb2xlXCIgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKVxuICB8IFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiAoKVxuICB8IFwiTWF5b3R0ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdDb2xsZWN0aXZpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50IC0+IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAocHJpc2VfZW5fY2hhcmdlX2VuZmFudCA6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZUVuZmFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZVBlcnNvbm5lU291c0xvY2F0aW9uOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25mb3JtZUFydGljbGVMNDQyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28gKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICA6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcGVyc29ubmVfc291c19sb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhZ2VQZXJzb25uZVNvdXNMb2NhdGlvbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICAgIHZhbCBjb25mb3JtZUFydGljbGVMNDQyMSA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMVxuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb29cbiAgICAocGVyc29ubmVfc291c19sb2NhdGlvbiA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCkgOlxuICAgIFBlcnNvbm5lU291c0xvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGFnZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnQgcGVyc29ubmVfc291c19sb2NhdGlvbiMjLmFnZVBlcnNvbm5lU291c0xvY2F0aW9uO1xuICAgICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEgPVxuICAgICAgICBKcy50b19ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5jb25mb3JtZUFydGljbGVMNDQyMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwYXRyaW1vaW5lID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX3RvX2pzb28gKHBhdHJpbW9pbmUgOiBQYXRyaW1vaW5lLnQpIDogcGF0cmltb2luZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIHZhbCBuZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIGVuZFxuICBsZXQgcGF0cmltb2luZV9vZl9qc29vIChwYXRyaW1vaW5lIDogcGF0cmltb2luZSBKcy50KSA6IFBhdHJpbW9pbmUudCA9XG4gICAge1xuICAgICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLnByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ7XG4gICAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLm5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJfdG9fanNvb1xuICAgIChwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICA6IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpXG4gICAgOiBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pcyA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pc1xuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLnJlc3NvdXJjZXNcbiAgICAgIGVuZFxuICBsZXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb29cbiAgICAocGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgICA6IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50KSA6XG4gICAgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCA9XG4gICAge1xuICAgICAgZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgICAgICAgICMjLmR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXM7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciMjLnJlc3NvdXJjZXNcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYW5jaWVuTG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICAgIDogaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYW5jaWVuTG95ZXJQcmluY2lwYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgIChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KSA6XG4gICAgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID1cbiAgICB7XG4gICAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVuTG95ZXJQcmluY2lwYWw7XG4gICAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUJhaWxsZXVyOiB0eXBlX2JhaWxsZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNwZWN0ZUNvbnZlbnRpb25UaXRyZVY6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3BlY3RlQ29udmVudGlvblRpdHJlSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnN0cnVpdEFtZWxpb3JlQ29uZGl0aW9uc0w4MzExNDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWNxdWlzaXRpb25BaWRlc0V0YXRQcmV0VGl0cmVJSU91TGl2cmVJSUk6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhaWxsZXVyX3RvX2pzb28gKGJhaWxsZXVyIDogQmFpbGxldXIudCkgOiBiYWlsbGV1ciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlQmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX3RvX2pzb28gYmFpbGxldXIudHlwZV9iYWlsbGV1clxuICAgICAgdmFsIHJlc3BlY3RlQ29udmVudGlvblRpdHJlViA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WXG4gICAgICB2YWwgcmVzcGVjdGVDb252ZW50aW9uVGl0cmVJSSA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9JSVxuICAgICAgdmFsIGNvbnN0cnVpdEFtZWxpb3JlQ29uZGl0aW9uc0w4MzExNCA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzRcbiAgICAgIHZhbCBhY3F1aXNpdGlvbkFpZGVzRXRhdFByZXRUaXRyZUlJT3VMaXZyZUlJSSA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIuYWNxdWlzaXRpb25fYWlkZXNfZXRhdF9wcmV0X3RpdHJlX0lJX291X2xpdnJlX0lJSVxuICAgICAgZW5kXG4gIGxldCBiYWlsbGV1cl9vZl9qc29vIChiYWlsbGV1ciA6IGJhaWxsZXVyIEpzLnQpIDogQmFpbGxldXIudCA9XG4gICAge1xuICAgICAgdHlwZV9iYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfb2ZfanNvbyBiYWlsbGV1ciMjLnR5cGVCYWlsbGV1cjtcbiAgICAgIHJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfViA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYmFpbGxldXIjIy5yZXNwZWN0ZUNvbnZlbnRpb25UaXRyZVY7XG4gICAgICByZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJID1cbiAgICAgICAgSnMudG9fYm9vbCBiYWlsbGV1ciMjLnJlc3BlY3RlQ29udmVudGlvblRpdHJlSUk7XG4gICAgICBjb25zdHJ1aXRfYW1lbGlvcmVfY29uZGl0aW9uc19sODMxXzFfNCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYmFpbGxldXIjIy5jb25zdHJ1aXRBbWVsaW9yZUNvbmRpdGlvbnNMODMxMTQ7XG4gICAgICBhY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbCBiYWlsbGV1ciMjLmFjcXVpc2l0aW9uQWlkZXNFdGF0UHJldFRpdHJlSUlPdUxpdnJlSUlJXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmV0X3RvX2pzb28gKHByZXQgOiBQcmV0LnQpIDogcHJldCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlUHJldCA9IHR5cGVfcHJldF90b19qc29vIHByZXQudHlwZV9wcmV0XG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZSA9IGRhdGVfdG9fanNvbyBwcmV0LmRhdGVfc2lnbmF0dXJlXG4gICAgICB2YWwgdGl0dWxhaXJlUHJldCA9IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gcHJldC50aXR1bGFpcmVfcHJldFxuICAgICAgZW5kXG4gIGxldCBwcmV0X29mX2pzb28gKHByZXQgOiBwcmV0IEpzLnQpIDogUHJldC50ID1cbiAgICB7XG4gICAgICB0eXBlX3ByZXQgPSB0eXBlX3ByZXRfb2ZfanNvbyBwcmV0IyMudHlwZVByZXQ7XG4gICAgICBkYXRlX3NpZ25hdHVyZSA9IGRhdGVfb2ZfanNvbyBwcmV0IyMuZGF0ZVNpZ25hdHVyZTtcbiAgICAgIHRpdHVsYWlyZV9wcmV0ID0gdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyBwcmV0IyMudGl0dWxhaXJlUHJldFxuICAgIH1cblxuY2xhc3MgdHlwZSBuZXVmX291X2FuY2llbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5ldWZcIlxuICAgICAgICAtIFwiQW5jaWVuXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyA6IE5ldWZPdUFuY2llbi50IC0+IG5ldWZfb3VfYW5jaWVuIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5ldWYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOZXVmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQW5jaWVuIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQW5jaWVuXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5ldWZfb3VfYW5jaWVuX29mX2pzb28gKG5ldWZfb3VfYW5jaWVuIDogbmV1Zl9vdV9hbmNpZW4gSnMudClcbiAgOiBOZXVmT3VBbmNpZW4udCA9XG4gIG1hdGNoIG5ldWZfb3VfYW5jaWVuIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTmV1ZlwiIC0+IE5ldWZPdUFuY2llbi5OZXVmICgpXG4gIHwgXCJBbmNpZW5cIiAtPlxuICBOZXVmT3VBbmNpZW4uQW5jaWVuIChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuZXVmX291X2FuY2llbiMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmV1Zk91QW5jaWVuLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHRyYW5jaGVfcmV2ZW51ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X3RvX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogVHJhbmNoZVJldmVudS50KVxuICAgIDogdHJhbmNoZV9yZXZlbnUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gdHJhbmNoZV9yZXZlbnUuaGF1dFxuICAgICAgdmFsIGJhcyA9IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCB0cmFuY2hlX3JldmVudS5iYXNcbiAgICAgIHZhbCB0YXV4ID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnUudGF1eFxuICAgICAgZW5kXG4gIGxldCB0cmFuY2hlX3JldmVudV9vZl9qc29vICh0cmFuY2hlX3JldmVudSA6IHRyYW5jaGVfcmV2ZW51IEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51LnQgPVxuICAgIHtcbiAgICAgIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIHRyYW5jaGVfcmV2ZW51IyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFuY2hlX3JldmVudSMjLmJhcztcbiAgICAgIHRhdXggPSBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudSMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBoYXV0OiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyAodHJhbmNoZV9yZXZlbnVfZGVjaW1hbFxuICAgIDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28gdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5oYXV0XG4gICAgICB2YWwgYmFzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5iYXNcbiAgICAgIHZhbCB0YXV4ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvb1xuICAgICh0cmFuY2hlX3JldmVudV9kZWNpbWFsIDogdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCBKcy50KSA6XG4gICAgVHJhbmNoZVJldmVudURlY2ltYWwudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5iYXM7XG4gICAgICB0YXV4ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcmVudGU6IHBhcmVudGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgOiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50KSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnJlc3NvdXJjZXNcbiAgICAgIHZhbCBhc2NlbmRhbnREZXNjZW5kYW50Q29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlXG4gICAgICB2YWwgcGFyZW50ZSA9IHBhcmVudGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5wYXJlbnRlXG4gICAgICB2YWwgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1ID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3VcbiAgICAgIHZhbCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS50aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlXG4gICAgICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgOiBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSBKcy50KSA6XG4gICAgQXV0cmVQZXJzb25uZUFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5kYXRlTmFpc3NhbmNlO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnJlc3NvdXJjZXM7XG4gICAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZVxuICAgICAgICAgICMjLmFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTtcbiAgICAgIHBhcmVudGUgPSBwYXJlbnRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXJlbnRlO1xuICAgICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5pbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2k7XG4gICAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMuYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U7XG4gICAgICB0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlID1cbiAgICAgICAgSnMudG9fYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgICAgLSBcIlBsdXNEZVRyb2lzRW5mYW50c1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X3RvX2pzb29cbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50IC0+IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE1vaW5zRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGx1c0RlVHJvaXNFbmZhbnRzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAoZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICA6IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnQpXG4gIDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCA9XG4gIG1hdGNoIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCIgLT5cbiAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzICgpXG4gIHwgXCJQbHVzRGVUcm9pc0VuZmFudHNcIiAtPlxuICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVkZXZhbmNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY6XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llclxuICAgIDogSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llci50KVxuICAgIDogaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZWRldmFuY2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcbiAgICAgIHZhbCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2ID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XG4gICAgICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIEluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgcmVkZXZhbmNlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIjIy5yZWRldmFuY2U7XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGFnZSA9IGludGVnZXJfdG9faW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFnZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuaWRlbnRpZmlhbnQ7XG4gICAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5hZ2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnByaXNlRW5DaGFyZ2U7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgICAgICMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25HYXJkZUFsdGVybmVlOlxuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9hX2NoYXJnZV90b19qc29vIChlbmZhbnRfYV9jaGFyZ2UgOiBFbmZhbnRBQ2hhcmdlLnQpXG4gICAgOiBlbmZhbnRfYV9jaGFyZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfYV9jaGFyZ2UuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfYV9jaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2FfY2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9hX2NoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgb2JsaWdhdGlvblNjb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYWdlID0gaW50ZWdlcl90b19pbnQgZW5mYW50X2FfY2hhcmdlLmFnZVxuICAgICAgdmFsIHNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUgPVxuICAgICAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9hX2NoYXJnZV9vZl9qc29vIChlbmZhbnRfYV9jaGFyZ2UgOiBlbmZhbnRfYV9jaGFyZ2UgSnMudCkgOlxuICAgIEVuZmFudEFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfYV9jaGFyZ2UjIy5pZGVudGlmaWFudDtcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5iZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50O1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2FfY2hhcmdlIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGRhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudF9hX2NoYXJnZSMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5vYmxpZ2F0aW9uU2NvbGFpcmU7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2FfY2hhcmdlIyMuYWdlO1xuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5zaXR1YXRpb25HYXJkZUFsdGVybmVlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTm9uXCJcbiAgICAgICAgLSBcIk91aVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb29cbiAgOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50IC0+IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfb2ZfanNvb1xuICAobG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgOiBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50KVxuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgPVxuICBtYXRjaCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk5vblwiIC0+IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiAoKVxuICB8IFwiT3VpXCIgLT5cbiAgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGRlbWFuZGV1ciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlRGVtYW5kZXVyOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnRyYXREZVRyYXZhaWw6IHR5cGVfY29udHJhdF90cmF2YWlsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIHZhbCBhZ2VEZW1hbmRldXIgPSBpbnRlZ2VyX3RvX2ludCBkZW1hbmRldXIuYWdlX2RlbWFuZGV1clxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZGVtYW5kZXVyLmRhdGVfbmFpc3NhbmNlXG4gICAgICB2YWwgY29udHJhdERlVHJhdmFpbCA9XG4gICAgICAgIHR5cGVfY29udHJhdF90cmF2YWlsX3RvX2pzb28gZGVtYW5kZXVyLmNvbnRyYXRfZGVfdHJhdmFpbFxuICAgICAgdmFsIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfdG9fanNvbyBkZW1hbmRldXIubmF0aW9uYWxpdGVcbiAgICAgIHZhbCBwYXRyaW1vaW5lID0gcGF0cmltb2luZV90b19qc29vIGRlbWFuZGV1ci5wYXRyaW1vaW5lXG4gICAgICB2YWwgcGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIGVuZFxuICBsZXQgZGVtYW5kZXVyX29mX2pzb28gKGRlbWFuZGV1ciA6IGRlbWFuZGV1ciBKcy50KSA6IERlbWFuZGV1ci50ID1cbiAgICB7XG4gICAgICBzYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlID1cbiAgICAgICAgSnMudG9fYm9vbCBkZW1hbmRldXIjIy5zYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlO1xuICAgICAgYWdlX2RlbWFuZGV1ciA9IGludGVnZXJfb2ZfaW50IGRlbWFuZGV1ciMjLmFnZURlbWFuZGV1cjtcbiAgICAgIGRhdGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGRlbWFuZGV1ciMjLmRhdGVOYWlzc2FuY2U7XG4gICAgICBjb250cmF0X2RlX3RyYXZhaWwgPVxuICAgICAgICB0eXBlX2NvbnRyYXRfdHJhdmFpbF9vZl9qc29vIGRlbWFuZGV1ciMjLmNvbnRyYXREZVRyYXZhaWw7XG4gICAgICBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX29mX2pzb28gZGVtYW5kZXVyIyMubmF0aW9uYWxpdGU7XG4gICAgICBwYXRyaW1vaW5lID0gcGF0cmltb2luZV9vZl9qc29vIGRlbWFuZGV1ciMjLnBhdHJpbW9pbmU7XG4gICAgICBwZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGRlbWFuZGV1ciMjLnBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDaGFuZ2VtZW50XCJcbiAgICAgICAgLSBcIlBhc0RlQ2hhbmdlbWVudFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50IC0+IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENoYW5nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlQ2hhbmdlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAoY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KVxuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNoYW5nZW1lbnRcIiAtPlxuICBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMucGF5bG9hZCkpXG4gIHwgXCJQYXNEZUNoYW5nZW1lbnRcIiAtPiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID1cbiAgb2JqZWN0IG1ldGhvZCBiYWlsbGV1cjogYmFpbGxldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9jYXRpb25fdG9fanNvbyAobG9jYXRpb24gOiBMb2NhdGlvbi50KSA6IGxvY2F0aW9uIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJhaWxsZXVyID0gYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge2JhaWxsZXVyID0gYmFpbGxldXJfb2ZfanNvbyBsb2NhdGlvbiMjLmJhaWxsZXVyXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByb3ByaWV0YWlyZSA9XG4gIG9iamVjdCBtZXRob2QgcHJldDogcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfdG9fanNvbyAocHJvcHJpZXRhaXJlIDogUHJvcHJpZXRhaXJlLnQpXG4gICAgOiBwcm9wcmlldGFpcmUgSnMudCA9IG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBwcmV0ID0gcHJldF90b19qc29vIHByb3ByaWV0YWlyZS5wcmV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfb2ZfanNvbyAocHJvcHJpZXRhaXJlIDogcHJvcHJpZXRhaXJlIEpzLnQpIDpcbiAgICBQcm9wcmlldGFpcmUudCA9IHtwcmV0ID0gcHJldF9vZl9qc29vIHByb3ByaWV0YWlyZSMjLnByZXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTc6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVQcmV0OiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudDogbmV1Zl9vdV9hbmNpZW4gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlUHJpbmNpcGFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9wcmluY2lwYWxlXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldFxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5kYXRlX3NpZ25hdHVyZV9wcmV0XG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5kYXRlX2VudHJlZV9sb2dlbWVudFxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNSA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlID1cbiAgICAgICAgSnMuYm9vbCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXG4gICAgICB2YWwgY29wcm9wcmlldGUgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jb3Byb3ByaWV0ZVxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTcgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xN1xuICAgICAgdmFsIHR5cGVQcmV0ID1cbiAgICAgICAgdHlwZV9wcmV0X3RvX2pzb28gaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlLnR5cGVfcHJldFxuICAgICAgdmFsIGFuY2llbm5ldGVMb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlLmFuY2llbm5ldGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZTtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldDtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXQgPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5kYXRlU2lnbmF0dXJlUHJldDtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50ID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlIyMuZGF0ZUVudHJlZUxvZ2VtZW50O1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMudHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU7XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmU7XG4gICAgICBjb3Byb3ByaWV0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5jb3Byb3ByaWV0ZTtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLnNpdHVhdGlvblI4MjIxMTEzMTc7XG4gICAgICB0eXBlX3ByZXQgPVxuICAgICAgICB0eXBlX3ByZXRfb2ZfanNvb1xuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLnR5cGVQcmV0O1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5hbmNpZW5uZXRlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFbmZhbnRBQ2hhcmdlXCJcbiAgICAgICAgLSBcIkF1dHJlUGVyc29ubmVBQ2hhcmdlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyA6IFBlcnNvbm5lQUNoYXJnZS50IC0+IHBlcnNvbm5lX2FfY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEVuZmFudEFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFbmZhbnRBQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZW5mYW50X2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlUGVyc29ubmVBQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyAocGVyc29ubmVfYV9jaGFyZ2UgOiBwZXJzb25uZV9hX2NoYXJnZSBKcy50KVxuICA6IFBlcnNvbm5lQUNoYXJnZS50ID1cbiAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFbmZhbnRBQ2hhcmdlXCIgLT5cbiAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgKGVuZmFudF9hX2NoYXJnZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHBlcnNvbm5lX2FfY2hhcmdlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGVyc29ubmVBQ2hhcmdlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRFc3RDaGFtYnJlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2xvY2F0aW9uOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZl90b19qc29vXG4gICAgKGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiA6IEluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYudClcbiAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYubG95ZXJfcHJpbmNpcGFsXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlcyA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlXG4gICAgICB2YWwgY29sb2NhdGlvbiA9IEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmNvbG9jYXRpb25cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZVxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjIgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgIDogaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmIEpzLnQpIDpcbiAgICBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYjIy5sb3llclByaW5jaXBhbDtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmUgPVxuICAgICAgICBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmxvZ2VtZW50RXN0Q2hhbWJyZTtcbiAgICAgIGNvbG9jYXRpb24gPSBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgICAgICAjIy5hZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVycztcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZTtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzIgPVxuICAgICAgICBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmxvZ2VtZW50TWV1YmxlRDg0MjI7XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYjIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlVXNlcjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYXRpb246IGxvY2F0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfdG9fanNvbyAobG9nZW1lbnRfZm95ZXIgOiBMb2dlbWVudEZveWVyLnQpXG4gICAgOiBsb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlVXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBsb2dlbWVudF9mb3llci50eXBlX3VzZXJcbiAgICAgIHZhbCBkYXRlQ29udmVudGlvbm5lbWVudCA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBsb2dlbWVudF9mb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnRcbiAgICAgIHZhbCBsb2NhdGlvbiA9IGxvY2F0aW9uX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIubG9jYXRpb25cbiAgICAgIHZhbCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcbiAgICAgIHZhbCBjb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSVxuICAgICAgZW5kXG4gIGxldCBsb2dlbWVudF9mb3llcl9vZl9qc29vIChsb2dlbWVudF9mb3llciA6IGxvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBMb2dlbWVudEZveWVyLnQgPVxuICAgIHtcbiAgICAgIHR5cGVfdXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyBsb2dlbWVudF9mb3llciMjLnR5cGVVc2VyO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50ID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGxvZ2VtZW50X2ZveWVyIyMuZGF0ZUNvbnZlbnRpb25uZW1lbnQ7XG4gICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy5sb2NhdGlvbjtcbiAgICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLnJlbXBsaXRDb25kaXRpb25zUjgzMjIxO1xuICAgICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSVxuICAgIH1cblxuY2xhc3MgdHlwZSBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiSW5mb3NMb2NhdGlmXCJcbiAgICAgICAgLSBcIkluZm9zTG9nZW1lbnRGb3llclwiXG4gICAgICAgIC0gXCJJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfdG9fanNvb1xuICA6IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50IC0+IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgSW5mb3NMb2NhdGlmIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5mb3NMb2NhdGlmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZvc0xvZ2VtZW50Rm95ZXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZvc0xvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9XG4gIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJJbmZvc0xvY2F0aWZcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZvc0xvZ2VtZW50Rm95ZXJcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGVcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgKGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0luZm9ybWF0aW9uc0NhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RBbmNpZW5MODMxMjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmU6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvZ2VtZW50X3RvX2pzb28gKGxvZ2VtZW50IDogTG9nZW1lbnQudCkgOiBsb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNpZGVuY2VQcmluY2lwYWxlID0gSnMuYm9vbCBsb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZVxuICAgICAgdmFsIGVzdEVocGFkT3VNYWlzb25BdXRvbm9taWVMMzEzMTJBc2YgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50LmVzdF9laHBhZF9vdV9tYWlzb25fYXV0b25vbWllX2wzMTNfMTJfYXNmXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb24gPSBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBsb2dlbWVudC5tb2RlX29jY3VwYXRpb25cbiAgICAgIHZhbCBwcm9wcmlldGFpcmUgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC5wcm9wcmlldGFpcmVcbiAgICAgIHZhbCBsb3VlT3VTb3VzTG91ZUFEZXNUaWVycyA9XG4gICAgICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb28gbG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICAgIHZhbCB1c3VmcnVpdCA9IHBhcmVudF9vdV9hdXRyZV90b19qc29vIGxvZ2VtZW50LnVzdWZydWl0XG4gICAgICB2YWwgbG9nZW1lbnREZWNlbnRMODk0NjIgPSBKcy5ib29sIGxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyXG4gICAgICB2YWwgc3VyZmFjZU1DYXJyZXMgPSBpbnRlZ2VyX3RvX2ludCBsb2dlbWVudC5zdXJmYWNlX21fY2FycmVzXG4gICAgICB2YWwgZXN0QW5jaWVuTDgzMTIgPSBKcy5ib29sIGxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yXG4gICAgICB2YWwgc2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTIgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50LnNpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMlxuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICBlc3RfYW5jaWVuX2w4MzFfMiA9IEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RBbmNpZW5MODMxMjtcbiAgICAgIHNpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5zaXR1ZUNvbW11bmVEZXNlcXVpbGlicmVMODMxMjtcbiAgICAgIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGxvZ2VtZW50IyMuem9uZVxuICAgIH1cblxuY2xhc3MgdHlwZSBtZW5hZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcHJlc3RhdGlvbnNSZWN1ZXM6XG4gICAgICBwcmVzdGF0aW9uX3JlY3VlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50OiBsb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVzQUNoYXJnZTpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZUF1dHJlc09jY3VwYW50c0xvZ2VtZW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGU6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZUVuZmFudHNBTmFpdHJlQXByZXNUcm9pc2llbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXM6XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2VcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXMgPVxuICAgICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF90b19qc29vIG1lbmFnZS5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1c1xuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBtZW5hZ2UjIy5ub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTtcbiAgICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICBKcy50b19ib29sIG1lbmFnZSMjLmVuZmFudEFOYWl0cmVBcHJlc1F1YXRyaWVtZU1vaXNHcm9zc2Vzc2U7XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyA9XG4gICAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBtZW5hZ2UjIy5kYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVPdXQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yUjgyMzRPdXQ6XG4gICAgICAocGVyc29ubmVfYV9jaGFyZ2UgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZU91dCA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQuZGF0ZV9jb3VyYW50ZV9vdXRcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0LmVsaWdpYmlsaXRlX291dFxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0T3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQuY29uZGl0aW9uXzJfcjgyM180X291dCAocGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX291dCA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCMjLmRhdGVDb3VyYW50ZU91dDtcbiAgICAgIGVsaWdpYmlsaXRlX291dCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQjIy5lbGlnaWJpbGl0ZU91dDtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQ7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzRfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl8yX3I4MjNfNF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRTdXJmYWNlSW46XG4gICAgICAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luICggaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVPdXQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlT3V0ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQuZGF0ZV9jb3VyYW50ZV9vdXRcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dC5lbGlnaWJpbGl0ZV9vdXRcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGVPdXQgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXRcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0ID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX291dCA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQjIy5kYXRlQ291cmFudGVPdXQ7XG4gICAgICBlbGlnaWJpbGl0ZV9vdXQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCMjLmVsaWdpYmlsaXRlT3V0O1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tZW5hZ2VJbjtcbiAgICAgIGRlbWFuZGV1cl9pbiA9XG4gICAgICAgIGRlbWFuZGV1cl9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQ6XG4gICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGVPdXQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X291dF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQgPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQuZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dFxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dCA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQ7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb25zQ2FsY3VsSW46XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgaW5mb3JtYXRpb25zQ2FsY3VsSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudE91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRPdXQudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudFByaW1lRGVtZW5hZ2VtZW50T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X291dCMjLm1vbnRhbnRQcmltZURlbWVuYWdlbWVudE91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUVtbWVuYWdlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlRW1tZW5hZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRhdGVfZW1tZW5hZ2VtZW50X2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUVtbWVuYWdlbWVudEluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGVwZW5zZXNKdXN0aWZpZWVzUmVlbGxlbWVudEVuZ2FnZWVzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLnJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNEZW1hbmRldXJJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzQ29uam9pbnRJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZXNWaXZhbnRIYWJpdHVlbGxlbWVudEZveWVySW46XG4gICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uam9pbnRFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZXNBQ2hhcmdlSW46XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluOlxuICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzc291cmNlc0RlbWFuZGV1ckluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19kZW1hbmRldXJfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzQ29uam9pbnRJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfY29uam9pbnRfaW5cbiAgICAgIHZhbCBwZXJzb25uZXNWaXZhbnRIYWJpdHVlbGxlbWVudEZveWVySW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW5cbiAgICAgIHZhbCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIHBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyB4KSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnBlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluID1cbiAgICAgICAgSnMuYm9vbCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luID1cbiAgICAgICAgSnMuYm9vbCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luXG4gICAgICB2YWwgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pblxuICAgICAgdmFsIHBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbiA9XG4gICAgICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cbiAgICAgIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfZGVtYW5kZXVyX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzRGVtYW5kZXVySW47XG4gICAgICByZXNzb3VyY2VzX2NvbmpvaW50X2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzQ29uam9pbnRJbjtcbiAgICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjtcbiAgICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluO1xuICAgICAgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuY29uam9pbnRFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluO1xuICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW47XG4gICAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjtcbiAgICAgIGRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluO1xuICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbiA9XG4gICAgICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5wYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50T3V0OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50KVxuICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgbW9udGFudE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5tb250YW50X291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0XG4gICAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTZPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjJPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNk91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dFxuICAgICAgdmFsIHBsYWZvbmRMb3llckQ4MjMxNjJPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXRcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dFxuICAgICAgdmFsIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0XG4gICAgICB2YWwgcGFydGljaXBhdGlvblBlcnNvbm5lbGxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTZPdXQ7XG4gICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLnBsYWZvbmRMb3llckQ4MjMxNjJPdXQ7XG4gICAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICAgICAgIyMucGFydGljaXBhdGlvbk1pbmltYWxlT3V0O1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICAgICAgIyMudGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlT3V0O1xuICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLnBhcnRpY2lwYXRpb25QZXJzb25uZWxsZU91dDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXRcbiAgICAgICAgICAjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnpvbmVfaW5cbiAgICAgIHZhbCBsb2dlbWVudEVzdENoYW1icmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4udHlwZV9haWRlX2luXG4gICAgICB2YWwgY29sb2NhdGlvbkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uY29sb2NhdGlvbl9pblxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0LnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dC5tb250YW50X291dFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCMjLm1vbnRhbnRPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dFxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llck91dC50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dCMjLm5Ob21icmVQYXJ0c0Q4MzIyNU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UkQ4MzIyNU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjVTZXVpbE91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXRcbiAgICAgIHZhbCBjb2VmZmljaWVudFJEODMyMjVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dFxuICAgICAgdmFsIG5Ob21icmVQYXJ0c0Q4MzIyNU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dFxuICAgICAgdmFsIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXRcbiAgICAgIHZhbCBlcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0XG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1U2V1aWxPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXRcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgICAgICMjLmNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQ7XG4gICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2llbnRSRDgzMjI1T3V0O1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMubk5vbWJyZVBhcnRzRDgzMjI1T3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0O1xuICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXRcbiAgICAgICAgICAjIy5wbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuZXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0O1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNVNldWlsT3V0O1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogKHVuaXQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlZGV2YW5jZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gKCBpbnB1dCkpKVxuICAgICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luICggaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fMl9kdV84MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIxMU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMTFPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0XG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IyMubk5vbWJyZVBhcnRzRDgzMjExT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVFbGlnaWJsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlTWluaW1hbGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwU2V1aWxPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZUVsaWdpYmxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQubWVuc3VhbGl0ZV9lbGlnaWJsZV9vdXRcbiAgICAgIHZhbCBtZW5zdWFsaXRlTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5tZW5zdWFsaXRlX21pbmltYWxlX291dFxuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMFNldWlsT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICAgICAgICAjIy5tZW5zdWFsaXRlRWxpZ2libGVPdXQ7XG4gICAgICBtZW5zdWFsaXRlX21pbmltYWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlT3V0O1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwU2V1aWxPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGVPdXQ7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEluOlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVTaWduYXR1cmVQcmV0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlUHJldEluOiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudEluOiBuZXVmX291X2FuY2llbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW5cbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY29wcm9wcmlldGVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxN0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgdHlwZVByZXRJbiA9XG4gICAgICAgIHR5cGVfcHJldF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3ByZXRfaW5cbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnRJbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmFuY2llbm5ldGVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuY29wcm9wcmlldGVJbjtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuem9uZUluO1xuICAgICAgdHlwZV9wcmV0X2luID1cbiAgICAgICAgdHlwZV9wcmV0X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlUHJldEluO1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5hbmNpZW5uZXRlTG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uc0NhbGN1bEluOlxuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBpbmZvcm1hdGlvbnNDYWxjdWxJbiA9XG4gICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmluZm9ybWF0aW9uc19jYWxjdWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dF9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0IyMuYWlkZUZpbmFsZUZvcm11bGVPdXQ7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNEluOlxuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG95ZXJfcHJpbmNpcGFsX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi56b25lX2luXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIGNvbG9jYXRpb25JbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjJJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCA9XG4gICAge1xuICAgICAgbG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy56b25lSW47XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG9nZW1lbnRFc3RDaGFtYnJlSW47XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy50eXBlQWlkZUluO1xuICAgICAgY29sb2NhdGlvbl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVJbjtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50TWV1YmxlRDg0MjJJbjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgICAgICAgICMjLmFpZGVGaW5hbGVGb3JtdWxlT3V0O1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTdJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0SW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pblxuICAgICAgdmFsIGNvcHJvcHJpZXRlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmNvcHJvcHJpZXRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llck91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQuZXF1aXZhbGVuY2VfbG95ZXJfb3V0XG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc091dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dFxuICAgICAgdmFsIGxveWVyTWluaW1hbE91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQubG95ZXJfbWluaW1hbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU1vbnRhbnRNaW5pbWFsT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dCA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0IyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlT3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCMjLmVxdWl2YWxlbmNlTG95ZXJPdXQ7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNPdXQ7XG4gICAgICBsb3llcl9taW5pbWFsX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQjIy5sb3llck1pbmltYWxPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbjpcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICByZWRldmFuY2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLmNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb28gKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNDYWxjdWxJbjpcbiAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fdG9fanNvbyAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGluZm9ybWF0aW9uc0NhbGN1bEluID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmluZm9ybWF0aW9uc19jYWxjdWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zQ2FsY3VsSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMudHlwZUFpZGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdE91dDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0X3RvX2pzb28gKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0XG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0T3V0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dC5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0X291dFxuICAgICAgZW5kXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dF9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0IDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgSnMudCkgOlxuICAgIE91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIGFnZV9vdXZlcnR1cmVfZHJvaXRfb3V0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCMjLmFnZU91dmVydHVyZURyb2l0T3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVOYWlzc2FuY2VBc3N1cmVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUFzc3VyZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luXG4gICAgICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fb2ZfanNvb1xuICAgIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KSA6XG4gICAgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiMjLmRhdGVOYWlzc2FuY2VBc3N1cmVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb3V0XG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRPdXQudCkgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQubW9udGFudF9pbXBheWVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50T3V0LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfaW1wYXllX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQjIy5tb250YW50SW1wYXllT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZVZlcnNlZUluOiB2ZXJzZW1lbnRfYSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudEFwbEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRDaGFyZ2VzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVwZW5zZUxvZ2VtZW50SW46IGRlcGVuc2VfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnREZXR0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICA6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGFpZGVWZXJzZWVJbiA9XG4gICAgICAgIHZlcnNlbWVudF9hX3RvX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uYWlkZV92ZXJzZWVfaW5cbiAgICAgIHZhbCBtb250YW50QXBsSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9hcGxfaW5cbiAgICAgIHZhbCBtb250YW50Q2hhcmdlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfY2hhcmdlc19pblxuICAgICAgdmFsIGRlcGVuc2VMb2dlbWVudEluID1cbiAgICAgICAgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmRlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBtb250YW50RGV0dGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2RldHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgYWlkZV92ZXJzZWVfaW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuYWlkZVZlcnNlZUluO1xuICAgICAgbW9udGFudF9hcGxfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50QXBsSW47XG4gICAgICBtb250YW50X2NoYXJnZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50Q2hhcmdlc0luO1xuICAgICAgZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuZGVwZW5zZUxvZ2VtZW50SW47XG4gICAgICBtb250YW50X2RldHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudERldHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0OlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudClcbiAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVsaWdpYmlsaXRlT3V0ID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dC5lbGlnaWJpbGl0ZV9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dFxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZV9vdXQgPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0IyMuZWxpZ2liaWxpdGVPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCMjLmFpZGVGaW5hbGVGb3JtdWxlT3V0O1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uc0NhbGN1bEluOlxuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9IG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGluZm9ybWF0aW9uc0NhbGN1bEluID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPSBtZW5hZ2Vfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZU91dDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRcbiAgICA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQuZWxpZ2liaWxpdGVfb3V0XG4gICAgICB2YWwgYWlkZUZpbmFsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dC5haWRlX2ZpbmFsZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dFxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGVfb3V0ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0IyMuZWxpZ2liaWxpdGVPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQjIy5haWRlRmluYWxlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb25zQ2FsY3VsSW46XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgaW5mb3JtYXRpb25zQ2FsY3VsSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMuaW5mb3JtYXRpb25zQ2FsY3VsSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0Lm1vbnRhbnRfb3V0XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5tb250YW50T3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19vdXQgPVxuICBvYmplY3QgbWV0aG9kIGJydXRIb3JhaXJlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19vdXRfdG9fanNvbyAoc21pY19vdXQgOiBTbWljT3V0LnQpIDogc21pY19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYnJ1dEhvcmFpcmVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgc21pY19vdXQuYnJ1dF9ob3JhaXJlX291dFxuICAgICAgZW5kXG4gIGxldCBzbWljX291dF9vZl9qc29vIChzbWljX291dCA6IHNtaWNfb3V0IEpzLnQpIDogU21pY091dC50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHNtaWNfb3V0IyMuYnJ1dEhvcmFpcmVPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0T3V0OlxuICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZU91dDpcbiAgICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExT3V0OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuZHJvaXRfb3V2ZXJ0X291dCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dC5jb25kaXRpb25zX2hvcnNfYWdlX291dCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMk91dCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0LmFnZV9sNTEyXzNfMl9vdXRcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExT3V0ID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dC5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dFxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgZHJvaXRfb3V2ZXJ0X291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnRfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb25kaXRpb25zX2hvcnNfYWdlX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25zX2hvcnNfYWdlX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yX291dCA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMuYWdlTDUxMjMyT3V0O1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMucmVnaW1lT3V0cmVNZXJMNzUxMU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudClcbiAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCA9XG4gIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dF90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X3RvX2pzb29cblxuXG5sZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudClcbiAgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCBKcy50ID1cbiAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX29mX2pzb29cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dF90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pblxuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWNfb3V0IEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuXG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQgSnMudCA9XG4gIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFpZGVzTG9nZW1lbnRMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA6IChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyIDogKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBvdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA6IChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGltcGF5ZURlcGVuc2VMb2dlbWVudCA6IChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50IC0+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgc21pY1xuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrXG4gICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCByZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmIDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50IDogKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50IDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUgOiAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiBKcy50IC0+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICBcbiAgICBlbmQpIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZW5jaCBsYXcgbGlicmFyeSwgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3JcbiAgIGNvbXB1dGluZyBGcmVuY2ggdGF4ZXMgYW5kIGJlbmVmaXRzIGRlcml2ZWQgZnJvbSBDYXRhbGEgcHJvZ3JhbXMuIENvcHlyaWdodFxuICAgKEMpIDIwMjEgSW5yaWEsIGNvbnRyaWJ1dG9yOiBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZVxuICAgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBMYXdfc291cmNlXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5tb2R1bGUgQUYgPSBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5tb2R1bGUgQUZfd2ViID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViXG5tb2R1bGUgQUwgPSBBaWRlc19sb2dlbWVudFxubW9kdWxlIEFMX3dlYiA9IEFpZGVzX2xvZ2VtZW50X2FwaV93ZWJcblxubGV0IF8gPVxuICBKcy5leHBvcnRfYWxsXG4gICAgKG9iamVjdCVqc1xuICAgICAgIHZhbCBldmVudHNNYW5hZ2VyID0gZXZlbnRfbWFuYWdlclxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcbiAgICAgICAgICAgOiAoQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+IGZsb2F0KSBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAgICAgICAgICB8PiBBRl93ZWIuaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuaU1vbnRhbnRWZXJzZU91dCkpXG5cbiAgICAgICBtZXRob2QgY29tcHV0ZUFpZGVzQXVMb2dlbWVudFxuICAgICAgICAgICA6IChBTF93ZWIuY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPiBmbG9hdClcbiAgICAgICAgICAgICBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPlxuICAgICAgICAgICAgIGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuYWlkZUZpbmFsZU91dCkpXG4gICAgZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= \ No newline at end of file +(function(a){typeof +globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurable:true,get:b}),_T_));function +b(){var +b=this||self;b.globalThis=b;delete +a.prototype._T_}}(Object));(function(aO){"use strict";var +bOF=aO,bOI=typeof +module==="object"&&module.exports||aO,io=1066,IJ="38527",II=424,s8=1650,i6=857,cG="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",nL="logement_foyer",ek=319,tE=1110,EO="Article L521-1",AV=794,kt="Paragraphe 2 : Ouverture du droit et liquidation.",AU=43200.,ox=365180284,AT="Changement",Mw="26714",i5=635,AS="EMFILE",IH="locatif.date_courante",pN=163,pM="SaintMartin",IG="1015",pL=891,ey="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AQ=4865,AR=4458,cQ="Article 1",IF="559500",fS="aide_finale_formule",dl=122,IE="35630",EN=992015837,ss="Article 31",e1="50",ID=2915,be="Unexpected '",IC=299,hn=181,IB="EACCES",AP=3862,EL=305,EM=862,s7="Article 19",cH=128,j1="Avant",EK="43000",s6="identifiant",pK="Oui",AN=2387,AO=459,s5="Article D832-26",mL=573,gU=146,mK=">",gA=575,EJ=941,i3=153,i4=731,Mv=1027,IA="EINPROGRESS",gT=1053,pJ="Article 17",aJ="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",ff="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",nK="baseMensuelleAllocationsFamiliales",Iz=933,Mu="logement_foyer.mode_occupation",AM="35762",pI=739,t="Calcul du montant de l'allocation logement",EI=358,ec=2011,r5=2023,EH=3331,Mt=462,h8="Article L841-1",EG=1183,ow=583,s4="ServicesSociauxAllocationVerseeALaFamille",AJ="186000",AK=796,AL="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AH=999,AI="16.25",AF="0.0315",AG=4379,fK="traitement_aide_finale_diminu\xc3\xa9",Ms=989,Iy=1118,Mr="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",mJ=720,Ix="40758",EF=5025,pH="e",hm=313,iJ=896,Mq=692,h7="Autre",AE="locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s",im=395,Iw=798,AD=1150,EE="Article L822-2",eb=392,ED=4178,gz="smic",ov=980,AC="39445",Iv=1071,dn="Article D842-6",Iu=1628,AB=-43,It="Neuf",Mp="EROFS",gp=485,Mn="Article 27",Mo="inf",EC="calculetteAidesAuLogementGardeAlternee",Is="EPIPE",mI=394,EB="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",Mm="41392",kb=111,AA=929,EA="Location",ah=709,Iq=4862,Ir="240400",Az="ENOLCK",tD="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",Ez="33500",ks="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",ao="Article D823-9",i2=393,ag="traitement_aide_finale_minoration_forfaitaire",Ay="ERANGE",Ip="AM",r4="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",Ml="infinity",Mk=4072,h6="2.5",Aw="locatif.loyer_principal",Ax=1114,eB="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",s3=278,Au=3194,Av="90100",Ey=2598,fb=318,ex="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Ex=2615,At="\\t",Mj=4008,Ew=955,Mi=1011,aT="examples/aides_logement/code_construction_legislatif.catala_fr",ej=391,s2=330,Ev=1542,aS="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",Mh=1537,kK=112,s1=831,iI="1000",Io=1131,mH=563,Et=2252,Eu=701,dX="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",Es="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",i1=599,As=1146,In=1638,Mg=3621,Ar="Couple",mG="SaintPierreEtMiquelon",Mf="ESOCKTNOSUPPORT",cF="PrestationsFamiliales",Er="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",iH=110,Me=464,Im=1103,Md="214700",Aq=352,go=615,ei="Calcul\xc3\x89quivalenceLoyerMinimale",Ap=1488,Mc="42926",Mb="Autres",r3=-32,mF=889,Il="39016",iG=632,s0=847,pG="AllocationLogementFamiliale",Ma=3718,ew=1023,L$="interfaceAllocationsFamiliales",Ao=1616,il=1076,mE="AllocationLogementSociale",ev=323,r2=1862,An=1487,Am="plafond_l512_3_2",bt=117,sZ="Chapitre II : Des contributions pour le remboursement de la dette sociale.",a5="examples/allocations_familiales/decrets_divers.catala_fr",ka="compl\xc3\xa9ment_d\xc3\xa9gressif",ou=348,r1="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",Eq="accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9",L9="240200",L_="Assert_failure",tC="Section 1 : Secteur locatif ordinaire",L8="568400",Al=3955,L7=496,tB="0.32",Ik="40961",kJ="Non",Ak="ENOTCONN",Ij=1664,kI="Article R824-2",Ii=1128,L6=1e14,Aj="D331_76_1",nJ="Article R521-3",Ai=3400,Ep=935,bS=2022,Eo="Fatal error: exception %s\n",L5="34865",Em=865,En=1623,sY="261800",El=1429,os=740,ot=349,or=725,mD="Article 2",kH=146097,dC=256,mC=558,Ah="Article L521-3",Ek="Article R822-1",mB=874,Ag="45064",Ei=4983,gy=614,Ej="taux_francs_vers_euros",cp="Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires",Af="ENOSPC",fR="abattement_d\xc3\xa9pense_nette_minimale_d832_10",Eh=699,L4="mensualit\xc3\xa9_\xc3\xa9ligible",oq="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",i0=440,pF="ENOENT",L3=1395,Eg=3265,Ad="0.0006",Ae=315,r0="EnfantLePlus\xc3\x82g\xc3\xa9",Ih=259,Ac=751,L1=437,L2="EOVERFLOW",nI=885,b3="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",Ig=1012,If="228000",tA="ENOTEMPTY",Ee="Article 13",Ef="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",L0=4719,Ed="35947",Ie="D331_59_8",LZ="Loyer",Id=162,pE=564,Eb=3583,Ec=1496,Ib=1724,Ic="brut_horaire",nH=647,Ea="x",Ia=1187,Ab="Sous-section 1 : Aides personnelles au logement",j$=335,LY="calculAidePersonnaliseeLogementAccessionPropriete",gn=547,j0="Article D755-5",a3=588,LX=4166,LW="Article D842-4",LV=791,sr="%d",LU=4218,D$="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",iF=637,fQ=1900,mA=285,H$="buffer.ml",gx=708,d="Prologue : aides au logement",z="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",Aa=1624,D_=1559,LT=4785,D8="39590",D9="accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat",H_="ENOBUFS",D7=3557,op=527,nG=113,z$=1478,hl=2008,H9="0.0179",mz=1089,gw=1051,D6=908,j_=1173,z_=3446,pD=681,z9=3838,H7="245700",H8=1474,B="Prologue",LS=760,pC=451,my="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",D5="Metropole",cA=100,c8=1021,kG="prise_en_compte_personne_\xc3\xa0_charge",z7=4243,z8=702,ak="3",bd="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",z6=230,H6=1614,LR=413,pB="169.",eU=0.5,z5=790,c$="Article D521-1",iZ=622,nF=399,z4=3879,pA=965,nE="Article D842-11",ea="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",bc=107,H5=381,pz=571,z3=345,oo="Article D842-12",rZ=937,nD="prestations_familiales",LQ=690,kF="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",H4="26440",LP=2646,gm=590,mx=649,H3=4505,LO="201700",kE="Unix.Unix_error",H2=1139,D4="calculAidePersonnaliseeLogement",mv=4278,mw=1088,gI=347,z2="Stack_overflow",bH=767,fB="condition_2_r823_4",bF="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aW="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",LN=1008,mu=585,H1="/static/",H0=3628,on=253,z0=368,z1=894,D3="Not_found",zZ=235,rY="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",HZ="1085",LM=1490,zY="41268",D2="calcul_apl_logement_foyer.date_courante",bp="examples/allocations_familiales/epilogue.catala_fr",tz=695,D1=1607,nC="Mayotte",cm=848054398,LL="smic.date_courante",HY=4022,HX=2247,nB="1224",D0="calcul_apl_locatif",LK="accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17",cl="calcul_plafond_mensualit\xc3\xa9_d832_10_3",jZ=979,h5=1049,rX="rmdir",DZ=696,nA=1069,LJ=32752,sq="19100",HW="33623",LI="ELOOP",HV="37478",gS="calcul_nombre_parts",nz=280,sp="Article R842-5",ty="Article 23",h4=1026,ny=149,al="montant",eA="Article L521-2",b0="examples/allocations_familiales/../smic/smic.catala_fr",zW="calculAllocationLogementLocatif",zX="false",HU="37906",py="Invalid integer: ",HT="PasDeChangement",bN="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",ik=875,bo=106,LH=346,mt=186,d8=0x80,so="Fatal error: exception ",iE=663,gR="Chapitre 1er : Dispositions relatives aux prestations",sX="\xc3\xa2ge",px="\xc3\xa9ligibilit\xc3\xa9_commune",sn="0.0234",DY="43378",HS=3538,DX=1926,LF="25978",LG=3208,om="src/calendar_builder.ml",pw=493,LE="Section 2 : R\xc3\xa8gles de non-cumul",HR=4895,LD="_",nx=833,HQ="eligibilitePrimeDeDemenagement",sW="compare: functional value",cw="0.",gH=444,zU="40928",zV="19300",h3=529348384,LC=1564,kD=721,jY=978,zT="197700",zS="Invalid_argument",ij=656,DW="EndCall([ ",kr=823,nw="0.9",sm="prise_en_charge",LB="Article R822-22",HP="calcul_aide_personnalis\xc3\xa9e_logement",LA=1191,zR=249,DU="34301",DV="577500",zQ="%ni",zP=949,gv=324,DT=1465,bV=86400.,ar=2020,Lz="PersonneSeule",DS="ENOMEM",DR=-45,kC=559,HO="0.0238",Lx="Article 9",Ly="225100",HN=1610,Lw="AutresPersonnes",gQ="6",zO="EPROTONOSUPPORT",ol=602,HL="173600",HM=858,p="0",aV="Section 3 : Logements-foyers",zN="ENETRESET",zM=3149,Lv="EINVAL",Lu="EDOM",c="examples/aides_logement/prologue.catala_fr",sV="Article L161-17-2",Lt="EFBIG",DQ=2410,Ls="eligibiliteAidesPersonnelleLogement",zL=4198,bl=248,zK="PlusDeTroisEnfants",fa=341,pv=651,HK=1510,iY=2007,tx="208200",zI="Zone1",zJ="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",HH="Locataire",HI="37457",HJ=301,Lr="562800",HG="535744",zH="235800",DP="resetLog",X="AllocationsFamiliales",HF="\xc3\xa2ge_l512_3_2",Lq=3268,zG="situation_familiale_calcul_apl",rW="GardeAlterneeAllocataireUnique",HE=1880,pu=1025,zF=2782,DO="haut",HD=1644,HC=1476,sU=1107,kq=1024,Lp=1143,zD="204761",zE="3.1",nv=726,Lo=802,e$=133,Ln="35780",zC="calculAidePersonnaliseeLogementFoyer",iD=636,pt=567,ms=982,Lm=184,zB=2613,sT=366,fJ=0xffffff,Ll="34829",cg=1082,mq=524,mr="locatif",nu="Titre III: Titre III : Dispositions communes relatives au financement",DM="36378",as="Calculette globale",DN="EISCONN",HB=2567,Lk="::z",zA=1670,HA=1416,ok=1091,iX=435,kp=671,kB="Article R824-1",dj=1994,zz=465,dB=2010,bQ="Prologue : prestations familiales",zy=1531,sl=2147483647,DL=4513,Li="774",Lj=208,DK=689,zx=", characters ",DI=4924,DJ=757,Lh=0x7F,Hy=4289,Hz="180100",gP="BaseMensuelleAllocationsFamiliales",DH="819",sS="4999",Hx="prestations_familiales.r\xc3\xa9sidence",bs="Chapitre IV : Calcul des allocations de logement en secteur accession",Hw="AllocationJournali\xc3\xa8rePresenceParentale",DG="ESHUTDOWN",Hv=".0",Lg="36733",zw=1665,rV="AllocationFamilialesAvril2008",eT=328,DF=693,DD=855,DE="AllocationRentreeScolaire",zv="mensualit\xc3\xa9_minimale",kA="2.",zu=691,Hu=2589,zt="Concubins",gG=578,co="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",zs=4901,DC=4911,Lf=224,zq=816,zr="SaintBarth\xc3\xa9lemy",rU=357,am="Partie l\xc3\xa9gislative",gl=2003,bw="examples/allocations_familiales/securite_sociale_D.catala_fr",Hs=4107,ko="Article R823-4",Ht="32956",DB=1504,Hr="294500",DA=1612,sR="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",d$="RessourcesAidesPersonnelleLogement",Hq=2868,iC=140,gO="Montant des plafonds de ressources",bx="Annexe",gu="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Le="3524",Dz=2362,Hp="Article D832-27",ps=723,Dy=1101,sQ=3763,jX="500",Ho="Zone3",Ld="locatif.type_aide",mp=187,pr=770,zp="40144",nt=581,eh=2015,fE="prise_en_compte",Dx=3985,zo=838,fI=613,sk="223900",hr=718,zn="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",pq=138,ns=1998,w="Livre VIII : Aides personnelles au logement",Hn="225500",mo=905,kn="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",Dv="38892",Dw="accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale",sP="nan",Hm="calculNombrePartLogementFoyer",gF=646,kz="Impay\xc3\xa9D\xc3\xa9penseLogement",Lc=1403,jW=712,bv="Calculette avec garde altern\xc3\xa9e",Hl="ECHILD",Lb=0xdfff,zm=2148,eS="/",iB="4.3",Hk="ETOOMANYREFS",jV=756,oj=1017,Hj=951,Du=1179,pp="ENOTDIR",zl="ETIMEDOUT",tw=1073741823,Dt="135000",Ds="0.0068",Hi="\\r",zk="34600",nr=560,Dr=154,La="calcul_allocation_logement",po=513,zi="coefficient_prise_en_charge",cv=1085,zj=206,Dq="src/time_Zone.ml",Hh=4045,j9="Article D161-2-1-9",Dp=674,zh="EWOULDBLOCK",nq="Guyane",np="PasDeTravaux",Do=4697,gt=311,km=883,iA=255,zg=4439,K$=3250,K_="Revenu",dk="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",bU="droit_ouvert_majoration",D="Partie r\xc3\xa9glementaire",Dn=2268,Dm="Sous-section 4 : Prise en compte du patrimoine",j="D\xc3\xa9clarations des champs d'application",Hg="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Hf="End_of_file",K9="calcul_apl_logement_foyer.condition_2_du_832_25",fA="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",He="calculAllocationLogementFoyer",fH="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",pn="Article 24",sO="Failure",K8="267871",iW=662,zf=1480,oi=771,K7=4892,mn=218,Hd="167800",tv=247,a6="CalculetteAidesAuLogement",iz=664,Dl="ENETDOWN",jU=684,iy=715,sN="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",Hc=0xdc00,ze="389618",Hb=1494,pm="3.",K6=4844,Dk=3225,Ha=1473,zd="185800",K5="0.0201",iV=880,K4="Sys_error",pl=130,no=275,gE="Article D521-2",zc=1630,fD=60.,tu="nombre_personnes_\xc3\xa0_charge_prises_en_compte",gk="Sous-section 4 : Assurance vieillesse",Dj="Printexc.handle_uncaught_exception",eR="Article D832-24",sj="30500",pk=618,e_=1079,zb=1580,mm="int_of_string",G_="194810",G$=3822,za="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",Di="Article 37",V="examples/aides_logement/arrete_2019-09-27.catala_fr",y$="39340",y_=":z",G9="name",pj=103,y9=1122,nn=966,G8=4795,aP="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",G7="DateDeNaissance",Dh=792,G6=1622,bT="traitement_aide_finale_redevance",Dg=132,Dd="1.4",De=698,Df=803,G5=" ])",rT="31797",G4="19484",y8=354,gj=432,gi=325,dA="Article 7",Dc="ENODEV",K3="%Li",G3=864,G2=3610,y6=4120,y7=2771,Db=1014,oh=591,rS="r\xc3\xa9muneration_mensuelle",G1=1936,og=960,d7="Article 14",G0="34570",sM="date_de_naissance",pi=1090,Da=795,of="base_mensuelle_allocations_familiales",K2="MoinsDeTroisEnfants",dc=344,oe="_z",iT=2000,iU=1951,K1="locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers",od=762,GZ=860,ph=738,K0=593,nm=136,db="Titre IV : Allocations de logement",y5=5034,nl=959,e0=137,ez="InterfaceAllocationsFamiliales",GY="retrieveRawEvents",C$=3437,y4=985,y3=1681,C_=4078,jT="Pendant",y2="%a",GX=32044,fG=", ",fz="5422",dE=2018,C9="17012",nk="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",y1="AllocationJournalierePresenceParentale",yZ=3921,y0=4891,nj=579,ky=710,b9="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",C8="' kind for the enumeration 'ElementPrestationsFamiliales.t'",ml=682,bE="Prestations familiales",GW=467,KZ="src/date.ml",C5="Enfant\xc3\x80Charge",C6="calculette",C7="GardeAltern\xc3\xa9eAllocataireUnique",e9="Article D823-16",C4="172500",yY=410,C3=1109,KX=754,KY="EADDRINUSE",KW="n_nombre_parts_d832_25",yX="ENOSYS",tt="Apres",yW="locatif.zone",mk=1929,yV=4156,hh=359,bO="examples/aides_logement/../prestations_familiales/prologue.catala_fr",kx=887,KV=408,yU=258,C2="179800",fP=" ",yT=361,N="Secteur locatif",C1="Undefined_recursive_module",KU=1619,O="output",pg=1074,mj="accession_propri\xc3\xa9t\xc3\xa9",yS=1194,GV=1193,mi=884,KT="base_mensuelle_allocations_familiales.date_courante",sL="199900",yR=752,yQ=1424,c0=-976970511,yO="' kind for the enumeration 'SituationObligationScolaire.t'",yP="%.16g",C0="220100",KS=189,jS="droit_ouvert_forfaitaire",mh=620,sK="%i",rR="0.01",CZ="262985",GU="409505",pf=670,yN="LogementFoyer",GT="33026",CY="139700",ni="PrestationAccueilJeuneEnfant",ii=629,CX="Article L822-4",ts=856,GS="41252",yM=1618,ih=640,CV="0.1",CW="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",mg="5399",pe=337,e8=123,nh=650,CU=3169,oc=570,KR="accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire",mf="0.0173",R="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",GR=806,GQ=159,yL="LocationAccession",ng=1067,CT="CDI",e7=577,rQ="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",KQ="41338",di=0xff,me="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",si=-12,ob="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",md=458,oa=704,yK="Article 15",GP=3284,fF="0.75",kl="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",KP="22355",n$=3654863,CS="140800",cV=436,tr="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yJ=455,CR=1997,GO="163000",KO=991,jR="0.5",KN="Article R842-14",yI="fd ",GN=3904,GM=1120,KM=2829,CQ=1233,GL=1116,yH="194200",GK="41751",mc=871,CP=409,GJ="181800",yG="41316",a4="traitement_aide_finale_contributions_sociales_arrondi",yF=993,GI="cat\xc3\xa9gorie_calcul_apl",iS=338,cc="Prise en compte des ressources pour les aides personnelles au logement",GH="757",rP=827,CO=4479,kw="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",yE=2032,pd=442,KL="%B",gh=2001,rO="Compl\xc3\xa9mentFamilial",yD=4122,ix=633,KK="smic.r\xc3\xa9sidence",h2=489,aE="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",j8=1018,CN="Article D832-18",dV=108,GG=1984,h1=-2147483648,x="1",fe=2002,yC=1708,GF="Chapitre II : Dispositions applicables aux ressources",yB=522,CM=606,GE=1657,yA="Article R822-7",CL="42605",GD=4307,yx="VendeurQuandDemandeurAContratLocationAccession",yy="Article R755-0-2",yz="EAGAIN",CK="calculNombrePartsAccessionPropriete",sJ=406,yw=4947,sh=": Not a directory",KJ="allocationFamilialesAvril2008",yv="b",KI="Article D521-3",GC=4265,CJ="accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge",aA="CalculAidePersonnalis\xc3\xa9eLogement",yt="D331_63_64",yu="EDESTADDRREQ",d_=2012,CI=287,CH="Out_of_memory",n_=86400,KH="42469",ys=4897,pc=530,an="4",C="examples/aides_logement/code_construction_reglementaire.catala_fr",tq="index out of bounds",nf=601,kv=668,pa=903,pb="_bigarr02",sI=1006,yr="31264",gD=881,KG=0xffffffff,KF="LaR\xc3\xa9union",mb="Article L822-5",eQ=0xffff,KE="accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement",ig=2009,Gz=3836,GA=3262,GB="EBUSY",yq="ENETUNREACH",n9=417088404,Gy=222,KD="%.17g",rN=400,n8="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",dU="100.",dh=3600,CG="1.25",ne=143,KC=2282,gg=1050,yp="44729",KB=3124,fd="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",hg=963043957,eZ=126,T="5",iw=142,o$=741,iR="AllocationSoutienFamilial",yo=840,CF="SousLocataire",Gx=4527,Gw="34713",n7=416,ad="Section 1 : Calcul, liquidation et versement des aides",ku=124,hf="Article L512-3",Gv="0.98",KA=3417,tp=1626,Gu="633129",Kz=2578,dH=150,to=427,yn="41440",nd=899,dD="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",e6=135,dT="Sous-section 2 : Calcul de l'aide en secteur locatif",Ky=1112,ma=252,CE="enfant_le_plus_\xc3\xa2g\xc3\xa9",H="examples/allocations_familiales/prologue.catala_fr",Kx="EPROTOTYPE",_="CalculAidePersonnalis\xc3\xa9eLogementFoyer",Gt="PriseEnCharge",e5=".",ym="EINTR",iQ=147,CD=0xf0,hq=634,Kw=4006,yl="eligibilitePrestationsFamiliales",cY="12.",CC=744,Gs=694,n6="Guadeloupe",yk=276,nc="230500",hp=116,yi=1482,yj="enfantLePlusAge",eY=576,Gr="EALREADY",nb=365,n5=627,h0=813,CB=1007,Kv=294,bD="traitement_aide_finale_montant_minimal",yh="impossible case",em="examples/allocations_familiales/securite_sociale_R.catala_fr",yg=1095,gs="R\xc3\xa8gles diverses",iP=968,CA=-1080,Gq=500,tn=291,Ku="EAFNOSUPPORT",Kt="18185",Cz=969837588,ie=872,Gp="PM",yf="SaintBarthelemy",iv=638,Ks="ENFILE",Go=3673,Kp=-1023,Kq=2717,Kr=3801,Ko=859,ye="ressources_m\xc3\xa9nage_avec_arrondi",Cy=4241,n4=763,Km="ouvertureDroitsRetraite",Kn="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",Cx="204700",sg="Article L755-12",yd="TravauxPourAcquisitionD832_15_1",Cw="Ancien",sf="lib/read.mll",hk="1229",yc=1530,Kk="Article premier",Kl=939,yb=501,a8="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",kk=1582,el=1048,gf='"',Kj="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",bJ=1022,l$="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",az="CalculAllocationLogement",Ki="3539",tm="<",ya=931,Gl="208500",Gm="prestations_familiales.date_courante",Gn=0x800,Cv="EPERM",Kh=869,hZ=617,hY=182,l_=398,na=331,iO=327,o_="\xc3\xa9ligibilit\xc3\xa9",x_=3943,x$=0.012,Gj=3958,Gk="233000",c_=719,Gi="calculAidePersonnaliseeLogementLocatif",b_="Article 33",rM=156,Cu="InfosLogementFoyer",Kg="M\xc3\xa9tropole",x9=842,Ct="40696",Kf="ressources_m\xc3\xa9nage_arrondies_seuil",l9=204,se="Article D815-1",id="conditions_hors_\xc3\xa2ge",x8=997,m$=727,aR="traitement_aide_finale_abattement",sd=534,bi="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",x7=726928360,l8=562,Gh="221100",x6="([^/]+)",sH=165,e4=1171,Cs="Article 39",Gg=700,tl=0xf,bM=809,x5="798",Cr="BailleurSocial",Gf="logement_foyer.nombre_personnes_\xc3\xa0_charge",jQ="montant_initial_m\xc3\xa9tropole_majoration",eX=125,Gd=2796,Ge=490,Cq=658,sG=818,Cp=1092,Gc="Division_by_zero",o9=736,rL="Article L832-3",x4=3352,Co=430,x3=708012133,Ke="SituationObligationScolaire",aY=877,ge=589,Cn="AutrePersonne\xc3\x80Charge",o8=879,Kd="44440",hX=532,Gb=1200,Kc="AllocationJeuneEnfant",o7=566,d6=2014,Cm="22262",Ga=552,Ck="Article D842-17",Cl=380,l7=118,iN=973,F$="EADDRNOTAVAIL",Ka=697,Kb="Article L751-1",o6=119,cX=104,kj="montant_avec_garde_altern\xc3\xa9e_majoration",J$="70",x1="calculette_sans_garde_altern\xc3\xa9e",x2="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",m_=321,x0=1975,F_="version_avril_2008",xZ="38361",m8=127686388,m9=714,F9="locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9",gd=2013,Ci="ouverture_droits_retraite",Cj=102,jP=340,J_=1486,l6=722,l5="100000.",xY="18261",m7=652,Ch="logement_foyer.ressources_m\xc3\xa9nage_arrondies",eg=101,o5="calcul_nombre_parts.situation_familiale_calcul_apl",Cg="body",n3=642,dQ="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",xX="Unexpected '%s' kind for the enumeration 'Collectivite.t'",hj=1e7,tk="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Cf=1633,ki=254,J9="calcul_apl_logement_foyer.zone",Ce="accession_propri\xc3\xa9t\xc3\xa9.zone",J8="6.",xW="1003",Cc="ECONNABORTED",Cd="EFAULT",he="Article L841-2",J7=" : flags Open_text and Open_binary are not compatible",xU=1516,jO=902,xV="EDEADLK",Cb="' kind for the enumeration 'PriseEnCharge.t'",J6="EIO",kh="Article D832-15",gC="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",F8="43248",hi=1992,d9="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",xT="\\\\",fO=584,v="Code de la construction et de l'habitation",F6=1489,F7="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",J5="Article 38",F5=188,J4=1045,Ca="0.04",J3=160,F4="0.0226",xS="192500",J2="230700",sc=926,B$="0.0463",F3="217600",xR=4708,sF="GardeAlterneePartageAllocations",J1=519,B_="EHOSTDOWN",sE="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",o3=528,o4="0.55",xQ=474,o2=109,dG="droit_ouvert",I="Champs d'applications",xP=1105,B8=4569,B9=952,B7="ENOTSOCK",o1=669,tj=995,gr=326,xO="locatif.nombre_personnes_\xc3\xa0_charge",af="ContributionsSocialesAidesPersonnelleLogement",ic="Article D832-10",J0=2614,bP="Interface du programme",sD=-97,n2=976,cn="examples/aides_logement/archives.catala_fr",JZ=469,B6=953,o0=666,iM=1461,xN=1713,rJ="Article D823-20",rK="ServicesSociauxAllocationVerseeAuxServicesSociaux",fC="d\xc3\xa9pense_nette_minimale_d832_27",m6=195,F2="218700",eP="1.",oZ=443,F0=3599,F1=1015,JY=1492,B5="EOPNOTSUPP",FZ="DecisionTaken(_)",xM="20",B4=4225,FY=1574,xL="45200",cT="d\xc3\xa9pense_nette_minimale",JX=2440588,B3=954,n1=728,JW="calcul_apl_logement_foyer.mode_occupation",rI="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",JV=1202,FX=4503,JU="ECONNRESET",kg="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",ti=1189,xK="ESPIPE",FW=4210,JT=4338,sC=388,th="Article D823-17",B2="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",FV=1553,oY=546,m5=596,B1="E2BIG",oW=2440587.5,oX="AllocationLogement",FT="5186",FU="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",xJ="accession_propri\xc3\xa9t\xc3\xa9.date_courante",B0="calcul_apl_logement_foyer.situation_familiale_calcul_apl",FS=155,xI="142303",hW=316,FQ="37778",FR=4828,xH=296,JS=2378,oV=565,oU=569,JR=799,hd="Article D832-11",FP="LaReunion",JQ=4871,sB=971,aZ="Montant du salaire minimum de croissance",JP="AgrandirOuRendreHabitableD331_63",FO=386,xF="0.3",xG="true",bk="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",BZ=2672,Q="Titre II : Dispositions communes aux aides personnelles au logement",tg=426,FN=3834,sb=214,JN="25116",JO=1177,rH="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",m4=1068,sA="1500",FM=" is too large for shifting.",JM="237200",l4="Map.bal",BX="5208",BY="0.08",kf="242800",xD=2690,xE="@[",av="Titre III : Aide personnalis\xc3\xa9e au logement",JK=1485,JL="Apr\xc3\xa8s",FL=1185,ai="Code de la s\xc3\xa9curit\xc3\xa9 sociale",BV="42892",BW=4468,JJ=4498,BU=3549,FK=3308,BT=4394,n0="ml_z_overflow",xC="1.8",j7="contributions_sociales.date_courante",sa=807,r$=268,nZ=653,FJ=3808,xB="calcul_apl_logement_foyer.redevance",l3=582,xA=4899,BS=-752863768,FI=4650,r_="Article D832-17",m3=904,tf="202500",gN=705,b1=765,BR="allocationsFamiliales",JG="Article 10",JH=1181,JI="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",j6=167,FH="582700",JF="4986",l2=888,m2=433,aj="CalculAidePersonnalis\xc3\xa9eLogementLocatif",JE=3491,sz=197,m1=531,cS="abattement_d\xc3\xa9pense_nette_minimale",hV=811,BQ="Sys_blocked_io",rG="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",cy="Articles valables du 1er octobre 2020 au 1er octobre 2021",FG=450,xz="0.0588",m0="Chapitre 2 : Champ d'application.",ho="Chapitre 2 : Champ d'application",xy="EXDEV",BP=3939,BO=3281,oT=457,ef=0xFF,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",c7="Article D842-15",cR=892,oS=1010,bu=246,ib=441,rF="37900",xx="%u",ke="Article L831-1",aK="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",gB="calcul_\xc3\xa9quivalence_loyer_minimale",FF="logement_foyer.zone",JD="type_pr\xc3\xaat",FD=3216,FE="EHOSTUNREACH",xw=1718,JC=405,cf="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",xv="19402",JB=4010,ab="2",cu=127,xu="Article 30",FC="@{",xt=4039,b7="Montant de la base mensuelle des allocations familiales",nY=886,FB=" : flags Open_rdonly and Open_wronly are not compatible",xr=1620,xs="0.232",te="OuvertureDroitsRetraite",BN=1703,Fz="Zone2",FA="43505",oR="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cU="-",BM=950,gc=803994948,BL=3652,mZ=336,l1=603,xp="n_nombre_parts_d832_11",xq=216,Fy=" : file already exists",gb=397,xo=2291,hc="EffectiveEtPermanente",BK=1548,JA=987,xn=1499,Jy="calculAllocationLogementAccessionPropriete",Jz="41481",BJ=2041,hU="0.0045",fy="Date d'ouverture des droits \xc3\xa0 la retraite",xl=866,xm=1099,BI="retrieveEvents",Jx="accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement",Fx="ENOEXEC",BH="2699",iu=644,nX=625,xk="prestationsFamiliales",Fw="Infini",xj="\\b",nW="Article 43",l0="Martinique",BG=2903,mY=404,aM="Titre IV : Allocations de Logement",dS="Article D832-25",Fv="EPFNOSUPPORT",lZ=487,xi=12520,BF="ENOTTY",xh="ENXIO",Jv=-46,Jw="Collectivit\xc3\xa9",Js=2806,Jt="42228",Ju=401,aQ="Chapitre 1er : Allocations familiales",nV=981,cz="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",xg="AllocationEducationEnfantHandicape",it=2016,BE="AllocationRentr\xc3\xa9eScolaire",Fu=1408,oQ=963,dp=1000,S="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",ac="",BD="^",td=737456202,oP="Sous-section 2 : Principes de neutralisation et d'abattement",gM=3600.,Jr=4829,lY="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",Jq=86400000,hT=0x3f,BC="' kind for the enumeration 'Collectivite.t'",tc="184000",xf=334,Fs="251500",Ft=758,gq="Article 16",Jp="Article D842-9",Fr="Match_failure",Jo=4499,Jn=759,xe="Bailleur",nU=716,ax=2021,xd=3848,mX="0.085",j5="CalculNombrePartLogementFoyer",fN="d\xc3\xa9pense_nette_minimale_d832_10",dF=0x00,BB="35130",jN="montant_initial_majoration",fc="+",xc=2174,Bz=4501,BA="ESRCH",kd=339,tb="Section 3 : Conditions relatives au logement",Bx=4206,By="1057",da=587,Jm=179,xb=3555,Fq=425,Jl="%li",Bw="234600",is="Smic",mW=342,Bu=4632,Bv=1608,Jk="39051",oO=3354,Fp="20900",oN="calcul_apl_logement_foyer",ta="208600",Jj=1484,Fo=373,Bt=1595,Jh=829,Ji=4465,xa=1569,rE=267,ce=431,oM=2299161,Jg="impayeDepenseLogement",Fn=801,oL=962,rD=753,Je="calcul_nombre_parts.condition_2_du_832_25",Jf="logement_foyer.redevance",Fm=0xe0,Fl="z",Bs="20100",nT=873,Fj=1126,Fk="%",Jc=4959,Jd=1523,lX=882,Bq="D331_32",eW="contributions_sociales",Br="ENAMETOOLONG",oK=2400000.5,mV=580,Bp=1138,Jb=1136,mU=526,bC=1020,dP=250,Bo="EMSGSIZE",G="Secteur logement-foyer",Fi="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",sy=1196,rC="Article L831-2",Bn="ECONNREFUSED",L="Allocations familiales",iL=707,Ja=3898,w$=1621,mT=1034,I$=1080,Bm="locatif.ressources_m\xc3\xa9nage_arrondies",Fh="0.027",w8=3350,w9="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",w_="allocations_familiales",r9=1255,e3=1170,fM=351,Bl=1686,b8="examples/allocations_familiales/securite_sociale_L.catala_fr",Fg=4494,oJ="Article 8",mS="Article R521-1",eV=0x8000,Ff=245,bI=2019,s$="jsError",dR=964,bG="Chapitre Ier : Champ d'application",I_="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",Bk="43074",Fe="6.55957",lW="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",c9=969,Fd="eligibiliteAidePersonnaliseeLogement",oI=1174,I9=4144,Fc="InfosLocatif",e2=320,ia=129,j4=486,lV=958,dz=766,Fb="\n",fL="abattement_d\xc3\xa9pense_nette_minimale_d832_27",w7=497,aI="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",rB="3.7",Fa=4236,h$=537,gL=483,$="Tous secteurs",Bj=3170,c6=1033,dO="calcul_plafond_mensualit\xc3\xa9_d842_6_base",mR=-48,iK=2005,I8=1692,rA="9",h_=423,E$="EBADF",Bi="1025",cx="camlinternalFormat.ml",h9=312,oH=549,sx=1729,E_="EMLINK",I7=943,oG=148,w5=2310,w6=1675,Bg=4033,Bh="132000",oF=730,rz="Article R822-25",E8="0.0185",E9="924600",oE=713,dm=2017,E7=1124,I6="date_naissance",oD=343,gK=317,lU="Article R822-2",U="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ir=878,eE="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",w4=1141,r8="obligation_scolaire",sw="EEXIST",sv=846,Bf=32082,nS=733,ee=121,oC=961,I5="prestations_familiales.prestation_courante",j3=1999,Be="\\n",I4="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",eC=544,nR=120,hb="16",Bd="Article D832-14",r7=512,mQ=724,Bc=3660,E6=0x7ff0,E5="eligibiliteAllocationLogement",I3=861,E4="montant_forfaitaire_charges",j2=177,bn="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",Bb="Ascendant",E3="0x",I2=3853,lT="0.005",o="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",ga=484,w3=797,nQ="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",E2="locatif.situation_familiale_calcul_apl",oB=645,I1="40888",w2="0.208",E1="bas",E0="210900",I0="219900",w0="r\xc3\xa9gime_outre_mer_l751_1",w1="Invalid function call ([ ",a7="traitement_aide_finale",ed=105,wZ="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nP="Article R512-2",Ba="31664",EZ=1135,wY=820,EY="44693",ry="2710",nO="0.45",IZ=1914,cW=429,A_="Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'",A$="str.ml",s_=158,P="input",wW=4903,wX="39839",A9="\xc3\xa9ligibilit\xc3\xa9_logement",su="0.2",lS="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",EX=4346,cd=390,IY=498,f$="examples/aides_logement/autres_sources.catala_fr",A8=2627,mP=283,IX="Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",wV="calculAllocationLogement",EW=3554,IW=4004,st="mkdir",ha="Article L822-3",wU="logement_foyer.situation_familiale_calcul_apl",aa="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",A7=1013,EV=825,oA=": No such file or directory",rx=266,iq=655,gJ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",hs="Titre 5 : D\xc3\xa9partements d'outre-mer",wT=948,f_="src/printer.ml",EU="766",cP="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",wS="locatif.colocation",A6="calculetteAidesAuLogement",r6="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",cZ=151,ET=1137,IU="Descendant",IV=2334,b2="\xc3\x89ligibilit\xc3\xa9AllocationLogement",bh="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",mN=600,mO=626,IT="\xc3\xa9ligibilit\xc3\xa9_apl",rw="Demandeur",A5=1097,ES="taux",wR=1587,cb="CalculAllocationLogementLocatif",A4="BeginCall([ ",wQ=868,ER=0xFE,IS="ENOPROTOOPT",dW=329,wP=3988,A3=3840,kc="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A2="GardeAltern\xc3\xa9ePartageAllocations",bq="\xc3\x89pilogue",A1="943900",Y="CalculAllocationLogementFoyer",A0="bmaf",lR=1166,IQ="calculEquivalenceLoyerMinimale",IR=867,wO=472,AZ="contributionsSocialesAidesPersonnelleLogement",nN=2006,ip="0.95",IP="ressourcesAidesPersonnelleLogement",rv=363,wM="Pervasives.do_at_exit",wN="utf8",AY="222300",EQ=863,ru="ComplementFamilial",IO="225000",AX="locatif.logement_est_chambre",lQ=529,wL=4546,IN=1697,wJ="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",wK="EISDIR",IM="0.0283",IL=854,EP="logement_foyer.date_courante",s9="0.16",wI=4158,bb="Article 18",AW="36815",nM=643,IK="accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl",oz=134,mM=1167,oy=387,eD="Section 2 : Conditions relatives aux ressources",aF="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function +bNN(d,b,e,c,f){if(c<=b)for(var +a=1;a<=f;a++)e[c+a]=d[b+a];else +for(var +a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function +bNO(b,d,c,e){for(var +a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?p1(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else +if(b.t==2&&f==b.c.length){b.c+=d.t==4?p1(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pP(b);var +g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var +a=0;a=0;a--)h[f+a]=g[e+a];else{var +i=Math.min(c,g.length-e);for(var +a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function +ht(a){if(a.t==2)a.c+=i$(a.l-a.c.length,"\0");else +a.c=p1(a.c,0,a.c.length);a.t=0}function +MI(a,b){if(a===b)return 1;a.t&6&&ht(a);b.t&6&&ht(b);return a.c==b.c?1:0}function +bOv(b,a){throw[0,b,a]}function +M6(a){if(a.length<24){for(var +b=0;bcu)return false;return true}else +return!/[^\x00-\x7f]/.test(a)}function +tV(e){for(var +j=ac,c=ac,g,f,h,a,b=0,i=e.length;br7){c.substr(0,1);j+=c;c=ac;j+=e.slice(b,d)}else +c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else +if(a>eQ)c+=String.fromCharCode(0xd7c0+(a>>10),Hc+(a&0x3FF));else +c+=String.fromCharCode(a);if(c.length>kq){c.substr(0,1);j+=c;c=ac}}return j+c}function +fg(c,a,b){this.t=c;this.c=a;this.l=b}fg.prototype.toString=function(){switch(this.t){case +9:return this.c;default:ht(this);case +0:if(M6(this.c)){this.t=9;return this.c}this.t=8;case +8:return this.c}};fg.prototype.toUtf16=function(){var +a=this.toString();if(this.t==9)return a;return tV(a)};fg.prototype.slice=function(){var +a=this.t==4?this.c.slice():this.c;return new +fg(this.t,a,this.l)};function +MJ(a){return new +fg(0,a,a.length)}function +a(a){return MJ(a)}function +tT(c,b){bOv(c,a(b))}var +bW=[0];function +b4(a){tT(bW.Invalid_argument,a)}function +MG(){b4(tq)}function +kM(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case +0:return a.c.charCodeAt(b);case +4:return a.c[b]}}function +gX(b,a){if(a>>>0>=b.l)MG();return kM(b,a)}function +b$(a,c,b){b&=di;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pP(a)}a.c[c]=b;return 0}function +c1(b,a,c){if(a>>>0>=b.l)MG();return b$(b,a,c)}function +en(c,a){if(c.fun)return en(c.fun,a);if(typeof +c!=="function")return c;var +b=c.length|0;if(b===0)return c.apply(null,a);var +e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else +if(d<0)return en(c.apply(null,a.slice(0,b)),a.slice(b));else +return function(){var +e=arguments.length==0?1:arguments.length,d=new +Array(a.length+e);for(var +b=0;b>>0>=a.length-1)kL();return a}function +pO(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function +dq(a){a.t&6&&ht(a);return a.c}var +bOK=Math.log2&&Math.log2(1.1235582092889474E+307)==bC;function +M5(a){if(bOK)return Math.floor(Math.log2(a));var +b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else +while(a<1){a*=2;b--}return b}function +tM(c){var +a=new(aO.Float32Array)(1);a[0]=c;var +b=new(aO.Int32Array)(a.buffer);return b[0]|0}var +MS=Math.pow(2,-24);function +kW(a){throw a}function +i_(){kW(bW.Division_by_zero)}function +a0(b,c,a){this.lo=b&fJ;this.mi=c&fJ;this.hi=a&eQ}a0.prototype.caml_custom="_j";a0.prototype.copy=function(){return new +a0(this.lo,this.mi,this.hi)};a0.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new +a0(a,b,c)};a0.prototype.add=function(a){var +b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new +a0(b,c,d)};a0.prototype.sub=function(a){var +b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new +a0(b,c,d)};a0.prototype.mul=function(a){var +b=this.lo*a.lo,c=(b*MS|0)+this.mi*a.lo+this.lo*a.mi,d=(c*MS|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new +a0(b,c,d)};a0.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};a0.prototype.isNeg=function(){return this.hi<<16<0};a0.prototype.and=function(a){return new +a0(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};a0.prototype.or=function(a){return new +a0(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};a0.prototype.xor=function(a){return new +a0(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};a0.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new +a0(this.lo<>24-a,this.hi<>24-a);if(a<48)return new +a0(0,this.lo<>48-a);return new +a0(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new +a0(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new +a0(this.hi>>a-48,0,0)};a0.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var +c=this.hi<<16>>16;if(a<24)return new +a0(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var +b=this.hi<<16>>31;if(a<48)return new +a0(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&eQ);return new +a0(this.hi<<16>>a-32,b,b)};a0.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fJ;this.lo=this.lo<<1&fJ};a0.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fJ;this.mi=(this.mi>>>1|this.hi<<23)&fJ;this.hi=this.hi>>>1};a0.prototype.udivmod=function(e){var +c=0,b=this.copy(),a=e.copy(),d=new +a0(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};a0.prototype.div=function(a){var +b=this;if(a.isZero())i_();var +d=b.hi^a.hi;if(b.hi&eV)b=b.neg();if(a.hi&eV)a=a.neg();var +c=b.udivmod(a).quotient;if(d&eV)c=c.neg();return c};a0.prototype.mod=function(b){var +a=this;if(b.isZero())i_();var +d=a.hi;if(a.hi&eV)a=a.neg();if(b.hi&eV)b=b.neg();var +c=a.udivmod(b).modulus;if(d&eV)c=c.neg();return c};a0.prototype.toInt=function(){return this.lo|this.mi<<24};a0.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};a0.prototype.toArray=function(){return[this.hi>>8,this.hi&di,this.mi>>16,this.mi>>8&di,this.mi&di,this.lo>>16,this.lo>>8&di,this.lo&di]};a0.prototype.lo32=function(){return this.lo|(this.mi&di)<<24};a0.prototype.hi32=function(){return this.mi>>>8&eQ|this.hi<<16};function +gY(b,c,a){return new +a0(b,c,a)}function +pT(a){if(!isFinite(a)){if(isNaN(a))return gY(1,0,E6);return a>0?gY(0,0,E6):gY(0,0,0xfff0)}var +f=a==0&&1/a==-Infinity?eV:a>=0?0:eV;if(f)a=-a;var +b=M5(a)+ew;if(b<=0){b=0;a/=Math.pow(2,-h4)}else{a/=Math.pow(2,b-Mv);if(a<16){a*=2;b-=1}if(b==0)a/=2}var +d=Math.pow(2,24),c=a|0;a=(a-c)*d;var +e=a|0;a=(a-e)*d;var +g=a|0;c=c&tl|f|b<<4;return gY(g,e,c)}function +kQ(a){return a.toArray()}function +MF(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==pb)for(var +a=0;a>4;if(c==2047)return(f|g|b&tl)==0?b&eV?-Infinity:Infinity:NaN;var +e=Math.pow(2,-24),a=(f*e+g)*e+(b&tl);if(c>0){a+=16;a*=Math.pow(2,c-Mv)}else +a*=Math.pow(2,-h4);if(b&eV)a=-a;return a}function +tF(b){var +d=b.length,c=1;for(var +a=0;a>>24&di|(a&eQ)<<8,a>>>16&eQ)}function +tO(a){return a.hi32()}function +tP(a){return a.lo32()}var +bNR=pb;function +gV(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gV.prototype.caml_custom=bNR;gV.prototype.offset=function(b){var +c=0;if(typeof +b==="number")b=[b];if(!(b +instanceof +Array))b4("bigarray.js: invalid offset");if(this.dims.length!=b.length)b4("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var +a=0;a=this.dims[a])kL();c=c*this.dims[a]+b[a]}else +for(var +a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kL();c=c*this.dims[a]+(b[a]-1)}return c};gV.prototype.get=function(a){switch(this.kind){case +7:var +d=this.data[a*2+0],b=this.data[a*2+1];return MR(d,b);case +10:case +11:var +e=this.data[a*2+0],c=this.data[a*2+1];return[ki,e,c];default:return this.data[a]}};gV.prototype.set=function(a,b){switch(this.kind){case +7:this.data[a*2+0]=tP(b);this.data[a*2+1]=tO(b);break;case +10:case +11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gV.prototype.fill=function(b){switch(this.kind){case +7:var +c=tP(b),e=tO(b);if(c==e)this.data.fill(c);else +for(var +a=0;ad)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case +7:for(var +a=0;ab.data[a+1])return 1;if(this.data[a]>>>0>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case +2:case +3:case +4:case +5:case +6:case +8:case +9:case +12:for(var +a=0;ab.data[a])return 1}break}return 0};function +i7(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}i7.prototype=new +gV();i7.prototype.offset=function(a){if(typeof +a!=="number")if(a +instanceof +Array&&a.length==1)a=a[0];else +b4("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kL();return a};i7.prototype.get=function(a){return this.data[a]};i7.prototype.set=function(a,b){this.data[a]=b;return 0};i7.prototype.fill=function(a){this.data.fill(a);return 0};function +MB(c,d,a,b){var +e=MD(c);if(tF(a)*e!=b.length)b4("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new +i7(c,d,a,b);return new +gV(c,d,a,b)}function +dI(b){if(!bW.Failure)bW.Failure=[bl,a(sO),-3];tT(bW.Failure,b)}function +MC(b,v,r){var +i=b.read32s();if(i<0||i>16)dI("input_value: wrong number of bigarray dimensions");var +p=b.read32s(),j=p&di,o=p>>8&1,h=[];if(r==pb)for(var +a=0;a>>32-15;a=dZ(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function +bN4(a,b){a=cL(a,tP(b));a=cL(a,tO(b));return a}function +tK(a,b){return bN4(a,pT(b))}function +ME(c){var +b=tF(c.dims),d=0;switch(c.kind){case +2:case +3:case +12:if(b>dC)b=dC;var +e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=cL(d,e)}e=0;switch(b&3){case +3:e=c.data[a+2]<<16;case +2:e|=c.data[a+1]<<8;case +1:e|=c.data[a+0];d=cL(d,e)}break;case +4:case +5:if(b>cH)b=cH;var +e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=cL(d,e)}if((b&1)!=0)d=cL(d,c.data[a]);break;case +6:if(b>64)b=64;for(var +a=0;a64)b=64;for(var +a=0;a32)b=32;b*=2;for(var +a=0;a64)b=64;for(var +a=0;a32)b=32;for(var +a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function +kT(a){return a +instanceof +fg}function +pV(a){return kT(a)}function +MM(a){if(typeof +a==="number")return dp;else +if(kT(a))return ma;else +if(pV(a))return 1252;else +if(a +instanceof +Array&&a[0]===a[0]>>>0&&a[0]<=iA){var +b=a[0]|0;return b==ki?0:b}else +if(a +instanceof +String)return xi;else +if(typeof +a=="string")return xi;else +if(a +instanceof +Number)return dp;else +if(a&&a.caml_custom)return r9;else +if(a&&a.compare)return 1256;else +if(typeof +a=="function")return 1247;else +if(typeof +a=="symbol")return 1251;return 1001}function +kR(a,b){if(ab.c?1:0}function +p0(a,b){return MH(a,b)}function +kN(a,b,d){var +e=[];for(;;){if(!(d&&a===b)){var +f=MM(a);if(f==dP){a=a[1];continue}var +g=MM(b);if(g==dP){b=b[1];continue}if(f!==g){if(f==dp){if(g==r9)return ML(a,b,-1,d);return-1}if(g==dp){if(f==r9)return ML(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case +1001:if(ab)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case +1251:if(a!==b){if(!d)return NaN;return 1}break;case +1252:var +a=dq(a),b=dq(b);if(a!==b){if(ab)return 1}break;case +12520:var +a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case +246:case +254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var +h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=ac;a.t=2}else{a.c=i$(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pP(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,ac);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var +c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var +d=c[3].replace(/0+$/,ac),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dI("float_of_string")}function +tS(d){d=dq(d);var +e=d.length;if(e>31)b4("format_int: format too long");var +a={justify:fc,signstyle:cU,filler:fP,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function +tH(b,f){if(b.uppercase)f=f.toUpperCase();var +e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cU))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var +c=ac;if(b.justify==fc&&b.filler==fP)for(var +d=e;d20){c-=20;a/=Math.pow(10,c);a+=new +Array(c+1).join(p);if(b>0)a=a+e5+new +Array(b+1).join(p);return a}else +return a.toFixed(b)}}var +a,e=tS(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=sP;e.filler=fP}else +if(!isFinite(c)){a=Mo;e.filler=fP}else +switch(e.conv){case"e":var +a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==pH)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var +h=a.indexOf(pH),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var +b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==e5)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==pH)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var +f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else +while(a=c.toFixed(f),a.length>d+1)f--;if(f){var +b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==e5)b--;a=a.slice(0,b+1)}}break}return tH(e,a)}function +pR(e,c){if(dq(e)==sr)return a(ac+c);var +b=tS(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else +c>>>=0;var +d=c.toString(b.base);if(b.prec>=0){b.filler=fP;var +f=b.prec-d.length;if(f>0)d=i$(f,p)+d}return tH(b,d)}var +MY=0;function +cK(){return MY++}function +bNY(a){if(a==0||!isFinite(a))return[0,a,0];var +c=a<0;if(c)a=-a;var +b=Math.max(-ew,M5(a)+1);a*=Math.pow(2,-b);while(a=1){a*=eU;b++}if(c)a=-a;return[0,a,b]}function +eH(a){return a.toUtf16()}function +kX(){return typeof +aO.process!=="undefined"&&typeof +aO.process.versions!=="undefined"&&typeof +aO.process.versions.node!=="undefined"}function +bOL(){function +a(a){if(a.charAt(0)===eS)return[ac,a.substring(1)];return}function +b(c){var +g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||ac,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var +d=a[1]||ac,f=a[2]||ac;return[d,c.substring(d.length+f.length)]}return}return kX()&&aO.process&&aO.process.platform?aO.process.platform==="win32"?b:a:a}var +tZ=bOL();function +M3(a){return a.slice(-1)!==eS?a+eS:a}if(kX()&&aO.process&&aO.process.cwd)var +kO=aO.process.cwd().replace(/\\/g,eS);else +var +kO="/static";kO=M3(kO);function +bOi(a){a=eH(a);if(!tZ(a))a=kO+a;var +e=tZ(a),d=e[1].split(eS),b=[];for(var +c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function +bOC(e){for(var +f=ac,b=f,a,h,c=0,g=e.length;cr7){b.substr(0,1);f+=b;b=ac;f+=e.slice(c,d)}else +b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(d8|a&hT)}else +if(a<0xd800||a>=Lb)b+=String.fromCharCode(Fm|a>>12,d8|a>>6&hT,d8|a&hT);else +if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Lb)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(CD|a>>18,d8|a>>12&hT,d8|a>>6&hT,d8|a&hT)}if(b.length>kq){b.substr(0,1);f+=b;b=ac}}return f+b}function +bNT(a){var +b=9;if(!M6(a))b=8,a=bOC(a);return new +fg(b,a,a.length)}function +aN(a){return bNT(a)}var +bO4=[B1,IB,yz,E$,GB,Hl,xV,Lu,sw,Cd,Lt,ym,Lv,J6,wK,AS,E_,Br,Ks,Dc,pF,Fx,Az,DS,Af,yX,pp,tA,BF,xh,Cv,Is,Ay,Mp,xK,BA,xy,zh,IA,Gr,B7,yu,Bo,Kx,IS,zO,Mf,B5,Fv,Ku,KY,F$,Dl,yq,zN,Cc,JU,H_,DN,Ak,DG,Hk,zl,Bn,B_,FE,LI,L2];function +hz(d,f,e,a){var +b=bO4.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var +c=[b,aN(f||ac),aN(e||ac)];return c}var +MW={};function +fk(a){return MW[a]}function +hx(b,a){throw[0,b].concat(a)}function +bNS(a){return new +fg(4,a,a.length)}function +bz(a){tT(bW.Sys_error,a)}function +bOt(a){bz(a+oA)}function +dJ(a){return a.l}function +Mx(){}function +cI(a){this.data=a}cI.prototype=new +Mx();cI.prototype.truncate=function(a){var +b=this.data;this.data=bR(a|0);gW(b,0,this.data,0,a)};cI.prototype.length=function(){return dJ(this.data)};cI.prototype.write=function(b,d,g,a){var +c=this.length();if(b+a>=c){var +e=bR(b+a),f=this.data;this.data=e;gW(f,0,this.data,0,c)}eF(d,g,this.data,b,a);return 0};cI.prototype.read=function(c,a,d,b){var +e=this.length();gW(this.data,c,a,d,b);return 0};cI.prototype.read_one=function(a){return gX(this.data,a)};cI.prototype.close=function(){};cI.prototype.constructor=cI;function +dd(b,a){this.content={};this.root=b;this.lookupFun=a}dd.prototype.nm=function(a){return this.root+a};dd.prototype.create_dir_if_needed=function(d){var +c=d.split(eS),b=ac;for(var +a=0;a>1|1;if(h=0)}function +tL(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cL(d,c)}c=0;switch(e&3){case +3:c=b.charCodeAt(a+2)<<16;case +2:c|=b.charCodeAt(a+1)<<8;case +1:c|=b.charCodeAt(a);d=cL(d,c)}d^=e;return d}function +bN5(a,b){return tL(a,dq(b))}function +bN2(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cL(d,c)}c=0;switch(e&3){case +3:c=b[a+2]<<16;case +2:c|=b[a+1]<<8;case +1:c|=b[a];d=cL(d,c)}d^=e;return d}function +MT(a){switch(a.t&6){default:ht(a);case +0:return a.c;case +4:return a.c}}function +bN1(b,c){var +a=MT(c);return typeof +a==="string"?tL(b,a):bN2(b,a)}function +bN3(a){a^=a>>>16;a=dZ(a,0x85ebca6b|0);a^=a>>>13;a=dZ(a,0xc2b2ae35|0);a^=a>>>16;return a}function +bN0(j,l,n,m){var +f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>dC)d=dC;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(i8[a.caml_custom]&&i8[a.caml_custom].hash){var +k=i8[a.caml_custom].hash(a);b=cL(b,k);c--}}else +if(a +instanceof +Array&&a[0]===(a[0]|0))switch(a[0]){case +248:b=cL(b,a[2]);c--;break;case +250:f[--g]=a[1];break;default:var +o=a.length-1<<10|a[0];b=cL(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else +if(kT(a)){b=bN1(b,a);c--}else +if(pV(a)){b=bN5(b,a);c--}else +if(typeof +a==="string"){b=tL(b,a);c--}else +if(a===(a|0)){b=cL(b,a+a+1);c--}else +if(a===+a){b=tK(b,a);c--}}b=bN3(b);return b&0x3FFFFFFF}function +bN6(a,c,k){if(!isFinite(a)){if(isNaN(a))return aN(sP);return aN(a>0?Ml:"-infinity")}var +i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var +d=0;if(a==0);else +if(a<1)while(a<1&&d>-bJ){a*=2;d--}else +while(a>=2){a/=2;d++}var +j=d<0?ac:fc,e=ac;if(i)e=cU;else +switch(k){case +43:e=fc;break;case +32:e=fP;break;default:break}if(c>=0&&c<13){var +g=Math.pow(2,c*4);a=Math.round(a*g)/g}var +b=a.toString(16);if(c>=0){var +h=b.indexOf(e5);if(h<0)b+=e5+i$(c,p);else{var +f=h+1+c;if(b.length>24&fJ,a>>31&eQ)}function +bOf(a){return a.toInt()}function +bN$(a){return+a.isNeg()}function +bOc(a){return a.neg()}function +bN9(g,c){var +a=tS(g);if(a.signedconv&&bN$(c)){a.sign=-1;c=bOc(c)}var +b=ac,h=bOd(a.base),f="0123456789abcdef";do{var +e=c.udivmod(h);c=e.quotient;b=f.charAt(bOf(e.modulus))+b}while(!bOa(c));if(a.prec>=0){a.filler=fP;var +d=a.prec-b.length;if(d>0)b=i$(d,p)+b}return tH(a,b)}function +bOe(a,b){return a.or(b)}function +pU(a){return a.toFloat()}function +bOs(c){var +a=0,e=ay(c),b=10,d=1;if(e>0)switch(ep(c,a)){case +45:a++;d=-1;break;case +43:a++;d=1;break}if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=dl)return a-87;return-1}function +kS(f){var +h=bOs(f),c=h[0],i=h[1],d=h[2],g=ay(f),j=-1>>>0,e=c=d)dI(mm);var +a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dI(mm)}if(c!=g)dI(mm);a=i*a;if(d==10&&(a|0)!=a)dI(mm);return a|0}function +fi(a){return a.slice(1)}function +hu(c){var +d=c.length,b=new +Array(d+1);b[0]=0;for(var +a=0;a0){var +c=new +Array(b);for(var +a=0;aew){a-=ew;b*=Math.pow(2,ew);if(a>ew){a-=ew;b*=Math.pow(2,ew)}}if(a<-ew){a+=ew;b*=Math.pow(2,-ew)}b*=Math.pow(2,a);return b}function +pX(a,b){return+(kN(a,b,false)<0)}function +kU(b){b=dq(b);var +d=b.length/2,c=new +Array(d);for(var +a=0;a>16;return c}function +tQ(b,t,a){var +n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=kU(b[m]);b.lex_backtrk=kU(b[l]);b.lex_check=kU(b[p]);b.lex_trans=kU(b[s]);b.lex_default=kU(b[q])}var +e,c=t,k=My(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else +c=-c-1;for(;;){var +f=b.lex_base[c];if(f<0)return-f-1;var +i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else +e=dC;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else +c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dI("lexing: empty token");else +return a[g]}else +if(e==dC)a[j]=0}}function +dY(a,d){if(a<0)kL();var +a=a+1|0,b=new +Array(a);b[0]=0;for(var +c=1;c>>32-b,c)}function +g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function +h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function +i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function +j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function +k(f,n){var +e=n;f[e>>2]|=d8<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var +k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&ef;return o}return function(i,g,f){var +e=[],h=MT(i);if(typeof +h==="string"){var +d=h;for(var +a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var +c=h;for(var +a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bOz(k(e,f))}}();function +bOk(c,b,a){return bOj(eG(c),b,a)}function +bOl(){return 0}var +fj=new +Array();function +hv(c){var +a=fj[c];if(!a.opened)bz("Cannot flush a closed channel");if(!a.buffer||a.buffer==ac)return 0;if(a.fd&&bW.fds[a.fd]&&bW.fds[a.fd].output){var +b=bW.fds[a.fd].output;switch(b.length){case +2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=ac;return 0}function +M1(e,f){var +b=fj[e],d=a(f),c=ay(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function +bOG(a){var +a=tV(a),b=aO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.error&&c.error(a)}}function +bOH(a){var +a=tV(a),b=aO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.log&&c.log(a)}}function +p2(c,e,d,a){if(bW.fds===undefined)bW.fds=new +Array();a=a?a:{};var +b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bW.fds[c]=b;if(!bW.fd_last_idx||c>bW.fd_last_idx)bW.fd_last_idx=c;return c}function +bO6(c,b,g){var +a={};while(b){switch(b[1]){case +0:a.rdonly=1;break;case +1:a.wronly=1;break;case +2:a.append=1;break;case +3:a.create=1;break;case +4:a.truncate=1;break;case +5:a.excl=1;break;case +6:a.binary=1;break;case +7:a.text=1;break;case +8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bz(dq(c)+FB);if(a.text&&a.binary)bz(dq(c)+J7);var +d=Na(c),e=d.device.open(d.rest,a),f=bW.fd_last_idx?bW.fd_last_idx:0;return p2(f+1,M1,e,a)}p2(0,M1,new +cI(bR(0)));p2(1,bOH,new +cI(bR(0)));p2(2,bOG,new +cI(bR(0)));function +bOm(a){var +c=bW.fds[a];if(c.flags.wronly)bz(yI+a+" is writeonly");var +d=null;if(a==0&&kX()){var +e=require("fs");d=function(){return aN(e.readFileSync(0,wN))}}var +b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};fj[b.fd]=b;return b.fd}function +MU(c){var +b=bW.fds[c];if(b.flags.rdonly)bz(yI+c+" is readonly");var +a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:ac};fj[a.fd]=a;return a.fd}function +bOn(){var +b=0;for(var +a=0;a>>0)return a[0];else +if(kT(a))return ma;else +if(pV(a))return ma;else +if(a +instanceof +Function||typeof +a=="function")return tv;else +if(a&&a.caml_custom)return iA;else +return dp}function +eo(b,c,a){if(a&&aO.toplevelReloc)b=aO.toplevelReloc(a);bW[b+1]=c;if(a)bW[a]=c}function +tU(a,b){MW[dq(a)]=b;return 0}function +bOw(a){a[2]=MY++;return a}function +gZ(a,b){return MI(a,b)}function +bOy(){b4(tq)}function +aL(b,a){if(a>>>0>=ay(b))bOy();return ep(b,a)}function +M(a,b){return 1-gZ(a,b)}function +bOA(){return 0x7FFFFFFF/4|0}function +bOu(){kW(bW.Not_found)}function +M2(c){var +a=aO,b=eH(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aN(a.process.env[b]);if(aO.jsoo_static_env&&aO.jsoo_static_env[b])return aN(aO.jsoo_static_env[b]);bOu()}function +bOB(){if(aO.crypto)if(typeof +aO.crypto.getRandomValues==="function"){var +a=new(aO.Uint32Array)(1);aO.crypto.getRandomValues(a);return[0,a[0]]}else +if(aO.crypto.randomBytes==="function"){var +b=aO.crypto.randomBytes(4),a=new(aO.Uint32Array)(b);return[0,a[0]]}var +c=new +Date().getTime(),d=c^KG*Math.random();return[0,d]}function +hy(a){var +b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function +bX(b,a){return{joo_tramp:b,joo_args:a}}function +M0(a){return a}function +m(a){if(a +instanceof +Array)return a;if(aO.RangeError&&a +instanceof +aO.RangeError&&a.message&&a.message.match(/maximum call stack/i))return M0(bW.Stack_overflow);if(aO.InternalError&&a +instanceof +aO.InternalError&&a.message&&a.message.match(/too much recursion/i))return M0(bW.Stack_overflow);if(a +instanceof +aO.Error&&fk(s$))return[0,fk(s$),a];return[0,bW.Failure,aN(String(a))]}var +aw=function(z){"use strict";var +f=hj,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bOF.BigInt,F=typeof +g==="function";function +d(a,b,c,f){if(typeof +a==="undefined")return d[0];if(typeof +b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function +a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=oe}a.prototype=Object.create(d.prototype);function +b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=oe}b.prototype=Object.create(d.prototype);function +c(a){this.value=a;this.caml_custom=oe}c.prototype=Object.create(d.prototype);function +l(a){return-s0)return Math.floor(a);return Math.ceil(a)}function +N(g,h){var +i=g.length,j=h.length,e=new +Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function +t(a,b){if(a.length>=b.length)return N(a,b);return N(b,a)}function +A(g,a){var +h=g.length,d=new +Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var +b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var +c=this.value,d=b.value;if(b.isSmall)return new +a(A(c,Math.abs(d)),this.sign);return new +a(t(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var +f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var +d=f.value;if(f.isSmall){if(l(c+d))return new +b(c+d);d=q(Math.abs(d))}return new +a(A(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new +c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function +w(d,h){var +g=d.length,i=h.length,c=new +Array(g),e=0,j=f,a,b;for(a=0;a=0)c=w(e,f);else{c=w(f,e);d=!d}c=n(c);if(typeof +c==="number"){if(d)c=-c;return new +b(c)}return new +a(c,d)}function +E(h,l,k){var +j=h.length,c=new +Array(j),i=-l,g=f,e,d;for(e=0;e=0)};b.prototype.minus=b.prototype.subtract;c.prototype.subtract=function(a){return new +c(this.value-e(a).value)};c.prototype.minus=c.prototype.subtract;a.prototype.negate=function(){return new +a(this.value,!this.sign)};b.prototype.negate=function(){var +c=this.sign,a=new +b(-this.value);a.sign=!c;return a};c.prototype.negate=function(){return new +c(-this.value)};a.prototype.abs=function(){return new +a(this.value,false)};b.prototype.abs=function(){return new +b(Math.abs(this.value))};c.prototype.abs=function(){return new +c(this.value>=0?this.value:-this.value)};function +L(g,j){var +i=g.length,l=j.length,o=i+l,c=B(o),n=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function +W(c,b){var +a=[];while(b-->0)a.push(0);return a.concat(c)}function +C(b,c){var +a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var +f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function +aj(a,b){return-(x$*a)-x$*b+0.000015*a*b>0}a.prototype.multiply=function(j){var +h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/p);do{j=u(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=w(a,j)}e.reverse();return[n(e),n(a)]}function +O(i,e){var +g=i.length,h=B(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function +i(h,w){var +m,j=e(w);if(F)return[new +c(h.value/j.value),new +c(h.value%j.value)];var +l=h.value,i=j.value,g;if(i===0)throw new +Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new +b(r(l/i)),new +b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var +s=Math.abs(i);if(sc.length?1:-1;for(var +a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var +a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var +c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var +a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var +a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var +b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var +b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var +a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function +R(b){var +a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function +J(d,e){var +g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new +b(c-1);return new +a(H,true)};c.prototype.prev=function(){return new +c(this.value-g(1))};var +h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var +v=h.length,j=h[v-1];function +X(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var +a=e(c).toJSNumber();if(!X(a))throw new +Error(String(a)+FM);if(a<0)return this.shiftRight(-a);var +b=this;if(b.isZero())return b;while(a>=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var +a,b=e(d).toJSNumber();if(!X(b))throw new +Error(String(b)+FM);if(b<0)return this.shiftLeft(-b);var +c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function +I(h,a,q){a=e(a);var +m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var +g=q(m?1:0,p?1:0)!==0?aw(-1):aw(0);for(var +d=f.length-1;d>=0;d-=1)g=g.multiply(j).add(aw(f[d]));return g}a.prototype.not=function(){return this.negate().prev()};c.prototype.not=b.prototype.not=a.prototype.not;a.prototype.and=function(a){return I(this,a,function(a,b){return a&b})};c.prototype.and=b.prototype.and=a.prototype.and;a.prototype.or=function(a){return I(this,a,function(a,b){return a|b})};c.prototype.or=b.prototype.or=a.prototype.or;a.prototype.xor=function(a){return I(this,a,function(a,b){return a^b})};c.prototype.xor=b.prototype.xor=a.prototype.xor;var +G=1<<30,_=(f&-f)*(f&-f)|G;function +D(c){var +a=c.value,b=typeof +a==="number"?a|G:typeof +a==="bigint"?a|g(G):a[0]+a[1]*f|_;return b&-b}function +Q(b,a){if(a.compareTo(b)<=0){var +f=Q(b,a.square(a)),d=f.p,c=f.e,e=d.multiply(a);return e.compareTo(b)<=0?{p:e,e:c*2+1}:{p:d,e:c*2}}return{p:aw(1),e:0}}a.prototype.bitLength=function(){var +a=this;if(a.compareTo(aw(0))<0)a=a.negate().subtract(aw(1));if(a.compareTo(aw(0))===0)return aw(0);return aw(Q(a,aw(2)).e).add(aw(1))};c.prototype.bitLength=b.prototype.bitLength=a.prototype.bitLength;function +S(a,b){a=e(a);b=e(b);return a.greater(b)?a:b}function +K(a,b){a=e(a);b=e(b);return a.lesser(b)?a:b}function +P(a,b){a=e(a).abs();b=e(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var +c=d[1],f,g;while(a.isEven()&&b.isEven()){f=K(D(a),D(b));a=a.divide(f);b=b.divide(f);c=c.multiply(f)}while(a.isEven())a=a.divide(D(a));do{while(b.isEven())b=b.divide(D(b));if(a.greater(b)){g=b;b=a;a=g}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function +ad(a,b){a=e(a).abs();b=e(b).abs();return a.divide(P(a,b)).multiply(b)}function +ag(a,b){a=e(a);b=e(b);var +g=K(a,b),n=S(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var +j=y(h,f).value,l=[],k=true;for(var +c=0;c=i){if(c===x&&i===1)continue;throw new +Error(c+" is not a valid digit in base "+g+e5)}}g=e(g);var +h=[],j=b[0]===cU;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function +ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var +d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function +Z(d,c,b){var +a=y(d,c);return(a.isNegative?cU:ac)+a.value.map(function(a){return ah(a,b)}).join(ac)}a.prototype.toArray=function(a){return y(this,a)};b.prototype.toArray=function(a){return y(this,a)};c.prototype.toArray=function(a){return y(this,a)};a.prototype.toString=function(a,f){if(a===z)a=10;if(a!==10)return Z(this,a,f);var +d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var +g=this.sign?cU:ac;return g+e};b.prototype.toString=function(a,b){if(a===z)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function +V(d){if(l(+d)){var +n=+d;if(n===r(n))return F?new +c(g(n)):new +b(n);throw new +Error(py+d)}var +s=d[0]===cU;if(s)d=d.slice(1);var +h=d.split(/e/i);if(h.length>2)throw new +Error(py+h.join(pH));if(h.length===2){var +e=h[1];if(e[0]===fc)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new +Error(py+e+" is not a valid exponent.");var +f=h[0],i=f.indexOf(e5);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new +Error("Cannot include negative exponent part for integers");f+=new +Array(e+1).join(p);d=f}var +t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new +Error(py+d);if(F)return new +c(g(s?cU+d:d));var +q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new +a(q,s)}function +af(a){if(F)return new +c(g(a));if(l(a)){if(a!==r(a))throw new +Error(a+" is not an integer.");return new +b(a)}return V(a.toString())}function +e(a){if(typeof +a==="number")return af(a);if(typeof +a==="string")return V(a);if(typeof +a==="bigint")return new +c(a);return a}for(var +k=0;k0)d[-k]=e(-k)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=S;d.min=K;d.gcd=P;d.lcm=ad;d.isInstance=function(d){return d +instanceof +a||d +instanceof +b||d +instanceof +c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function +c2(a){var +b=a.toJSNumber()|0;if(a.equals(aw(b)))return b;return a}function +M7(a){return c2(aw(a).abs())}function +M8(a,b){return c2(aw(a).add(aw(b)))}function +eq(a,b){return aw(a).compare(aw(b))}function +jb(b,a){a=aw(a);if(a.equals(aw(0)))i_();return c2(aw(b).divide(aw(a)))}function +bOY(b,a){a=aw(a);if(a.equals(aw(0)))i_();return c2(aw(b).mod(a))}function +tW(a,b){return[0,jb(a,b),bOY(a,b)]}function +M9(a,b){return jb(a,b)}function +bOM(a,b){return aw(a).equals(aw(b))}function +dr(a){return aw(a).compare(aw.zero)}function +tY(a,b){return c2(aw(a).subtract(aw(b)))}function +bON(a,b){var +c=dr(a),d=dr(b);if(c*d<0)if(!aw(a).mod(aw(b)).equals(aw(0)))return tY(jb(a,b),aw(1));return jb(a,b)}function +bOP(a,b){return c2(aw.gcd(aw(a),aw(b)).abs())}function +bOD(c,e,g){e=aw(e);var +a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var +f=a.value.length,d=f*4;c.write(32,d);for(var +b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&di);c.write(8,a.value[b]>>>8&di);c.write(8,a.value[b]>>>16&di);c.write(8,a.value[b]>>>24&di)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function +bOE(b,g){var +e;switch(b.read8u()){case +1:e=true;break;case +0:e=false;break;default:dI("input_value: z (malformed input)")}var +f=b.read32u(),c=aw(0);for(var +d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return c2(c)}function +bOQ(d){var +b=aw(d).toArray(Math.pow(2,32)),a=0;for(var +c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=Cj)return a-97+10;if(a>=65&&a<=70)return a-65+10}var +e=0;if(a[e]==cU)e++;for(;e=c)b4("Z.of_substring_base: invalid digit")}return c2(aw(a,c))}function +hA(d,a,b,c){a=dq(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function +p3(a){a=aw(a);if(!bOO(a))kW(fk(n0));var +b=aw(KG),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=MR(d,c);return e}var +bO2=function(){var +b=[dF,dF,dF,dF,dF,dF,ef,0x03,ER,ef,ef,0x87,ER,ef,ef,0x07,dF,dF,dF,dF,dF,dF,dF,dF,ef,ef,Lh,ef,ef,ef,Lh,ef],c={CHAR:0,CHARNORM:1,STRING:2,STRINGNORM:3,CHARCLASS:4,BOL:5,EOL:6,WORDBOUNDARY:7,BEGGROUP:8,ENDGROUP:9,REFGROUP:10,ACCEPT:11,SIMPLEOPT:12,SIMPLESTAR:13,SIMPLEPLUS:14,GOTO:15,PUSHBACK:16,SETMARK:17,CHECKPROGRESS:18};function +r(a){return b[a>>3]>>(a&7)&1}function +o(b,a){return aL(b,a>>3)>>(a&7)&1}function +a(m,b,a,B){var +w=fi(m[1]),k=fi(m[2]),v=dq(m[3]),y=m[4]|0,z=m[5]|0,C=m[6]|0,b=Mz(b),l=0,x=false,t=[],i=new +Array(y),q=new +Array(z);for(var +f=0;f>8,d=s&di,g=b[a],h;l++;switch(A){case +c.CHAR:if(a===b.length){j();break}if(g===d)a++;else +e();break;case +c.CHARNORM:if(a===b.length){j();break}if(v.charCodeAt(g)===d)a++;else +e();break;case +c.STRING:for(var +n=dq(k[d]),f=0;f0&&b[a-1]!=10)e();break;case +c.EOL:if(aay(b))b4("Str.search_forward");while(a<=ay(b)){var +c=bO2(d,b,a,0);if(c)return c;a++}return[0]}function +p4(){return new +Date().getTime()/dp}function +jc(e){var +a=new +Date(e*dp),b=a.getTime(),d=new +Date(Date.UTC(a.getUTCFullYear(),0,1)).getTime(),c=Math.floor((b-d)/Jq);return[0,a.getUTCSeconds(),a.getUTCMinutes(),a.getUTCHours(),a.getUTCDate(),a.getUTCMonth(),a.getUTCFullYear()-fQ,a.getUTCDay(),c,false|0]}function +p5(){return 0}function +bO5(h){var +a=new +Date(h*dp),b=a.getTime(),e=new +Date(a.getFullYear(),0,1).getTime(),c=Math.floor((b-e)/Jq),d=new +Date(a.getFullYear(),0,1),f=new +Date(a.getFullYear(),6,1),g=Math.max(d.getTimezoneOffset(),f.getTimezoneOffset());return[0,a.getSeconds(),a.getMinutes(),a.getHours(),a.getDate(),a.getMonth(),a.getFullYear()-fQ,a.getDay(),c,a.getTimezoneOffset()f)a+=fG;var +c=e[d];if(typeof +c=="number")a+=c.toString();else +if(c +instanceof +fg)a+=gf+c.toString()+gf;else +if(typeof +c=="string")a+=gf+c.toString()+gf;else +a+=LD}a+=")"}else +if(b[0]==bl)a+=b[1];return a}function +MN(a){if(a +instanceof +Array&&(a[0]==0||a[0]==bl)){var +c=fk(Dj);if(c)c(a,false);else{var +d=bNX(a),b=fk(wM);if(b)b(0);aO.console.error(so+d+Fb)}}else +throw a}function +bOx(){var +a=aO;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){MN(b);a.process.exit(2)});else +if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)MN(a.error)})}bOx();function +k(a,b){return a.length==1?a(b):en(a,[b])}function +W(a,b,c){return a.length==2?a(b,c):en(a,[b,c])}function +bj(a,b,c,d){return a.length==3?a(b,c,d):en(a,[b,c,d])}function +lP(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):en(a,[b,c,d,e,f])}function +bNM(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):en(a,[b,c,d,e,f,g])}function +bNL(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):en(a,[b,c,d,e,f,g,h])}bNZ();var +p7=[bl,a(CH),-1],t3=[bl,a(K4),-2],fT=[bl,a(sO),-3],g0=[bl,a(zS),-4],p8=[bl,a(Gc),-6],b5=[bl,a(D3),-7],t1=[bl,a(Fr),-8],t2=[bl,a(z2),-9],a1=[bl,a(L_),-11],t4=[bl,a(C1),si],bNJ=[4,0,0,0,[12,45,[4,0,0,0,0]]],qn=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(zx),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],hJ=[0,0,0],bNK=[4,0,0,0,[12,46,0]],wH=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];eo(11,t4,C1);eo(10,a1,L_);eo(9,[bl,a(BQ),-10],BQ);eo(8,t2,z2);eo(7,t1,Fr);eo(6,b5,D3);eo(5,p8,Gc);eo(4,[bl,a(Hf),-5],Hf);eo(3,g0,zS);eo(2,fT,sO);eo(1,t3,K4);eo(0,p7,CH);var +No=a("output_substring"),Nl=a("%.12g"),Nk=a(e5),Ni=a(xG),Nj=a(zX),Nb=a("Stdlib.Exit"),Nd=gY(0,0,LJ),Ne=gY(0,0,65520),Nf=gY(1,0,LJ),Nr=a(xT),Ns=a("\\'"),Nt=a(xj),Nu=a(At),Nv=a(Be),Nw=a(Hi),Nq=a("Char.chr"),NA=a("nth"),NB=a("List.nth"),Nz=a("tl"),Ny=a("hd"),NE=a("String.blit / Bytes.blit_string"),ND=a("Bytes.blit"),NC=a("String.sub / Bytes.sub"),NI=a("String.contains_from / Bytes.contains_from"),NG=a(ac),NF=a("String.concat"),NN=a("Array.blit"),NM=a("Array.fill"),NL=a("Array.sub"),NS=a("Map.remove_min_elt"),NT=[0,0,0,0],NU=[0,a("map.ml"),rN,10],NV=[0,0,0],NO=a(l4),NP=a(l4),NQ=a(l4),NR=a(l4),NW=a("Stdlib.Queue.Empty"),NY=a("CamlinternalLazy.Undefined"),N5=a("Buffer.add_substring/add_subbytes"),N4=a("Buffer.add: cannot grow buffer"),N3=[0,a(H$),93,2],N2=[0,a(H$),94,2],N1=a("Buffer.sub"),Oc=a("%c"),Od=a("%s"),Oe=a(sK),Of=a(Jl),Og=a(zQ),Oh=a(K3),Oi=a("%f"),Oj=a(KL),Ok=a("%{"),Ol=a("%}"),Om=a("%("),On=a("%)"),Oo=a(y2),Op=a("%t"),Oq=a("%?"),Or=a("%r"),Os=a("%_r"),Ot=[0,a(cx),850,23],OE=[0,a(cx),814,21],Ow=[0,a(cx),815,21],OF=[0,a(cx),sG,21],Ox=[0,a(cx),819,21],OG=[0,a(cx),822,19],Oy=[0,a(cx),kr,19],OH=[0,a(cx),826,22],Oz=[0,a(cx),rP,22],OI=[0,a(cx),s1,30],OA=[0,a(cx),832,30],OC=[0,a(cx),836,26],Ou=[0,a(cx),837,26],OD=[0,a(cx),sv,28],Ov=[0,a(cx),s0,28],OB=[0,a(cx),851,23],PL=a(xx),PJ=[0,a(cx),1558,4],PK=a("Printf: bad conversion %["),PM=[0,a(cx),tp,39],PN=[0,a(cx),1649,31],PO=[0,a(cx),s8,31],PP=a("Printf: bad conversion %_"),PQ=a(FC),PR=a(xE),PS=a(FC),PT=a(xE),PX=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],PV=a(ac),PW=[0,0,4],PY=a(ac),PZ=a(yv),P0=a("h"),P1=a("hov"),P2=a("hv"),P3=a("v"),PH=a(sP),PF=a("neg_infinity"),PG=a(Ml),PE=a(e5),Pz=[0,pj],Pn=a("%+nd"),Po=a("% nd"),Pq=a("%+ni"),Pr=a("% ni"),Ps=a("%nx"),Pt=a("%#nx"),Pu=a("%nX"),Pv=a("%#nX"),Pw=a("%no"),Px=a("%#no"),Pm=a("%nd"),Pp=a(zQ),Py=a("%nu"),Pa=a("%+ld"),Pb=a("% ld"),Pd=a("%+li"),Pe=a("% li"),Pf=a("%lx"),Pg=a("%#lx"),Ph=a("%lX"),Pi=a("%#lX"),Pj=a("%lo"),Pk=a("%#lo"),O$=a("%ld"),Pc=a(Jl),Pl=a("%lu"),OZ=a("%+Ld"),O0=a("% Ld"),O2=a("%+Li"),O3=a("% Li"),O4=a("%Lx"),O5=a("%#Lx"),O6=a("%LX"),O7=a("%#LX"),O8=a("%Lo"),O9=a("%#Lo"),OY=a("%Ld"),O1=a(K3),O_=a("%Lu"),OM=a("%+d"),ON=a("% d"),OP=a("%+i"),OQ=a("% i"),OR=a("%x"),OS=a("%#x"),OT=a("%X"),OU=a("%#X"),OV=a("%o"),OW=a("%#o"),OL=a(sr),OO=a(sK),OX=a(xx),N6=a("@]"),N7=a("@}"),N8=a("@?"),N9=a("@\n"),N_=a("@."),N$=a("@@"),Oa=a("@%"),Ob=a("@"),OJ=a("CamlinternalFormat.Type_mismatch"),P7=a(ac),P8=[0,[11,a(fG),[2,0,[2,0,0]]],a(", %s%s")],Qv=[0,[11,a(so),[2,0,[12,10,0]]],a(Eo)],Qw=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Qu=a("Fatal error: out of memory in uncaught exception handler"),Qs=[0,[11,a(so),[2,0,[12,10,0]]],a(Eo)],Qo=[0,[2,0,[12,10,0]],a("%s\n")],Qg=a("Raised at"),Qh=a("Re-raised at"),Qi=a("Raised by primitive operation at"),Qj=a("Called from"),Qk=a(" (inlined)"),Qm=a(ac),Ql=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(zx),bNJ]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],Qn=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],Qb=a("Out of memory"),Qc=a("Stack overflow"),Qd=a("Pattern matching failed"),Qe=a("Assertion failed"),Qf=a("Undefined recursive module"),P9=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],P_=a(ac),P$=a(ac),Qa=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],P6=[0,[4,0,0,0,0],a(sr)],P4=[0,[3,0,0],a("%S")],P5=a(LD),Qp=[0,a(ac),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Qz=a("Fun.Finally_raised: "),Qx=a("Stdlib.Fun.Finally_raised"),QA=a(Ea),QP=[0,0],bNH=a("OCAMLRUNPARAM"),bNF=a("CAMLRUNPARAM"),QB=a(ac),Rc=[3,0,3],Rd=a(e5),Q9=a(mK),Q_=a("<\/"),Q$=a(ac),Q5=a(mK),Q6=a(tm),Q7=a(ac),Q3=a("\n"),QZ=a(ac),Q0=a(ac),Q1=a(ac),Q2=a(ac),QY=[0,a(ac)],QU=a(ac),QV=a(ac),QW=a(ac),QX=a(ac),QS=[0,a(ac),0,a(ac)],QR=a(ac),QQ=a("Stdlib.Format.String_tag"),Rn=a(ac),Rs=a(B1),Ru=a(IB),Rv=a(yz),Rw=a(E$),Rx=a(GB),Ry=a(Hl),Rz=a(xV),RA=a(Lu),RB=a(sw),RC=a(Cd),RD=a(Lt),RE=a(ym),RF=a(Lv),RG=a(J6),RH=a(wK),RI=a(AS),RJ=a(E_),RK=a(Br),RL=a(Ks),RM=a(Dc),RN=a(pF),RO=a(Fx),RP=a(Az),RQ=a(DS),RR=a(Af),RS=a(yX),RT=a(pp),RU=a(tA),RV=a(BF),RW=a(xh),RX=a(Cv),RY=a(Is),RZ=a(Ay),R0=a(Mp),R1=a(xK),R2=a(BA),R3=a(xy),R4=a(zh),R5=a(IA),R6=a(Gr),R7=a(B7),R8=a(yu),R9=a(Bo),R_=a(Kx),R$=a(IS),Sa=a(zO),Sb=a(Mf),Sc=a(B5),Sd=a(Fv),Se=a(Ku),Sf=a(KY),Sg=a(F$),Sh=a(Dl),Si=a(yq),Sj=a(zN),Sk=a(Cc),Sl=a(JU),Sm=a(H_),Sn=a(DN),So=a(Ak),Sp=a(DG),Sq=a(Hk),Sr=a(zl),Ss=a(Bn),St=a(B_),Su=a(FE),Sv=a(LI),Sw=a(L2),Sx=[0,[11,a("EUNKNOWNERR "),[4,0,0,0,0]],a("EUNKNOWNERR %d")],Rt=[0,[11,a("Unix.Unix_error(Unix."),[2,0,[11,a(fG),[3,0,[11,a(fG),[3,0,[12,41,0]]]]]]],a("Unix.Unix_error(Unix.%s, %S, %S)")],Ro=a(kE),Rp=a(ac),Rq=a(ac),Rr=a(kE),Sy=a("0.0.0.0"),Sz=a("127.0.0.1"),bNE=a("::"),bND=a("::1"),SP=a(ac),SQ=a(ac),S1=a("Str.matched_group"),SW=[0,92],SY=a("\\( group not closed by \\)"),SX=[0,a(A$),521,10],SZ=a("[ class not closed by ]"),S0=a("spurious \\) in regular expression"),SS=a("too many r* or r+ where r is nullable"),ST=a(ac),SU=a(ac),SR=[0,a(A$),sb,11],S5=[0,a(Dq),52,4],S4=[0,a(Dq),58,34],S3=a("Not a valid time zone"),Vf=a("Not a month"),Vd=a("Not a day"),Va=a("from_business: bad week"),Vb=a("from_business: bad date"),Un=[0,a(KZ),o6,4],Um=[0,a(KZ),dl,4],Uf=[0,-4713,12,31],Ug=[0,Lq,1,23],Uh=[0,kk,10,14],Ui=[0,kk,10,5],Ud=a("Date.Out_of_bounds"),Ue=a("Date.Undefined"),UD=a("Date.Period.Not_computable"),UM=[0,31,59,90,nR,cZ,hn,212,243,273,304,xf,nb],Vj=[0,a(om),cW,6],Vi=[0,a(om),z6,4],Vh=[0,a(om),j6,6],Vg=[0,a(om),67,4],WG=a("seconds_since_1970"),WD=a("second"),WB=a("minute"),Wz=a("hour"),Wv=a("date"),Ws=a("Cannot create the "),Wj=a("%j (year not provided)"),V7=a("%:"),V6=a("%::::"),Wq=[0,a(f_),402,6],V8=a(Fl),V9=a(":::z"),V_=a(Lk),V$=a(y_),Wa=[0,a(f_),509,12],Wb=a("am"),Wc=a("pm"),Wd=a(gf),We=a(gf),Wf=a("%P"),Wg=a("%V"),Wh=a("%W"),Wi=a("%j"),Wp=a("%w"),V5=a(Fk),Wk=a(Ip),Wl=a(Gp),Wm=a(gf),Wn=a(gf),Wo=a("%p"),Wr=[0,a(f_),po,6],V1=a("[\\+-]"),V2=a(fc),V3=a(cU),V4=[0,a(f_),396,8],VZ=a(" (either week or year is not provided)"),V0=a("[0-9][0-9]\\(\\.[0-9]*\\)?"),VX=[0,a(f_),mP,6],VW=a("z\\|:z\\|::z"),VS=a(Lk),VT=a(y_),VU=a(Fl),VV=[0,a(f_),s3,13],VR=a(Fk),VY=[0,a(f_),297,6],VQ=a(Ip),VP=a(Gp),VI=a(" does not match the format "),VH=a("bad format: "),VG=[0,a(f_),81,2],Vu=a("January"),Vv=a("February"),Vw=a("March"),Vx=a("April"),Vy=a("May"),Vz=a("June"),VA=a("July"),VB=a("August"),VC=a("September"),VD=a("October"),VE=a("November"),VF=a("December"),Vn=a("Sunday"),Vo=a("Monday"),Vp=a("Tuesday"),Vq=a("Wednesday"),Vr=a("Thursday"),Vs=a("Friday"),Vt=a("Saturday"),VJ=a("%b"),VK=a(KL),VL=a("%A"),VM=a("[a-zA-Z]+"),Wx=a(sK),WM=gY(1,0,0),WI=a("Z.Overflow"),WJ=a(n0),WQ=a(ac),WR=a("+inf"),WS=a("-inf"),WT=a(Mo),WU=a("undef"),WW=[0,a("q.ml"),j4,25],WV=a("Q.of_string: invalid digit"),WO=a(yh),WN=a(yh),W0=a("Buf.extend: reached Sys.max_string_length"),Xy=[0,a(sf),72,32],Xv=[0,a(sf),72,32],Xu=a("Root is not an object or array"),Xq=a("NaN value not allowed in standard JSON"),Xr=[0,[8,[0,0,3],0,[0,16],0],a(yP)],Xt=[0,[8,[0,0,3],0,[0,17],0],a(KD)],Xs=a(Hv),Xo=a("Infinity value not allowed in standard JSON"),Xp=a("-Infinity value not allowed in standard JSON"),Xk=a("NaN"),Xl=[0,[8,[0,0,3],0,[0,16],0],a(yP)],Xn=[0,[8,[0,0,3],0,[0,17],0],a(KD)],Xm=a(Hv),Xi=a("Infinity"),Xj=a("-Infinity"),Xf=a(xG),Xg=a(zX),Xe=a("null"),W_=a(xj),W$=a(At),Xa=a(Be),Xb=a("\\f"),Xc=a(Hi),Xd=a('\\"'),W9=a(xT),W8=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],W6=a("\\u00"),W3=[0,a(sf),72,32],W1=a("Yojson.Json_error"),W5=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],Xx=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],XA=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],Yy=a("unreachable due to the [is_subscope_call] test"),YA=a("unreachable due to the [is_subscope_input_var_def] test"),YB=a("]"),YC=a("["),YD=a(" ]): expected variable definition (function output), found: "),YE=a(fG),YF=a(w1),YG=a(" ]): expected variable definition (function output), found: end of tokens"),YH=a(fG),YI=a(w1),Yz=a("Unexpected event: "),YK=a("Missing function output variable definition."),YJ=a("Invalid start of function call."),Yx=a(P),Yw=a(O),YL=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],Ym=a(G5),Yn=a(fG),Yo=[0,[11,a(A4),0],a(A4)],Yp=a(G5),Yq=a(fG),Yr=[0,[11,a(DW),0],a(DW)],Ys=a(fG),Yt=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],Yu=[0,[11,a(FZ),0],a(FZ)],X8=[0,c0,a("VarComputation")],X9=[0,c0,a("FunCall")],X_=a(Cg),X$=a("inputs"),Ya=a(G9),Yb=[0,c0,a("SubScopeCall")],Yc=a("fun_calls"),Yd=a("value"),Ye=a(G9),Yf=a("pos"),Yg=a(O),Yh=a(Cg),Yi=a(P),Yj=a("fun_name"),XX=[0,cm,[0,[0,c0,a("Unit")],0]],XY=[0,cm,[0,[0,c0,a("Unembeddable")],0]],XZ=[0,c0,a("Bool")],X0=[0,c0,a("Money")],X1=[0,c0,a("Integer")],X2=[0,c0,a("Decimal")],X3=[0,c0,a("Date")],X4=[0,c0,a("Duration")],X5=[0,c0,a("Enum")],X6=[0,c0,a("Struct")],X7=[0,c0,a("Array")],XU=[0,[12,44,[17,[0,a("@ "),1,0],0]],a(",@ ")],XT=[0,[4,0,0,0,[12,32,[2,0,0]]],a("%d %s")],XQ=a("days"),XR=a("months"),XS=a("years"),XV=[0,[15,0],a(y2)],XW=a("empty duration"),XC=a("law_headings"),XD=a("end_column"),XE=a("end_line"),XF=a("start_column"),XG=a("start_line"),XH=a("filename"),XI=a("Runtime_ocaml.Runtime.EmptyError"),XJ=a("Runtime_ocaml.Runtime.AssertionFailed"),XK=a("Runtime_ocaml.Runtime.ConflictError"),XL=a("Runtime_ocaml.Runtime.UncomparableDurations"),XN=a("Runtime_ocaml.Runtime.ImpossibleDate"),XP=a("Runtime_ocaml.Runtime.NoValueProvided"),YN=a("Jsoo_runtime.Error.Exn"),YO=a(s$),Y6=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,bNK]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Y7=a("No rule applies in the given context to give a value to the variable"),Y8=a("A conflict happend between two rules giving a value to the variable"),Y9=a("A failure happened in the assertion"),YZ=a("Begin call"),Y0=a("End call"),Y1=a("Variable definition"),Y2=a("Decision taken"),YX=a(ac),YV=a("date_of_jsoo: invalid date"),YT=[0,a(GY),a(BI),a(DP)],YU=[0,a(GY),a(DP),a(BI)],alr=[0,a(bp),90,14,90,29,[0,a(bP),[0,a(bq),0]]],alk=[0,a(bp),eg,18,eg,64,[0,a(bP),[0,a(bq),0]]],all=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alj=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alf=[0,a(bp),87,14,87,53,[0,a(bP),[0,a(bq),0]]],alb=[0,a(bp),86,14,86,50,[0,a(bP),[0,a(bq),0]]],ak9=[0,a(bp),89,14,89,46,[0,a(bP),[0,a(bq),0]]],ak5=[0,a(bp),88,14,88,54,[0,a(bP),[0,a(bq),0]]],ak0=[0,a(bp),97,18,97,72,[0,a(bP),[0,a(bq),0]]],ak1=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akZ=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akU=[0,a(bp),93,18,93,67,[0,a(bP),[0,a(bq),0]]],akV=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akT=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akP=[0,a(bp),bt,14,bt,30,[0,a("Article L131-1"),[0,a(bP),[0,a(bq),0]]]],akM=[0,0],akN=[1,0],akO=[2,0],akQ=[0,a(bp),76,11,76,27,[0,a(bP),[0,a(bq),0]]],akL=[0,a(bp),76,11,76,27,[0,a(bP),[0,a(bq),0]]],akR=[0,a(ez),[0,a("enfants_\xc3\xa0_charge"),0]],akW=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akX=[0,a(ez),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],akS=[0,a(H),86,10,86,57,[0,a(L),[0,a(I),[0,a(B),0]]]],ak2=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak3=[0,a(ez),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],akY=[0,a(H),87,10,87,62,[0,a(L),[0,a(I),[0,a(B),0]]]],ak6=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak7=[0,a(ez),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],ak4=[0,a(H),88,10,88,27,[0,a(L),[0,a(I),[0,a(B),0]]]],ak_=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak$=[0,a(ez),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],ak8=[0,a(H),89,10,89,19,[0,a(L),[0,a(I),[0,a(B),0]]]],alc=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ald=[0,a(ez),[0,a("allocations_familiales.date_courante"),0]],ala=[0,a(H),92,10,92,23,[0,a(L),[0,a(I),[0,a(B),0]]]],alg=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alh=[0,a(ez),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],ale=[0,a(H),95,10,95,26,[0,a(L),[0,a(I),[0,a(B),0]]]],alm=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],aln=[0,a(ez),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],ali=[0,a(H),hp,10,hp,54,[0,a(L),[0,a(I),[0,a(B),0]]]],alo=[0,a(ez),[0,a(w_),[0,a(X),0]]],alp=[0,a(ez),[0,a(w_),[0,a(X),0]]],als=[0,a(bp),80,10,80,25,[0,a(bP),[0,a(bq),0]]],alq=[0,a(bp),80,10,80,25,[0,a(bP),[0,a(bq),0]]],alt=[0,a(ez),[0,a("i_montant_vers\xc3\xa9"),0]],akG=[0,a(bp),45,14,45,27,[0,a(gs),[0,a(bq),0]]],akF=a(p),akB=[0,a(bw),hn,14,hn,62,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],akw=[0,a(X),[0,a(ka),[0,a(P),0]]],akx=[0,a(X),[0,a(ka),0]],aky=[0,a(X),[0,a(ka),[0,a(O),0]]],akz=[0,a(X),[0,a(ka),0]],akA=a(p),aks=[0,a(bw),mp,14,mp,61,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ako=[0,a(bp),39,14,39,38,[0,a(gs),[0,a(bq),0]]],akj=[0,a(X),[0,a(kj),[0,a(P),0]]],akk=[0,a(X),[0,a(kj),0]],akl=[0,a(X),[0,a(kj),[0,a(O),0]]],akm=[0,a(X),[0,a(kj),0]],aki=a(p),akn=a(p),ake=[0,a(bp),37,14,37,32,[0,a(gs),[0,a(bq),0]]],akd=a(p),aj$=[0,a(em),mp,5,mp,43,[0,a("Article R521-4"),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aj0=[0,a(X),[0,a(fE),[0,a(P),0]]],aj1=[0,a(X),[0,a(fE),0]],aj2=[0,a(X),[0,a(fE),[0,a(O),0]]],aj3=[0,a(X),[0,a(fE),0]],aj4=a(eP),aj9=a(jR),aj_=a(cw),aj5=[0,a(X),[0,a(jN),[0,a(P),0]]],aj6=[0,a(X),[0,a(jN),0]],aj7=[0,a(X),[0,a(jN),[0,a(O),0]]],aj8=[0,a(X),[0,a(jN),0]],aka=[0,a(H),ia,11,ia,49,[0,a(L),[0,a(I),[0,a(B),0]]]],ajZ=[0,a(H),ia,11,ia,49,[0,a(L),[0,a(I),[0,a(B),0]]]],ajW=[0,a(em),eX,14,eX,46,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ajO=a(cY),ajP=[0,a(bw),no,5,277,41,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajL=a(cY),ajM=a(eP),ajN=a(cY),ajQ=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajJ=a(cY),ajK=[0,a(bw),265,5,rE,42,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajG=a(cY),ajH=a(eP),ajI=a(cY),ajR=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajS=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajF=[0,a(bw),mP,14,mP,55,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajE=a(p),ajr=[0,a(X),[0,a(bU),[0,a(P),0]]],ajs=[0,a(X),[0,a(bU),0]],ajt=[0,a(X),[0,a(bU),[0,a(O),0]]],aju=[0,a(X),[0,a(bU),0]],ajv=a(x),ajw=a("11"),ajx=a(hb),ajy=[0,a(bw),376,5,379,42,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ajq=a("0.0369"),ajz=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],aji=[0,a(X),[0,a(bU),[0,a(P),0]]],ajj=[0,a(X),[0,a(bU),0]],ajk=[0,a(X),[0,a(bU),[0,a(O),0]]],ajl=[0,a(X),[0,a(bU),0]],ajm=a(x),ajn=a(hb),ajo=[0,a(bw),385,5,sC,23,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ajh=a("0.0567"),ajp=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajA=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajg=[0,a(bw),22,14,22,40,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajc=[0,a(X),[0,a(jQ),[0,a(P),0]]],ajd=[0,a(X),[0,a(jQ),0]],aje=[0,a(X),[0,a(jQ),[0,a(O),0]]],ajf=[0,a(X),[0,a(jQ),0]],ajB=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajb=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ai7=a(x),ai8=[0,a(bw),353,5,y8,69,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ai9=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai4=[8,0],ai5=[0,a(a5),cZ,24,cZ,44,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ai6=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai_=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai3=[0,a(bw),18,14,18,34,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiZ=[0,a(bw),sz,14,sz,39,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiU=[0,a(X),[0,a(jS),[0,a(P),0]]],aiV=[0,a(X),[0,a(jS),0]],aiW=[0,a(X),[0,a(jS),[0,a(O),0]]],aiX=[0,a(X),[0,a(jS),0]],aiY=a(x),aiT=a(p),aiK=[0,a(X),[0,a(bU),[0,a(P),0]]],aiL=[0,a(X),[0,a(bU),0]],aiM=[0,a(X),[0,a(bU),[0,a(O),0]]],aiN=[0,a(X),[0,a(bU),0]],aiO=[0,a(bw),60,5,60,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiJ=a(s9),aiP=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiD=[0,a(X),[0,a(bU),[0,a(P),0]]],aiE=[0,a(X),[0,a(bU),0]],aiF=[0,a(X),[0,a(bU),[0,a(O),0]]],aiG=[0,a(X),[0,a(bU),0]],aiH=[0,a(bw),eg,5,eg,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiC=a(BY),aiI=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiw=[0,a(X),[0,a(bU),[0,a(P),0]]],aix=[0,a(X),[0,a(bU),0]],aiy=[0,a(X),[0,a(bU),[0,a(O),0]]],aiz=[0,a(X),[0,a(bU),0]],aiA=[0,a(bw),pq,5,pq,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiv=a(Ca),aiB=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aip=[0,a(X),[0,a(bU),[0,a(P),0]]],aiq=[0,a(X),[0,a(bU),0]],air=[0,a(X),[0,a(bU),[0,a(O),0]]],ais=[0,a(X),[0,a(bU),0]],ait=[0,a(bp),28,5,28,44,[0,a(gs),[0,a(bq),0]]],aio=a(p),aiu=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiQ=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ain=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aik=[0,a(em),cH,14,cH,41,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aii=a(cw),aij=a(cw),aia=[8,0],aib=[0,a(a5),iS,5,iS,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ah9=a(x),ah_=a(xs),ah$=a(p),aic=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ah6=[8,0],ah7=[0,a(a5),z3,5,z3,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ah3=a(x),ah4=a("0.2379"),ah5=a(p),ah8=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ah0=[8,0],ah1=[0,a(a5),Aq,5,Aq,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahX=a(x),ahY=a("0.2437"),ahZ=a(p),ah2=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahU=[8,0],ahV=[0,a(a5),hh,5,hh,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahR=a(x),ahS=a("0.2496"),ahT=a(p),ahW=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahO=[8,0],ahP=[0,a(a5),sT,5,sT,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahL=a(x),ahM=a("0.2555"),ahN=a(p),ahQ=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahI=[8,0],ahJ=[0,a(a5),Fo,5,Fo,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahF=a(x),ahG=a("0.2613"),ahH=a(p),ahK=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahC=[8,0],ahD=[0,a(a5),Cl,5,Cl,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahz=a(x),ahA=a("0.2672"),ahB=a(p),ahE=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahw=[8,0],ahx=[0,a(a5),oy,5,oy,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aht=a(x),ahu=a("0.2804"),ahv=a(p),ahy=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahq=[8,0],ahr=[0,a(a5),mI,5,mI,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahn=a(x),aho=a("0.2936"),ahp=a(p),ahs=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahk=[8,0],ahl=[0,a(a5),Ju,5,Ju,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahh=a(x),ahi=a("0.3068"),ahj=a(p),ahm=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aid=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahf=[8,0],ahg=[0,a(a5),j2,14,j2,50,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ahc=a(x),ahd=a(tB),ahe=a(p),aie=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag$=[0,a(bw),38,14,38,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ag8=a(x),ag9=a(tB),ag_=a(p),aha=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag6=[0,a(bw),79,14,79,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ag3=a(x),ag4=a(s9),ag5=a(p),ag7=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag1=[0,a(bw),bt,14,bt,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agY=a(x),agZ=a(BY),ag0=a(p),ag2=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahb=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agT=[0,a(bw),43,14,43,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agP=a(ab),agQ=a(ab),agR=a("0.41"),agS=a(p),agU=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agN=[0,a(bw),84,14,84,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agJ=a(ab),agK=a(ab),agL=a("0.205"),agM=a(p),agO=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agH=[0,a(bw),dl,14,dl,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agD=a(ab),agE=a(ab),agF=a("0.1025"),agG=a(p),agI=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agy=[0,a(bw),mn,5,mn,43,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agx=a("0.20234"),agz=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agv=[0,a(bw),232,5,233,46,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agu=a("0.10117"),agw=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ags=[0,a(bw),bu,5,bu,43,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agr=a("0.05059"),agt=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agj=a(cY),agk=[0,a(bw),173,5,174,68,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agg=a(cY),agh=a(eP),agi=a(cY),agl=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],age=a(cY),agf=[0,a(bw),sH,5,166,68,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agb=a(cY),agc=a(eP),agd=a(cY),agm=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],agn=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aga=[0,a(bw),Jm,14,Jm,34,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],af$=a(p),ago=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],af_=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],af1=[0,a(X),[0,a(fd),[0,a(P),0]]],af2=[0,a(X),[0,a(fd),0]],af3=[0,a(X),[0,a(fd),[0,a(O),0]]],af4=[0,a(X),[0,a(fd),0]],af5=[0,a(b8),hm,5,Ae,58,[0,a(Ah),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],af6=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afS=[0,a(X),[0,a(kF),[0,a(P),0]]],afT=[0,a(X),[0,a(kF),0]],afU=[0,a(X),[0,a(kF),[0,a(O),0]]],afV=[0,a(X),[0,a(kF),0]],afW=[0,a(X),[0,a(fd),[0,a(P),0]]],afX=[0,a(X),[0,a(fd),0]],afY=[0,a(X),[0,a(fd),[0,a(O),0]]],afZ=[0,a(X),[0,a(fd),0]],af0=[0,a(b8),IC,5,300,58,[0,a(Ah),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],af7=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afR=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],af8=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afQ=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afH=[8,0],afI=a(x),afJ=[0,a(a5),GQ,6,GQ,71,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],afK=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afF=a(x),afG=[0,a(b8),sJ,5,407,72,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],afL=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afM=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afD=a(ab),afE=[0,a(b8),eg,5,eg,70,[0,a(EO),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],afN=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afC=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afu=[8,0],afv=[0,a(a5),dP,5,251,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],afr=a(p),afs=a("0.145"),aft=a(p),afw=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afo=[8,0],afp=[0,a(a5),yU,5,Ih,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],afl=a(p),afm=a("0.1393"),afn=a(p),afq=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afi=[8,0],afj=[0,a(a5),rx,5,rE,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aff=a(p),afg=a("0.1335"),afh=a(p),afk=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afc=[8,0],afd=[0,a(a5),274,5,no,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ae$=a(p),afa=a("0.1278"),afb=a(p),afe=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ae8=[8,0],ae9=[0,a(a5),282,5,mP,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ae5=a(p),ae6=a("0.122"),ae7=a(p),ae_=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ae2=[8,0],ae3=[0,a(a5),290,5,tn,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeZ=a(p),ae0=a("0.1163"),ae1=a(p),ae4=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeW=[8,0],aeX=[0,a(a5),298,5,IC,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeT=a(p),aeU=a("0.1105"),aeV=a(p),aeY=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeQ=[8,0],aeR=[0,a(a5),306,5,307,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeN=a(p),aeO=a("0.0976"),aeP=a(p),aeS=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeK=[8,0],aeL=[0,a(a5),314,5,Ae,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeH=a(p),aeI=a("0.0847"),aeJ=a(p),aeM=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeE=[8,0],aeF=[0,a(a5),322,5,ev,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeB=a(p),aeC=a("0.0717"),aeD=a(p),aeG=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aey=[8,0],aez=[0,a(a5),s2,5,s2,49,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aev=a(p),aew=a("5728"),aex=a(p),aeA=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afx=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aet=[8,0],aeu=[0,a(a5),j6,14,j6,49,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],aeq=a(p),aer=a(xz),aes=a(p),afy=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aen=a(x),aeo=[0,a(bw),362,5,rv,71,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],aem=a(xz),aep=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ael=[0,a(bw),hh,29,hh,64,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],aek=a(p),aeg=[0,a(em),iw,14,iw,34,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ad$=[0,a(X),[0,a(fE),[0,a(P),0]]],aea=[0,a(X),[0,a(fE),0]],aeb=[0,a(X),[0,a(fE),[0,a(O),0]]],aec=[0,a(X),[0,a(fE),0]],aed=a(eP),aee=a(jR),aef=a(cw),ad_=a(cw),ad6=[0,a(em),Id,14,Id,34,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],adZ=[8,0],ad0=[0,a(a5),CP,5,CP,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adW=a(ab),adX=a(B$),adY=a(p),ad1=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adT=[8,0],adU=[0,a(a5),n7,5,n7,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adQ=a(ab),adR=a("0.0539"),adS=a(p),adV=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adN=[8,0],adO=[0,a(a5),h_,5,h_,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adK=a(ab),adL=a("0.0615"),adM=a(p),adP=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adH=[8,0],adI=[0,a(a5),Co,5,Co,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adE=a(ab),adF=a("0.069"),adG=a(p),adJ=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adB=[8,0],adC=[0,a(a5),L1,5,L1,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ady=a(ab),adz=a("0.0766"),adA=a(p),adD=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adv=[8,0],adw=[0,a(a5),gH,5,gH,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ads=a(ab),adt=a("0.0842"),adu=a(p),adx=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adp=[8,0],adq=[0,a(a5),pC,5,pC,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adm=a(ab),adn=a("0.0918"),ado=a(p),adr=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adj=[8,0],adk=[0,a(a5),md,5,md,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adg=a(ab),adh=a("0.1089"),adi=a(p),adl=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],add=[8,0],ade=[0,a(a5),zz,5,zz,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ada=a(ab),adb=a("0.1259"),adc=a(p),adf=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac9=[8,0],ac_=[0,a(a5),wO,5,wO,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ac6=a(ab),ac7=a("0.143"),ac8=a(p),ac$=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ad2=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac5=[0,a(a5),mt,14,mt,59,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ac2=a(ab),ac3=a(s9),ac4=a(p),acY=[0,a(a5),m6,14,m6,67,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],acU=a(ak),acV=a(ak),acW=a(B$),acX=a(p),acN=a(x),acO=[0,a(b8),420,6,421,72,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],acP=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acI=[0,a(cF),[0,a(id),[0,a(P),0]]],acJ=[0,a(cF),[0,a(id),0]],acK=[0,a(cF),[0,a(id),[0,a(O),0]]],acL=[0,a(cF),[0,a(id),0]],acM=[0,a(b8),o6,5,eX,59,[0,a(EO),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],acQ=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acH=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acR=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acG=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acA=a(x),acB=[0,a(b8),tg,5,to,71,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],acC=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acz=[0,a(bp),31,9,31,32,[0,a(gs),[0,a(bq),0]]],acD=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acy=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acs=[0,a(a5),23,5,23,69,[0,a(EB),[0,a(gO),0]]],acq=a(Lr),acr=a("5628600"),act=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],aco=[0,a(a5),56,5,56,69,[0,a(wZ),[0,a(gO),0]]],acm=a(L8),acn=a("5684900"),acp=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],ack=[0,a(a5),89,5,89,69,[0,a(F7),[0,a(gO),0]]],aci=a(DV),acj=a("5775900"),acl=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acg=[0,a(a5),hp,5,hp,69,[0,a(cQ),[0,a(Kj),[0,a(gO),0]]]],ace=a(FH),acf=a("5827900"),ach=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acu=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acd=[0,a(bw),HJ,14,HJ,30,[0,a(KI),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],acb=a(IF),acc=a("5595000"),ab7=[0,a(a5),30,5,30,69,[0,a(EB),[0,a(gO),0]]],ab5=a(Lr),ab6=a("7877000"),ab8=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab3=[0,a(a5),63,5,63,69,[0,a(wZ),[0,a(gO),0]]],ab1=a(L8),ab2=a("7955800"),ab4=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abZ=[0,a(a5),96,5,96,69,[0,a(F7),[0,a(gO),0]]],abX=a(DV),abY=a("8083100"),ab0=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abV=[0,a(a5),Dg,5,Dg,69,[0,a(cQ),[0,a(Kj),[0,a(gO),0]]]],abT=a(FH),abU=a("8155800"),abW=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab9=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abS=[0,a(bw),gt,14,gt,31,[0,a(KI),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],abQ=a(IF),abR=a("7830000"),abM=[0,a(bp),34,14,34,36,[0,a(gs),[0,a(bq),0]]],abN=[0,a(H),ny,11,ny,33,[0,a(L),[0,a(I),[0,a(B),0]]]],abL=[0,a(H),ny,11,ny,33,[0,a(L),[0,a(I),[0,a(B),0]]]],abI=[0,a(b8),75,14,75,64,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],abE=[0,a(cF),[0,a(dG),[0,a(P),0]]],abF=[0,a(cF),[0,a(dG),0]],abG=[0,a(cF),[0,a(dG),[0,a(O),0]]],abH=[0,a(cF),[0,a(dG),0]],abz=[0,a(em),83,19,83,69,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],abA=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aby=[0,a(em),56,14,56,41,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],abx=a("14"),abB=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],abw=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],abr=[0,a(bp),33,14,33,40,[0,a(gs),[0,a(bq),0]]],abl=[0,a(H),s_,14,s_,46,[0,a(L),[0,a(I),[0,a(B),0]]]],abh=[0,a(H),Dr,14,Dr,56,[0,a(L),[0,a(I),[0,a(B),0]]]],abg=[1,0],abc=[0,a(H),rM,14,rM,50,[0,a(L),[0,a(I),[0,a(B),0]]]],aa8=[0,a(H),J3,14,J3,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aa2=[0,a(em),64,14,64,44,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aa1=a(ak),aaX=[0,a(bw),tn,14,tn,35,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aaW=a(ak),aaR=[0,a(b8),yU,5,Ih,56,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaQ=[1,0],aaS=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaL=[0,a(b8),269,5,270,48,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaK=[0,0],aaM=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaJ=[0,a(b8),mn,5,mn,70,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaI=[0,0],aaN=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaH=[0,a(b8),Lj,5,Lj,69,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaG=[0,0],aaO=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaF=[0,a(b8),F5,5,F5,60,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaE=[0,0],aaP=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaT=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaD=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaz=[0,a(b8),sb,5,sb,70,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aay=[1,0],aaA=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaw=[0,a(b8),on,5,ki,56,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aav=[2,0],aax=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aar=[0,a(b8),263,5,264,48,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaq=[0,0],aas=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aap=[0,a(b8),l9,5,l9,69,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aao=[0,0],aat=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aan=[0,a(b8),Lm,5,Lm,60,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aam=[0,0],aau=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaB=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aal=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaC=[0,a(X),[0,a(fE),0]],aaU=[0,a(X),[0,a("versement"),0]],aaY=[0,a(H),gU,11,gU,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aaV=[0,a(H),gU,11,gU,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aaZ=[0,a(X),[0,a("nombre_enfants_l521_1"),0]],aa3=[0,a(H),oG,11,oG,41,[0,a(L),[0,a(I),[0,a(B),0]]]],aa0=[0,a(H),oG,11,oG,41,[0,a(L),[0,a(I),[0,a(B),0]]]],aa4=[0,a(X),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],aa5=[0,a(X),[0,a(F_),[0,a(rV),0]]],aa6=[0,a(X),[0,a(F_),[0,a(rV),0]]],aa9=[0,a(H),ne,3,ne,7,[0,a(L),[0,a(I),[0,a(B),0]]]],aa_=[0,a(X),[0,a("bmaf.date_courante"),0]],aa7=[0,a(ex),5,10,5,23,[0,a(b7),0]],aa$=[0,a(X),[0,a(A0),[0,a(gP),0]]],aba=[0,a(X),[0,a(A0),[0,a(gP),0]]],abd=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abe=[0,a(X),[0,a(Gm),0]],abb=[0,a(H),63,10,63,23,[0,a(bE),[0,a(I),[0,a(B),0]]]],abi=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abj=[0,a(X),[0,a(I5),0]],abf=[0,a(H),64,10,64,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],abm=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abn=[0,a(X),[0,a(Hx),0]],abk=[0,a(H),65,10,65,19,[0,a(bE),[0,a(I),[0,a(B),0]]]],abo=[0,a(X),[0,a(nD),[0,a(cF),0]]],abp=[0,a(X),[0,a(nD),[0,a(cF),0]]],abs=[0,a(H),iw,3,iw,21,[0,a(L),[0,a(I),[0,a(B),0]]]],abt=[0,a(X),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],abq=[0,a(H),80,10,80,17,[0,a(L),[0,a(I),[0,a(B),0]]]],abu=[0,a(X),[0,a(CE),[0,a(r0),0]]],abv=[0,a(X),[0,a(CE),[0,a(r0),0]]],abC=[0,a(X),[0,a(fd),0]],abJ=[0,a(H),96,11,96,61,[0,a(L),[0,a(I),[0,a(B),0]]]],abD=[0,a(H),96,11,96,61,[0,a(L),[0,a(I),[0,a(B),0]]]],abK=[0,a(X),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],abO=[0,a(X),[0,a(kF),0]],ab_=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abP=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab$=[0,a(X),[0,a("plafond_II_d521_3"),0]],acv=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],aca=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acw=[0,a(X),[0,a("plafond_I_d521_3"),0]],acE=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acx=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acF=[0,a(X),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],acS=[0,a(X),[0,a(jS),0]],acZ=[0,a(H),l7,11,l7,64,[0,a(L),[0,a(I),[0,a(B),0]]]],acT=[0,a(H),l7,11,l7,64,[0,a(L),[0,a(I),[0,a(B),0]]]],ac0=[0,a(X),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],ad3=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac1=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ad4=[0,a(X),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],ad7=[0,a(H),kb,11,kb,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad5=[0,a(H),kb,11,kb,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad8=[0,a(X),[0,a("nombre_total_enfants"),0]],aeh=[0,a(H),iH,11,iH,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad9=[0,a(H),iH,11,iH,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aei=[0,a(X),[0,a("nombre_moyen_enfants"),0]],afz=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aej=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afA=[0,a(X),[0,a("montant_initial_base_premier_enfant"),0]],afO=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afB=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afP=[0,a(X),[0,a("droit_ouvert_base"),0]],af9=[0,a(X),[0,a(bU),0]],agp=[0,a(X),[0,a(ka),0]],agA=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agq=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agB=[0,a(X),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],agV=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agC=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agW=[0,a(X),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],aif=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agX=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aig=[0,a(X),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],ail=[0,a(H),o2,11,o2,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aih=[0,a(H),o2,11,o2,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aim=[0,a(X),[0,a("rapport_enfants_total_moyen"),0]],aiR=[0,a(X),[0,a(jQ),0]],ai0=[0,a(H),e8,11,e8,36,[0,a(L),[0,a(I),[0,a(B),0]]]],aiS=[0,a(H),e8,11,e8,36,[0,a(L),[0,a(I),[0,a(B),0]]]],ai1=[0,a(X),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ai$=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai2=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aja=[0,a(X),[0,a("montant_initial_base"),0]],ajC=[0,a(X),[0,a(jN),0]],ajT=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajD=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajU=[0,a(X),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],ajX=[0,a(H),kK,11,kK,43,[0,a(L),[0,a(I),[0,a(B),0]]]],ajV=[0,a(H),kK,11,kK,43,[0,a(L),[0,a(I),[0,a(B),0]]]],ajY=[0,a(X),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],akb=[0,a(X),[0,a(kj),0]],akf=[0,a(H),nG,11,nG,29,[0,a(L),[0,a(I),[0,a(B),0]]]],akc=[0,a(H),nG,11,nG,29,[0,a(L),[0,a(I),[0,a(B),0]]]],akg=[0,a(X),[0,a("montant_vers\xc3\xa9_base"),0]],akp=[0,a(H),pl,11,pl,35,[0,a(L),[0,a(I),[0,a(B),0]]]],akh=[0,a(H),pl,11,pl,35,[0,a(L),[0,a(I),[0,a(B),0]]]],akq=[0,a(X),[0,a("montant_vers\xc3\xa9_majoration"),0]],akt=[0,a(H),oz,11,oz,58,[0,a(L),[0,a(I),[0,a(B),0]]]],akr=[0,a(H),oz,11,oz,58,[0,a(L),[0,a(I),[0,a(B),0]]]],aku=[0,a(X),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],akC=[0,a(H),nm,11,nm,59,[0,a(L),[0,a(I),[0,a(B),0]]]],akv=[0,a(H),nm,11,nm,59,[0,a(L),[0,a(I),[0,a(B),0]]]],akD=[0,a(X),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],akH=[0,a(H),eg,10,eg,23,[0,a(L),[0,a(I),[0,a(B),0]]]],akE=[0,a(H),eg,10,eg,23,[0,a(L),[0,a(I),[0,a(B),0]]]],akI=[0,a(X),[0,a("montant_vers\xc3\xa9"),0]],akJ=[0,a(b8),z6,5,234,6,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aag=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(Ab),[0,a(LE),[0,a(za),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]]]],aah=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aac=[0,a(b8),60,5,62,32,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aad=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aab=[0,a(b8),49,5,50,50,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aae=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaf=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aai=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaa=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaj=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$$=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$7=[0,a(b8),68,5,71,57,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],$8=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$6=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$9=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$5=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$1=[0,a(em),xq,18,xq,41,[0,a(yy),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(dk),[0,a(ai),0]]]]]]],$Z=a(pB),$0=a(o4),$2=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$Y=[0,a(em),31,14,31,30,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],$W=a(pB),$X=a(o4),$L=[0,0],$N=[1,0],$O=[2,0],$P=[3,0],$Q=[4,0],$R=[5,0],$M=[0,a(b8),y8,5,hh,30,[0,a(Kb),[0,a(Hg),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],$S=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$K=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$E=[0,a(H),69,14,69,28,[0,a(bE),[0,a(I),[0,a(B),0]]]],$A=[0,a(H),70,14,70,32,[0,a(bE),[0,a(I),[0,a(B),0]]]],$w=[0,a(em),21,14,21,26,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],$v=a(xM),$x=[0,a(H),61,10,61,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$u=[0,a(H),61,10,61,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$y=[0,a(cF),[0,a(HF),0]],$B=[0,a(H),66,3,66,7,[0,a(bE),[0,a(I),[0,a(B),0]]]],$C=[0,a(cF),[0,a(LL),0]],$z=[0,a(b0),9,10,9,23,[0,a(B),[0,a(aZ),0]]],$F=[0,a(H),66,3,66,7,[0,a(bE),[0,a(I),[0,a(B),0]]]],$G=[0,a(cF),[0,a(KK),0]],$D=[0,a(b0),10,10,10,19,[0,a(B),[0,a(aZ),0]]],$H=[0,a(cF),[0,a(gz),[0,a(is),0]]],$I=[0,a(cF),[0,a(gz),[0,a(is),0]]],$T=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$J=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$U=[0,a(cF),[0,a(w0),0]],$3=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$V=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$4=[0,a(cF),[0,a(Am),0]],$_=[0,a(cF),[0,a(id),0]],aak=[0,a(cF),[0,a(dG),0]],$q=[0,a(ex),28,5,29,34,[0,a(B2),[0,a(b7),0]]],$p=a(yG),$r=[0,a(ex),6,10,6,17,[0,a(b7),0]],$n=[0,a(ex),48,5,49,34,[0,a(AL),[0,a(b7),0]]],$m=a(yn),$o=[0,a(ex),6,10,6,17,[0,a(b7),0]],$k=[0,a(ex),64,5,65,34,[0,a(JI),[0,a(b7),0]]],$j=a(Jz),$l=[0,a(ex),6,10,6,17,[0,a(b7),0]],$h=[0,a(ex),82,5,83,34,[0,a(x2),[0,a(b7),0]]],$g=a(Jt),$i=[0,a(ex),6,10,6,17,[0,a(b7),0]],$s=[0,a(ex),6,10,6,17,[0,a(b7),0]],$f=[0,a(ex),6,10,6,17,[0,a(b7),0]],$t=[0,a(gP),[0,a(al),0]],_5=[6,0],_7=[0,0],_8=[1,0],_9=[2,0],__=[3,0],_$=[4,0],$a=[5,0],$b=[7,0],_6=[0,a(b0),29,5,38,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],_4=a(xW),$c=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_1=[8,0],_2=[0,a(b0),47,5,49,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],_0=a(GH),_3=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_Q=[6,0],_S=[0,0],_T=[1,0],_U=[2,0],_V=[3,0],_W=[4,0],_X=[5,0],_Y=[7,0],_R=[0,a(b0),68,5,77,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],_P=a(IG),_Z=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_M=[8,0],_N=[0,a(b0),86,5,88,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],_L=a(EU),_O=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_B=[6,0],_D=[0,0],_E=[1,0],_F=[2,0],_G=[3,0],_H=[4,0],_I=[5,0],_J=[7,0],_C=[0,a(b0),bc,5,hp,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],_A=a(Bi),_K=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_x=[8,0],_y=[0,a(b0),eX,5,cu,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],_w=a(Li),_z=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_m=[6,0],_o=[0,0],_p=[1,0],_q=[2,0],_r=[3,0],_s=[4,0],_t=[5,0],_u=[7,0],_n=[0,a(b0),gU,5,FS,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],_l=a(By),_v=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_i=[8,0],_j=[0,a(b0),sH,5,j6,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],_h=a(x5),_k=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z9=[6,0],Z$=[0,0],_a=[1,0],_b=[2,0],_c=[3,0],_d=[4,0],_e=[5,0],_f=[7,0],Z_=[0,a(b0),mt,5,m6,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],Z8=a(HZ),_g=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z5=[8,0],Z6=[0,a(b0),l9,5,zj,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],Z4=a(DH),Z7=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],$d=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z3=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],$e=[0,a(is),[0,a(Ic),0]],Z0=[0,a(bp),12,14,12,25,[0,a(gs),[0,a(bq),0]]],ZV=[2,0],ZW=a(p),ZX=a(p),ZY=[1,0],ZZ=a("-1"),Z1=[0,a(H),81,10,81,21,[0,a(L),[0,a(I),[0,a(B),0]]]],ZU=[0,a(H),81,10,81,21,[0,a(L),[0,a(I),[0,a(B),0]]]],Z2=[0,a(r0),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],ZR=[0,a(em),78,14,78,41,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ZQ=a(hb),ZS=[0,a(H),77,10,77,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ZP=[0,a(H),77,10,77,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ZT=[0,a(rV),[0,a(fd),0]],ZG=a(rG),ZH=a(rQ),ZI=a(sm),ZJ=a(sX),ZK=a(sM),ZL=a(rS),ZM=a(r8),ZN=a(s6),ZO=[0,a("Enfant"),0],Zw=a(n6),Zy=a(nq),Zz=a(l0),ZA=a(KF),ZB=a(zr),ZC=a(pM),ZD=a(Kg),ZE=a(mG),ZF=a(nC),Zx=[0,a(Jw),0],Zn=a(ni),Zp=a(X),Zq=a(rO),Zr=a(oX),Zs=a(CW),Zt=a(iR),Zu=a(BE),Zv=a(Hw),Zo=[0,a(Er),0],Zi=a("Compl\xc3\xa8te"),Zk=a("Partag\xc3\xa9e"),Zl=a("Z\xc3\xa9ro"),Zj=[0,a("PriseEnCompte"),0],Ze=a(j1),Zg=a(jT),Zh=a(JL),Zf=[0,a(Ke),0],Y_=a(A2),Za=a(C7),Zb=a(hc),Zc=a(D$),Zd=a(zn),Y$=[0,a(Gt),0],amt=a(ac),al5=a(n6),al6=a(nq),al7=a(FP),al8=a(l0),al9=a(nC),al_=a(D5),al$=a(yf),ama=a(pM),amb=a(mG),amd=[7,0],ame=[5,0],amf=[4,0],amg=[6,0],amh=[8,0],ami=[2,0],amj=[3,0],amk=[1,0],aml=[0,0],amc=[0,[11,a(be),[2,0,[11,a(BC),0]]],a(xX)],alO=a(xg),alP=a(y1),alQ=a(oX),alR=a(DE),alS=a(iR),alT=a(X),alU=a(ru),alV=a(ni),alX=[0,0],alY=[2,0],alZ=[1,0],al0=[5,0],al1=[6,0],al2=[3,0],al3=[7,0],al4=[4,0],alW=[0,[11,a(be),[2,0,[11,a(C8),0]]],a(Es)],alH=a(tt),alI=a(j1),alJ=a(jT),alL=[1,0],alM=[0,0],alN=[2,0],alK=[0,[11,a(be),[2,0,[11,a(yO),0]]],a(FU)],alw=a(hc),alx=a(rW),aly=a(sF),alz=a(s4),alA=a(rK),alC=[4,0],alD=[3,0],alE=[0,0],alF=[1,0],alG=[2,0],alB=[0,[11,a(be),[2,0,[11,a(Cb),0]]],a(A_)],alu=[0,a(BR),a(nK),a(gz),a(KJ),a(L$),a(xk),a(yj)],alv=[0,a(gz),a(xk),a(L$),a(yj),a(nK),a(BR),a(KJ)],amB=a("AllocationsFamilialesLib"),bIT=[0,a(f$),zZ,14,zZ,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],bIM=a(p),bIN=a(p),bIS=a(cw),bIO=[0,a(a6),[0,a(a7),[0,a(P),0]]],bIP=[0,a(a6),[0,a(a7),0]],bIQ=[0,a(a6),[0,a(a7),[0,a(O),0]]],bIR=[0,a(a6),[0,a(a7),0]],bII=[0,a(c),Gb,14,Gb,63,[0,a(bv),[0,a(d),0]]],bIE=[0,a(c),CQ,14,CQ,25,[0,a(bv),[0,a(d),0]]],bIy=[0,a(c),sy,5,sy,70,[0,a(bv),[0,a(d),0]]],bIu=[0,a(c),GV,14,GV,58,[0,a(bv),[0,a(d),0]]],bIq=[0,a(c),LA,14,LA,64,[0,a(bv),[0,a(d),0]]],bIm=[0,a(c),ti,14,ti,54,[0,a(bv),[0,a(d),0]]],bIi=[0,a(c),Ia,14,Ia,51,[0,a(bv),[0,a(d),0]]],bIc=[0,a(c),FL,14,FL,59,[0,a(bv),[0,a(d),0]]],bH_=[0,a(c),EG,14,EG,38,[0,a(bv),[0,a(d),0]]],bH6=[0,a(c),JH,14,JH,44,[0,a(bv),[0,a(d),0]]],bH2=[0,a(c),Du,14,Du,34,[0,a(bv),[0,a(d),0]]],bHY=[0,a(c),JO,14,JO,31,[0,a(bv),[0,a(d),0]]],bHU=[0,a(c),JV,14,JV,48,[0,a(bv),[0,a(d),0]]],bHV=[0,a(c),lR,11,lR,45,[0,a(bv),[0,a(d),0]]],bHT=[0,a(c),lR,11,lR,45,[0,a(bv),[0,a(d),0]]],bHW=[0,a(cP),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],bHZ=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH0=[0,a(cP),[0,a("calculette.m\xc3\xa9nage"),0]],bHX=[0,a(c),io,10,io,16,[0,a(as),[0,a(d),0]]],bH3=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH4=[0,a(cP),[0,a("calculette.demandeur"),0]],bH1=[0,a(c),ng,10,ng,19,[0,a(as),[0,a(d),0]]],bH7=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH8=[0,a(cP),[0,a("calculette.informations_calcul"),0]],bH5=[0,a(c),m4,10,m4,29,[0,a(as),[0,a(d),0]]],bH$=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bIa=[0,a(cP),[0,a("calculette.date_courante"),0]],bH9=[0,a(c),nA,10,nA,23,[0,a(as),[0,a(d),0]]],bId=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bIe=[0,a(cP),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bIb=[0,a(c),pg,10,pg,44,[0,a(as),[0,a(d),0]]],bIf=[0,a(cP),[0,a(C6),[0,a(a6),0]]],bIg=[0,a(cP),[0,a(C6),[0,a(a6),0]]],bIj=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIk=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],bIh=[0,a(c),io,10,io,16,[0,a(as),[0,a(d),0]]],bIn=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIo=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],bIl=[0,a(c),ng,10,ng,19,[0,a(as),[0,a(d),0]]],bIr=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIs=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.informations_calcul"),0]],bIp=[0,a(c),m4,10,m4,29,[0,a(as),[0,a(d),0]]],bIv=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIw=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],bIt=[0,a(c),nA,10,nA,23,[0,a(as),[0,a(d),0]]],bIz=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIA=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bIx=[0,a(c),pg,10,pg,44,[0,a(as),[0,a(d),0]]],bIB=[0,a(cP),[0,a(x1),[0,a(a6),0]]],bIC=[0,a(cP),[0,a(x1),[0,a(a6),0]]],bIF=[0,a(c),j_,10,j_,21,[0,a(bv),[0,a(d),0]]],bID=[0,a(c),j_,10,j_,21,[0,a(bv),[0,a(d),0]]],bIG=[0,a(cP),[0,a(o_),0]],bIJ=[0,a(c),mM,11,mM,60,[0,a(bv),[0,a(d),0]]],bIH=[0,a(c),mM,11,mM,60,[0,a(bv),[0,a(d),0]]],bIK=[0,a(cP),[0,a(kw),0]],bIU=[0,a(c),oI,10,oI,21,[0,a(bv),[0,a(d),0]]],bIL=[0,a(c),oI,10,oI,21,[0,a(bv),[0,a(d),0]]],bIV=[0,a(cP),[0,a("aide_finale"),0]],bHP=[0,a(aT),Cp,14,Cp,33,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bHO=a(p),bHG=[0,a(az),[0,a(a7),[0,a(P),0]]],bHH=[0,a(az),[0,a(a7),0]],bHI=[0,a(az),[0,a(a7),[0,a(O),0]]],bHJ=[0,a(az),[0,a(a7),0]],bHK=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHL=[0,a(aA),[0,a(a7),0]],bHM=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHN=[0,a(aA),[0,a(a7),0]],bHC=[0,a(aT),C3,14,C3,36,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bHm=[0,a(az),[0,a(a7),[0,a(P),0]]],bHn=[0,a(az),[0,a(a7),0]],bHo=[0,a(az),[0,a(a7),[0,a(O),0]]],bHp=[0,a(az),[0,a(a7),0]],bHq=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHr=[0,a(aA),[0,a(a7),0]],bHs=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHt=[0,a(aA),[0,a(a7),0]],bHu=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHv=[0,a(aA),[0,a(a7),0]],bHw=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHx=[0,a(aA),[0,a(a7),0]],bHy=[0,a(az),[0,a(a7),[0,a(P),0]]],bHz=[0,a(az),[0,a(a7),0]],bHA=[0,a(az),[0,a(a7),[0,a(O),0]]],bHB=[0,a(az),[0,a(a7),0]],bHe=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHf=[0,a(aA),[0,a(a7),0]],bHg=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHh=[0,a(aA),[0,a(a7),0]],bHi=[0,a(az),[0,a(a7),[0,a(P),0]]],bHj=[0,a(az),[0,a(a7),0]],bHk=[0,a(az),[0,a(a7),[0,a(O),0]]],bHl=[0,a(az),[0,a(a7),0]],bHD=[0,a(c),pi,10,pi,32,[0,a(as),[0,a(d),0]]],bHd=[0,a(c),pi,10,pi,32,[0,a(as),[0,a(d),0]]],bHa=[0,a(aT),Iv,14,Iv,25,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bG8=[0,a(c),As,14,As,63,[0,a(as),[0,a(d),0]]],bG2=[0,a(c),w4,14,w4,62,[0,a(as),[0,a(d),0]]],bGY=[0,a(c),ET,14,ET,53,[0,a(as),[0,a(d),0]]],bGU=[0,a(c),Io,5,Io,65,[0,a(as),[0,a(d),0]]],bGQ=[0,a(c),Fj,14,Fj,68,[0,a(as),[0,a(d),0]]],bGM=[0,a(c),y9,14,y9,66,[0,a(as),[0,a(d),0]]],bGG=[0,a(c),Ax,14,Ax,68,[0,a(as),[0,a(d),0]]],bGH=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGF=[0,a(c),tE,14,tE,68,[0,a(as),[0,a(d),0]]],bGI=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGB=[0,a(aT),I$,14,I$,58,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bGA=[0,0],bGw=[0,a(c),Iy,14,Iy,64,[0,a(as),[0,a(d),0]]],bGq=[0,a(aT),cg,14,cg,50,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bGn=[2,0],bGo=[1,0],bGp=[2,0],bGj=[0,a(c),Lp,14,Lp,54,[0,a(as),[0,a(d),0]]],bGf=[0,a(c),H2,14,H2,45,[0,a(as),[0,a(d),0]]],bGb=[0,a(c),EZ,14,EZ,66,[0,a(as),[0,a(d),0]]],bF9=[0,a(c),Ii,14,Ii,60,[0,a(as),[0,a(d),0]]],bF5=[0,a(c),E7,14,E7,58,[0,a(as),[0,a(d),0]]],bFZ=[0,a(c),GL,14,GL,60,[0,a(as),[0,a(d),0]]],bF0=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFY=[0,a(c),Ky,14,Ky,60,[0,a(as),[0,a(d),0]]],bF1=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFU=[0,a(c),GM,14,GM,56,[0,a(as),[0,a(d),0]]],bFO=[0,a(c),Im,14,Im,67,[0,a(as),[0,a(d),0]]],bFK=[0,a(c),xm,14,xm,63,[0,a(as),[0,a(d),0]]],bFG=[0,a(c),yg,14,yg,60,[0,a(as),[0,a(d),0]]],bFA=[0,a(c),sU,14,sU,65,[0,a(as),[0,a(d),0]]],bFw=[0,a(aT),io,5,io,74,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bFs=[0,a(c),Dy,14,Dy,55,[0,a(as),[0,a(d),0]]],bFo=[0,a(c),A5,14,A5,52,[0,a(as),[0,a(d),0]]],bFk=[0,a(c),xP,14,xP,59,[0,a(as),[0,a(d),0]]],bFl=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFm=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bFj=[0,a(c),h_,10,h_,23,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFp=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bFn=[0,a(c),II,10,II,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFt=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFu=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],bFr=[0,a(c),Fq,10,Fq,19,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFx=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFy=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],bFv=[0,a(c),tg,10,tg,47,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFB=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFC=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.informations_calcul"),0]],bFz=[0,a(c),to,10,to,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFD=[0,a(a6),[0,a(wJ),[0,a(b2),0]]],bFE=[0,a(a6),[0,a(wJ),[0,a(b2),0]]],bFH=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFI=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],bFF=[0,a(c),FO,10,FO,16,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFL=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFM=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],bFJ=[0,a(c),oy,10,oy,19,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFP=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFQ=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bFN=[0,a(c),sC,17,sC,30,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFR=[0,a(a6),[0,a(Kn),[0,a(cf),0]]],bFS=[0,a(a6),[0,a(Kn),[0,a(cf),0]]],bFV=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFW=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],bFT=[0,a(c),sI,10,sI,25,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF2=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF3=[0,a(a6),[0,a("calcul_allocation_logement.informations_calcul"),0]],bFX=[0,a(c),CB,10,CB,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF6=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF7=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bF4=[0,a(c),LN,10,LN,27,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF_=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF$=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],bF8=[0,a(c),Mi,10,Mi,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGc=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGd=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],bGa=[0,a(c),Ig,10,Ig,35,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGg=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGh=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],bGe=[0,a(c),A7,10,A7,14,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGk=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGl=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],bGi=[0,a(c),Db,10,Db,23,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGr=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGs=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],bGm=[0,a(c),F1,10,F1,19,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGt=[0,a(a6),[0,a(La),[0,a(az),0]]],bGu=[0,a(a6),[0,a(La),[0,a(az),0]]],bGx=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGy=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],bGv=[0,a(c),Ac,10,Ac,25,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGC=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGD=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bGz=[0,a(c),yR,10,yR,19,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGJ=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGK=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.informations_calcul"),0]],bGE=[0,a(c),rD,10,rD,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGN=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGO=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bGL=[0,a(c),KX,10,KX,27,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGR=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGS=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bGP=[0,a(c),DJ,10,DJ,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGV=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGW=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bGT=[0,a(c),Ft,10,Ft,35,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGZ=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bG0=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bGX=[0,a(c),Jn,10,Jn,14,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bG3=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bG4=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bG1=[0,a(c),LS,10,LS,23,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bG5=[0,a(a6),[0,a(HP),[0,a(aA),0]]],bG6=[0,a(a6),[0,a(HP),[0,a(aA),0]]],bG9=[0,a(c),ok,10,ok,59,[0,a(as),[0,a(d),0]]],bG7=[0,a(c),ok,10,ok,59,[0,a(as),[0,a(d),0]]],bG_=[0,a(a6),[0,a(kw),0]],bHb=[0,a(c),mw,10,mw,21,[0,a(as),[0,a(d),0]]],bG$=[0,a(c),mw,10,mw,21,[0,a(as),[0,a(d),0]]],bHc=[0,a(a6),[0,a(o_),0]],bHE=[0,a(a6),[0,a(a7),0]],bHQ=[0,a(c),mz,10,mz,29,[0,a(as),[0,a(d),0]]],bHF=[0,a(c),mz,10,mz,29,[0,a(as),[0,a(d),0]]],bHR=[0,a(a6),[0,a(fS),0]],bFd=[0,a(C),Lc,14,Lc,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bE$=[0,a(C),Fu,14,Fu,36,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEZ=[0,a(cb),[0,a(a7),[0,a(P),0]]],bE0=[0,a(cb),[0,a(a7),0]],bE1=[0,a(cb),[0,a(a7),[0,a(O),0]]],bE2=[0,a(cb),[0,a(a7),0]],bE3=[0,a(S),[0,a(bD),[0,a(P),0]]],bE4=[0,a(S),[0,a(bD),0]],bE5=[0,a(S),[0,a(bD),[0,a(O),0]]],bE6=[0,a(S),[0,a(bD),0]],bE7=[0,a(Y),[0,a(bD),[0,a(P),0]]],bE8=[0,a(Y),[0,a(bD),0]],bE9=[0,a(Y),[0,a(bD),[0,a(O),0]]],bE_=[0,a(Y),[0,a(bD),0]],bFa=[0,a(c),h4,10,h4,32,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEY=[0,a(c),h4,10,h4,32,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bET=[0,a(C),w6,14,w6,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bER=[1,0],bES=[1,0],bEN=[0,a(C),zA,14,zA,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEJ=[0,a(C),zw,14,zw,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEH=a(p),bEI=a(p),bED=[0,a(C),s8,14,s8,32,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEz=[0,a(C),Ij,14,Ij,31,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEv=[0,a(C),GE,5,GE,69,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEr=[0,a(C),HD,14,HD,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEn=[0,a(C),yM,14,yM,26,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEj=[0,a(C),Aa,14,Aa,52,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEf=[0,a(C),DA,14,DA,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEb=[0,a(C),w$,14,w$,35,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD9=[0,a(C),In,14,In,67,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD5=[0,a(C),D1,14,D1,49,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD1=[0,a(C),Cf,14,Cf,37,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDZ=a(p),bD0=a(p),bDT=[0,a(C),sx,14,sx,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDR=[3,0],bDS=[3,0],bDN=[0,a(C),G6,14,G6,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDJ=[0,a(C),KU,14,KU,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDF=[0,a(C),tp,14,tp,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDB=[0,a(C),H6,14,H6,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDx=[0,a(C),Bv,14,Bv,56,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDt=[0,a(C),zc,14,zc,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDp=[0,a(C),Ib,14,Ib,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDn=a(p),bDo=a(p),bDh=[0,a(C),yC,14,yC,45,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDd=[0,a(C),xw,14,xw,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDb=a(p),bDc=a(p),bC9=[0,a(C),BN,14,BN,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bC5=[0,a(C),IN,14,IN,73,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bC1=[0,a(C),Bl,14,Bl,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCZ=[3,0],bC0=[3,0],bCV=[0,a(C),I8,14,I8,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCR=[0,a(C),xN,14,xN,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCN=[0,a(C),y3,14,y3,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCL=a(p),bCM=a(p),bCH=[0,a(C),En,14,En,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCD=[0,a(C),xr,14,xr,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCz=[0,a(C),Iu,14,Iu,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCv=[0,a(C),Ao,14,Ao,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCr=[0,a(C),HN,14,HN,61,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCn=[0,a(V),81,14,81,44,[0,a(dA),[0,a(b9),[0,a(R),0]]]],bCh=[0,0],bCi=[1,0],bCj=[1,0],bCk=[1,0],bCl=[0,0],bCm=[1,0],bCd=[0,a(C),JQ,14,JQ,31,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCa=a(dU),bCb=a(rR),bCc=a(sS),bB8=[0,a(C),L3,14,L3,34,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bB3=[0,0],bB4=[2,0],bB5=[1,0],bB6=[0,0],bB7=[1,0],bB9=[0,a(c),oj,11,oj,31,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB2=[0,a(c),oj,11,oj,31,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB_=[0,a(az),[0,a(GI),0]],bCe=[0,a(c),oS,10,oS,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB$=[0,a(c),oS,10,oS,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCf=[0,a(az),[0,a(ye),0]],bCo=[0,a(c),j8,11,j8,41,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCg=[0,a(c),j8,11,j8,41,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCp=[0,a(az),[0,a(zG),0]],bCs=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCt=[0,a(az),[0,a("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies_base"),0]],bCq=[0,a(c),DD,10,DD,37,[0,a(z),[0,a(t),[0,a(d),0]]]],bCw=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCx=[0,a(az),[0,a(CJ),0]],bCu=[0,a(c),HM,10,HM,35,[0,a(z),[0,a(t),[0,a(d),0]]]],bCA=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCB=[0,a(az),[0,a(IK),0]],bCy=[0,a(c),Ko,10,Ko,40,[0,a(z),[0,a(t),[0,a(d),0]]]],bCE=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCF=[0,a(az),[0,a(Ce),0]],bCC=[0,a(c),GZ,10,GZ,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bCI=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCJ=[0,a(az),[0,a(xJ),0]],bCG=[0,a(c),I3,10,I3,23,[0,a(z),[0,a(t),[0,a(d),0]]]],bCO=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCP=[0,a(az),[0,a(Dw),0]],bCK=[0,a(c),EM,10,EM,31,[0,a(z),[0,a(t),[0,a(d),0]]]],bCS=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCT=[0,a(az),[0,a(LK),0]],bCQ=[0,a(c),EQ,10,EQ,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bCW=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCX=[0,a(az),[0,a(D9),0]],bCU=[0,a(c),G3,10,G3,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bC2=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC3=[0,a(az),[0,a(KE),0]],bCY=[0,a(c),Em,10,Em,31,[0,a(z),[0,a(t),[0,a(d),0]]]],bC6=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC7=[0,a(az),[0,a(KR),0]],bC4=[0,a(c),xl,10,xl,49,[0,a(z),[0,a(t),[0,a(d),0]]]],bC_=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC$=[0,a(az),[0,a(Jx),0]],bC8=[0,a(c),IR,10,IR,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bDe=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDf=[0,a(az),[0,a("accession_propri\xc3\xa9t\xc3\xa9.charges_mensuelles_pr\xc3\xaat"),0]],bDa=[0,a(c),wQ,10,wQ,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bDi=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDj=[0,a(az),[0,a(Eq),0]],bDg=[0,a(c),Kh,10,Kh,21,[0,a(z),[0,a(t),[0,a(d),0]]]],bDk=[0,a(az),[0,a(mj),[0,a(S),0]]],bDl=[0,a(az),[0,a(mj),[0,a(S),0]]],bDq=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDr=[0,a(az),[0,a(Jf),0]],bDm=[0,a(c),wT,10,wT,19,[0,a(G),[0,a(t),[0,a(d),0]]]],bDu=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDv=[0,a(az),[0,a(Mu),0]],bDs=[0,a(c),zP,10,zP,25,[0,a(G),[0,a(t),[0,a(d),0]]]],bDy=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDz=[0,a(az),[0,a(Ch),0]],bDw=[0,a(c),BM,10,BM,37,[0,a(G),[0,a(t),[0,a(d),0]]]],bDC=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDD=[0,a(az),[0,a(Gf),0]],bDA=[0,a(c),Hj,10,Hj,35,[0,a(G),[0,a(t),[0,a(d),0]]]],bDG=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDH=[0,a(az),[0,a(wU),0]],bDE=[0,a(c),B9,10,B9,40,[0,a(G),[0,a(t),[0,a(d),0]]]],bDK=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDL=[0,a(az),[0,a(FF),0]],bDI=[0,a(c),B6,10,B6,14,[0,a(G),[0,a(t),[0,a(d),0]]]],bDO=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDP=[0,a(az),[0,a(EP),0]],bDM=[0,a(c),B3,10,B3,23,[0,a(G),[0,a(t),[0,a(d),0]]]],bDU=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDV=[0,a(az),[0,a("logement_foyer.cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),0]],bDQ=[0,a(c),Ew,10,Ew,45,[0,a(G),[0,a(t),[0,a(d),0]]]],bDW=[0,a(az),[0,a(nL),[0,a(Y),0]]],bDX=[0,a(az),[0,a(nL),[0,a(Y),0]]],bD2=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD3=[0,a(az),[0,a(Aw),0]],bDY=[0,a(c),z5,10,z5,25,[0,a(N),[0,a(t),[0,a(d),0]]]],bD6=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD7=[0,a(az),[0,a(Bm),0]],bD4=[0,a(c),LV,10,LV,37,[0,a(N),[0,a(t),[0,a(d),0]]]],bD_=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD$=[0,a(az),[0,a(AE),0]],bD8=[0,a(c),Dh,10,Dh,55,[0,a(N),[0,a(t),[0,a(d),0]]]],bEc=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEd=[0,a(az),[0,a(IH),0]],bEa=[0,a(c),AV,10,AV,23,[0,a(N),[0,a(t),[0,a(d),0]]]],bEg=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEh=[0,a(az),[0,a(xO),0]],bEe=[0,a(c),Da,10,Da,35,[0,a(N),[0,a(t),[0,a(d),0]]]],bEk=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEl=[0,a(az),[0,a(E2),0]],bEi=[0,a(c),AK,10,AK,40,[0,a(N),[0,a(t),[0,a(d),0]]]],bEo=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEp=[0,a(az),[0,a(yW),0]],bEm=[0,a(c),w3,10,w3,14,[0,a(N),[0,a(t),[0,a(d),0]]]],bEs=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEt=[0,a(az),[0,a(AX),0]],bEq=[0,a(c),Iw,10,Iw,30,[0,a(N),[0,a(t),[0,a(d),0]]]],bEw=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEx=[0,a(az),[0,a(K1),0]],bEu=[0,a(c),JR,10,JR,66,[0,a(N),[0,a(t),[0,a(d),0]]]],bEA=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEB=[0,a(az),[0,a(Ld),0]],bEy=[0,a(c),Fn,10,Fn,19,[0,a(N),[0,a(t),[0,a(d),0]]]],bEE=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEF=[0,a(az),[0,a(wS),0]],bEC=[0,a(c),Lo,10,Lo,20,[0,a(N),[0,a(t),[0,a(d),0]]]],bEK=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEL=[0,a(az),[0,a(F9),0]],bEG=[0,a(c),Df,10,Df,36,[0,a(N),[0,a(t),[0,a(d),0]]]],bEO=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEP=[0,a(az),[0,a("locatif.logement_meubl\xc3\xa9_d842_2"),0]],bEM=[0,a(c),GR,10,GR,32,[0,a(N),[0,a(t),[0,a(d),0]]]],bEU=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEV=[0,a(az),[0,a("locatif.changement_logement_d842_4"),0]],bEQ=[0,a(c),sa,10,sa,36,[0,a(N),[0,a(t),[0,a(d),0]]]],bEW=[0,a(az),[0,a(mr),[0,a(cb),0]]],bEX=[0,a(az),[0,a(mr),[0,a(cb),0]]],bFb=[0,a(az),[0,a(a7),0]],bFe=[0,a(c),pu,10,pu,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bFc=[0,a(c),pu,10,pu,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bFf=[0,a(az),[0,a(fS),0]],bFi=[0,a(C),1603,5,1605,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bFh=[0,a(C),1599,5,1601,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bFg=[0,a(C),Bt,5,1597,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bBZ=[0,a(c),Mt,14,Mt,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBY=[0,0],bBT=[0,a(aT),1148,5,1151,28,[0,a("Article L841-4"),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBS=[0,0],bBU=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBR=[0,a(aT),h5,14,h5,25,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBM=[0,0],bBN=[0,0],bBO=[1,0],bBP=[2,0],bBQ=[0,0],bBC=a(p),bBD=[0,a(aT),j8,5,bJ,29,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBE=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBx=a(x),bBv=a(x),bBw=a(p),bBy=[0,a(aT),tj,5,sI,12,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBz=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBp=[0,a(aW),[0,a(fB),[0,a(P),0]]],bBq=[0,a(aW),[0,a(fB),0]],bBr=[0,a(aW),[0,a(fB),[0,a(O),0]]],bBs=[0,a(aW),[0,a(fB),0]],bBt=a(x),bBn=a(x),bBo=a(p),bBu=[0,a(aT),jY,5,jZ,72,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBA=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBB=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBF=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBe=[2,0],bBk=[1,0],bBl=[0,0],bBf=[0,a(cG),[0,a(dG),[0,a(P),0]]],bBg=[0,a(cG),[0,a(dG),0]],bBh=[0,a(cG),[0,a(dG),[0,a(O),0]]],bBi=[0,a(cG),[0,a(dG),0]],bBj=a(x),bBc=a(p),bBd=a(p),bBm=[0,a(aT),rZ,5,dR,29,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBG=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bA5=[2,0],bA$=[1,0],bBa=[0,0],bA6=[0,a(cG),[0,a(dG),[0,a(P),0]]],bA7=[0,a(cG),[0,a(dG),0]],bA8=[0,a(cG),[0,a(dG),[0,a(O),0]]],bA9=[0,a(cG),[0,a(dG),0]],bA_=a(x),bA3=a(x),bA4=a(p),bBb=[0,a(aT),jO,5,sc,11,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBH=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAY=[0,0],bAZ=[1,0],bA0=[3,0],bA1=[4,0],bA2=[0,a(aT),km,5,kx,52,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBI=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAX=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAT=[0,a(aT),ts,14,ts,25,[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]],bAS=[0,0],bAR=[2,0],bAN=[0,a(c),GW,14,GW,56,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAJ=[0,a(c),JZ,14,JZ,63,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAB=[0,a(C),4418,5,4426,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAC=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAA=[0,a(C),4399,5,4406,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAD=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAz=[0,a(C),4380,5,4389,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAE=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAF=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAy=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAt=[0,a(aT),Jb,5,Jb,73,[0,a("Article L841-3"),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bAu=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAs=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAl=[0,a(C),Jr,9,Jr,55,[0,a(KN),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAm=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAk=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAn=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAo=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],bAg=[0,a(C),FR,9,FR,68,[0,a(KN),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAh=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAf=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAi=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAj=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bAc=[0,a(c),AO,14,AO,47,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz_=[0,a(c),md,14,md,43,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz6=[0,a(c),oT,14,oT,40,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz0=[0,a(c),yJ,14,yJ,46,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzZ=[6,0],bzV=[0,a(c),pC,14,pC,56,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzU=[1,0],bzQ=[0,a(c),FG,14,FG,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzM=[0,a(C),Cy,14,Cy,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]],bzN=[0,a(c),m2,11,m2,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzL=[0,a(c),m2,11,m2,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzO=[0,a(b2),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bzR=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzS=[0,a(b2),[0,a(Gm),0]],bzP=[0,a(bO),46,10,46,23,[0,a(bQ),0]],bzW=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzX=[0,a(b2),[0,a(I5),0]],bzT=[0,a(bO),47,10,47,29,[0,a(bQ),0]],bz1=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz2=[0,a(b2),[0,a(Hx),0]],bzY=[0,a(bO),48,10,48,19,[0,a(bQ),0]],bz3=[0,a(b2),[0,a(nD),[0,a(cG),0]]],bz4=[0,a(b2),[0,a(nD),[0,a(cG),0]]],bz7=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz8=[0,a(b2),[0,a(w9),0]],bz5=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],bz$=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAa=[0,a(b2),[0,a(I4),0]],bz9=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],bAd=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAe=[0,a(b2),[0,a(Mr),0]],bAb=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],bAp=[0,a(b2),[0,a(px),[0,a(aW),0]]],bAq=[0,a(b2),[0,a(px),[0,a(aW),0]]],bAv=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAr=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAw=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_sociale"),0]],bAG=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAx=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAH=[0,a(b2),[0,a("condition_logement"),0]],bAK=[0,a(c),gH,10,gH,59,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAI=[0,a(c),gH,10,gH,59,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAL=[0,a(b2),[0,a(kw),0]],bAO=[0,a(c),oZ,10,oZ,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAM=[0,a(c),oZ,10,oZ,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAP=[0,a(b2),[0,a(tu),0]],bAU=[0,a(c),i0,10,i0,31,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAQ=[0,a(c),i0,10,i0,31,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAV=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bBJ=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAW=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBK=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bBV=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBL=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBW=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bB0=[0,a(c),pd,10,pd,33,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBX=[0,a(c),pd,10,pd,33,[0,a(aF),[0,a(j),[0,a(d),0]]]],bB1=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement"),0]],bzH=[0,a(aT),fO,5,586,36,[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]],bzI=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzG=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzC=[0,a(c),KV,14,KV,56,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzy=[0,a(c),yY,14,yY,63,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzr=[0,a(aT),661,5,kp,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzs=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzq=[0,a(aT),jU,5,tz,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzt=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzp=[0,a(aT),hq,5,641,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzu=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzk=[0,a(C),3758,5,sQ,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],bzl=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzg=[0,a(cf),[0,a(kn),[0,a(P),0]]],bzh=[0,a(cf),[0,a(kn),0]],bzi=[0,a(cf),[0,a(kn),[0,a(O),0]]],bzj=[0,a(cf),[0,a(kn),0]],bzf=[0,a(aT),hr,5,kD,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzm=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzb=[0,a(cf),[0,a(kc),[0,a(P),0]]],bzc=[0,a(cf),[0,a(kc),0]],bzd=[0,a(cf),[0,a(kc),[0,a(O),0]]],bze=[0,a(cf),[0,a(kc),0]],bza=[0,a(aT),fI,5,616,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzn=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzo=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by$=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by5=[0,a(c),sJ,14,sJ,47,[0,a(a8),[0,a(j),[0,a(d),0]]]],by1=[0,a(c),JC,14,JC,43,[0,a(a8),[0,a(j),[0,a(d),0]]]],byX=[0,a(c),mY,14,mY,40,[0,a(a8),[0,a(j),[0,a(d),0]]]],byQ=[0,a(aT),jV,5,769,30,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byR=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byP=[0,a(aT),737,5,742,30,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byS=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byO=[0,a(aT),nS,31,nS,54,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byT=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byN=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byJ=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byK=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byI=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byC=[0,a(C),3085,5,3088,46,[0,a("Article R832-7"),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byD=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byB=[0,a(C),3050,5,3052,47,[0,a("Article R832-5"),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byE=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byF=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byA=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byG=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byz=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byH=[0,a(cf),[0,a(kc),0]],byL=[0,a(cf),[0,a(kn),0]],byU=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byM=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byV=[0,a(cf),[0,a("condition_logement_pr\xc3\xaat"),0]],byY=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],byZ=[0,a(cf),[0,a(w9),0]],byW=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],by2=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],by3=[0,a(cf),[0,a(I4),0]],by0=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],by6=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],by7=[0,a(cf),[0,a(Mr),0]],by4=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],by8=[0,a(cf),[0,a(px),[0,a(aW),0]]],by9=[0,a(cf),[0,a(px),[0,a(aW),0]]],bzv=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by_=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzw=[0,a(cf),[0,a("condition_logement_bailleur"),0]],bzz=[0,a(c),nF,10,nF,59,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzx=[0,a(c),nF,10,nF,59,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzA=[0,a(cf),[0,a(kw),0]],bzD=[0,a(c),l_,10,l_,52,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzB=[0,a(c),l_,10,l_,52,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzE=[0,a(cf),[0,a(tu),0]],bzJ=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzF=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzK=[0,a(cf),[0,a(o_),0]],byw=[0,a(C),xc,14,xc,40,[0,a("Article D823-22"),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byr=[0,a(aT),556,5,kC,43,[0,a("Article L823-8"),[0,a(aa),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bys=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byq=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],bym=[0,a(V),BT,14,BT,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(R),0]]]],byj=a(x),byf=a(x),byd=a(ak),bye=a(p),byg=a(su),byh=a(ak),byi=a(p),byl=a(p),byk=a("2.4"),bx_=[0,a(C),2136,6,2144,77,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bx$=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx9=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx3=[0,a(c),IY,14,IY,43,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxZ=[0,a(c),w7,14,w7,39,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxV=[0,a(c),L7,14,L7,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxP=[0,a(c),Gq,14,Gq,65,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxJ=a(x),bxH=a(ak),bxI=a(p),bxK=[0,a(C),2127,5,2132,71,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxL=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxG=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxC=[0,a(C),zm,14,zm,47,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxD=[0,a(c),j4,11,j4,44,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxB=[0,a(c),j4,11,j4,44,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxE=[0,a(dD),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],bxM=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxF=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxN=[0,a(dD),[0,a("condition_rang_enfant"),0]],bxQ=[0,a(c),Ge,3,Ge,40,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxR=[0,a(dD),[0,a(KT),0]],bxO=[0,a(d9),5,10,5,23,[0,a(b7),0]],bxS=[0,a(dD),[0,a(of),[0,a(gP),0]]],bxT=[0,a(dD),[0,a(of),[0,a(gP),0]]],bxW=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxX=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bxU=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx0=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx1=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bxY=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx4=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx5=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bx2=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx6=[0,a(dD),[0,a(IT),[0,a(aW),0]]],bx7=[0,a(dD),[0,a(IT),[0,a(aW),0]]],bya=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx8=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],byb=[0,a(dD),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],byn=[0,a(c),lZ,11,lZ,26,[0,a(bN),[0,a(j),[0,a(d),0]]]],byc=[0,a(c),lZ,11,lZ,26,[0,a(bN),[0,a(j),[0,a(d),0]]]],byo=[0,a(dD),[0,a("plafond_d823_22"),0]],byt=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byp=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byu=[0,a(dD),[0,a(A9),0]],byx=[0,a(c),pw,10,pw,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],byv=[0,a(c),pw,10,pw,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],byy=[0,a(dD),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],bxu=[0,a(C),yQ,14,yQ,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxq=[0,a(C),El,14,El,36,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxe=[0,a(aj),[0,a(bD),[0,a(P),0]]],bxf=[0,a(aj),[0,a(bD),0]],bxg=[0,a(aj),[0,a(bD),[0,a(O),0]]],bxh=[0,a(aj),[0,a(bD),0]],bxi=[0,a(U),[0,a(bD),[0,a(P),0]]],bxj=[0,a(U),[0,a(bD),0]],bxk=[0,a(U),[0,a(bD),[0,a(O),0]]],bxl=[0,a(U),[0,a(bD),0]],bxm=[0,a(_),[0,a(bD),[0,a(P),0]]],bxn=[0,a(_),[0,a(bD),0]],bxo=[0,a(_),[0,a(bD),[0,a(O),0]]],bxp=[0,a(_),[0,a(bD),0]],bxr=[0,a(c),oi,10,oi,32,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxd=[0,a(c),oi,10,oi,32,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw_=[0,a(C),zy,14,zy,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bw8=a(p),bw9=a(p),bw4=[0,a(C),xU,14,xU,32,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bw0=[0,a(C),yc,14,yc,31,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwW=[0,a(C),Jd,5,Jd,69,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwS=[0,a(C),HK,14,HK,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwO=[0,a(C),Jj,14,Jj,26,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwK=[0,a(C),LM,14,LM,52,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwG=[0,a(C),z$,14,z$,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwC=[0,a(C),An,14,An,35,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwy=[0,a(C),DB,14,DB,67,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwu=[0,a(C),Ha,14,Ha,49,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwq=[0,a(C),xn,14,xn,37,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwo=a(p),bwp=a(p),bwi=[0,a(C),wR,14,wR,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwg=a(p),bwh=a(p),bwc=[0,a(C),Ap,14,Ap,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv_=[0,a(C),JK,14,JK,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv6=[0,a(C),JY,14,JY,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv2=[0,a(C),zf,14,zf,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvY=[0,a(C),H8,14,H8,56,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvU=[0,a(C),Ec,14,Ec,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvO=[0,a(C),F6,14,F6,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvK=[0,a(C),zb,14,zb,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvI=[0,0],bvJ=[0,0],bvE=[0,a(C),FY,14,FY,43,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvC=[0,0],bvD=[0,0],bvy=[0,a(C),J_,14,J_,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvu=[0,a(C),xa,14,xa,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvq=[0,a(C),LC,14,LC,45,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvm=[0,a(C),D_,14,D_,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvi=[0,a(C),FV,14,FV,73,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bve=[0,a(C),BK,14,BK,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bva=[0,a(C),Ev,14,Ev,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bu_=[2,0],bu$=[2,0],bu6=[0,a(C),Hb,14,Hb,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bu2=[0,a(C),yi,14,yi,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buY=[0,a(C),HC,14,HC,61,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buU=[0,a(C),Mh,14,Mh,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buS=a(p),buT=a(p),buO=[0,a(V),71,14,71,44,[0,a(dA),[0,a(b9),[0,a(R),0]]]],buI=[0,0],buJ=[1,0],buK=[1,0],buL=[1,0],buM=[0,0],buN=[1,0],buE=[0,a(C),BJ,14,BJ,31,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],buB=a(dU),buC=a(rR),buD=a(sS),bux=[0,a(C),HA,14,HA,34,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bus=[0,0],but=[2,0],buu=[1,0],buv=[0,0],buw=[1,0],buy=[0,a(c),od,11,od,31,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bur=[0,a(c),od,11,od,31,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buz=[0,a(aA),[0,a(GI),0]],buF=[0,a(c),jV,10,jV,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buA=[0,a(c),jV,10,jV,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buG=[0,a(aA),[0,a(ye),0]],buP=[0,a(c),n4,11,n4,41,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buH=[0,a(c),n4,11,n4,41,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buQ=[0,a(aA),[0,a(zG),0]],buV=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buW=[0,a(aA),[0,a(Dw),0]],buR=[0,a(c),DK,10,DK,31,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],buZ=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu0=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies"),0]],buX=[0,a(c),LQ,10,LQ,37,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu3=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu4=[0,a(aA),[0,a(CJ),0]],bu1=[0,a(c),zu,10,zu,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu7=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu8=[0,a(aA),[0,a(IK),0]],bu5=[0,a(c),Mq,10,Mq,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvb=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvc=[0,a(aA),[0,a(KE),0]],bu9=[0,a(c),DF,10,DF,31,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvf=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvg=[0,a(aA),[0,a(D9),0]],bvd=[0,a(c),Gs,10,Gs,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvj=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvk=[0,a(aA),[0,a(KR),0]],bvh=[0,a(c),tz,10,tz,49,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvn=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvo=[0,a(aA),[0,a(Jx),0]],bvl=[0,a(c),DZ,10,DZ,30,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvr=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvs=[0,a(aA),[0,a(Eq),0]],bvp=[0,a(c),Ka,10,Ka,21,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvv=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvw=[0,a(aA),[0,a(LK),0]],bvt=[0,a(c),De,10,De,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvz=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvA=[0,a(aA),[0,a(Ce),0]],bvx=[0,a(c),Eh,10,Eh,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvF=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvG=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.type_pr\xc3\xaat"),0]],bvB=[0,a(c),Gg,10,Gg,19,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvL=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvM=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.anciennet\xc3\xa9_logement"),0]],bvH=[0,a(c),Eu,10,Eu,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvP=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvQ=[0,a(aA),[0,a(xJ),0]],bvN=[0,a(c),z8,10,z8,23,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvR=[0,a(aA),[0,a(mj),[0,a(U),0]]],bvS=[0,a(aA),[0,a(mj),[0,a(U),0]]],bvV=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvW=[0,a(aA),[0,a(Mu),0]],bvT=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvZ=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv0=[0,a(aA),[0,a(Ch),0]],bvX=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv3=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv4=[0,a(aA),[0,a(Gf),0]],bv1=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv7=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv8=[0,a(aA),[0,a(wU),0]],bv5=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv$=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwa=[0,a(aA),[0,a(FF),0]],bv9=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwd=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwe=[0,a(aA),[0,a(EP),0]],bwb=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwj=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwk=[0,a(aA),[0,a(Jf),0]],bwf=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwl=[0,a(aA),[0,a(nL),[0,a(_),0]]],bwm=[0,a(aA),[0,a(nL),[0,a(_),0]]],bwr=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bws=[0,a(aA),[0,a(Aw),0]],bwn=[0,a(c),mC,10,mC,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwv=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bww=[0,a(aA),[0,a(Bm),0]],bwt=[0,a(c),kC,10,kC,37,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwz=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwA=[0,a(aA),[0,a(AE),0]],bwx=[0,a(c),nr,10,nr,55,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwD=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwE=[0,a(aA),[0,a(IH),0]],bwB=[0,a(c),l8,10,l8,23,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwH=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwI=[0,a(aA),[0,a(xO),0]],bwF=[0,a(c),mH,10,mH,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwL=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwM=[0,a(aA),[0,a(E2),0]],bwJ=[0,a(c),pE,10,pE,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwP=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwQ=[0,a(aA),[0,a(yW),0]],bwN=[0,a(c),oV,10,oV,14,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwT=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwU=[0,a(aA),[0,a(AX),0]],bwR=[0,a(c),o7,10,o7,30,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwX=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwY=[0,a(aA),[0,a(K1),0]],bwV=[0,a(c),pt,10,pt,66,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw1=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw2=[0,a(aA),[0,a(Ld),0]],bwZ=[0,a(c),oU,10,oU,19,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw5=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw6=[0,a(aA),[0,a(wS),0]],bw3=[0,a(c),oc,10,oc,20,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw$=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxa=[0,a(aA),[0,a(F9),0]],bw7=[0,a(c),pz,10,pz,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxb=[0,a(aA),[0,a(mr),[0,a(aj),0]]],bxc=[0,a(aA),[0,a(mr),[0,a(aj),0]]],bxs=[0,a(aA),[0,a(a7),0]],bxv=[0,a(c),pr,10,pr,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxt=[0,a(c),pr,10,pr,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxw=[0,a(aA),[0,a(fS),0]],bxz=[0,a(C),1469,5,1471,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxy=[0,a(C),DT,5,1467,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxx=[0,a(C),iM,5,1463,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buo=[0,a(C),B8,14,B8,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buf=[0,a(S),[0,a(a4),[0,a(P),0]]],bug=[0,a(S),[0,a(a4),0]],buh=[0,a(S),[0,a(a4),[0,a(O),0]]],bui=[0,a(S),[0,a(a4),0]],buj=a(p),buk=[0,a(S),[0,a(a4),[0,a(P),0]]],bul=[0,a(S),[0,a(a4),0]],bum=[0,a(S),[0,a(a4),[0,a(O),0]]],bun=[0,a(S),[0,a(a4),0]],bup=[0,a(c),mo,10,mo,25,[0,a(z),[0,a(t),[0,a(d),0]]]],bue=[0,a(c),mo,10,mo,25,[0,a(z),[0,a(t),[0,a(d),0]]]],bub=[0,a(C),wL,14,wL,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],btv=a(p),btw=[0,a(S),[0,a(bn),[0,a(P),0]]],btx=[0,a(S),[0,a(bn),0]],bty=[0,a(S),[0,a(bn),[0,a(O),0]]],btz=[0,a(S),[0,a(bn),0]],btA=[0,a(af),[0,a(al),[0,a(P),0]]],btB=[0,a(af),[0,a(al),0]],btC=[0,a(af),[0,a(al),[0,a(O),0]]],btD=[0,a(af),[0,a(al),0]],btE=a(e1),btF=[0,a(S),[0,a(bn),[0,a(P),0]]],btG=[0,a(S),[0,a(bn),0]],btH=[0,a(S),[0,a(bn),[0,a(O),0]]],btI=[0,a(S),[0,a(bn),0]],btJ=[0,a(af),[0,a(al),[0,a(P),0]]],btK=[0,a(af),[0,a(al),0]],btL=[0,a(af),[0,a(al),[0,a(O),0]]],btM=[0,a(af),[0,a(al),0]],btN=[0,a(S),[0,a(bn),[0,a(P),0]]],btO=[0,a(S),[0,a(bn),0]],btP=[0,a(S),[0,a(bn),[0,a(O),0]]],btQ=[0,a(S),[0,a(bn),0]],btR=[0,a(S),[0,a(bn),[0,a(P),0]]],btS=[0,a(S),[0,a(bn),0]],btT=[0,a(S),[0,a(bn),[0,a(O),0]]],btU=[0,a(S),[0,a(bn),0]],btV=[0,a(af),[0,a(al),[0,a(P),0]]],btW=[0,a(af),[0,a(al),0]],btX=[0,a(af),[0,a(al),[0,a(O),0]]],btY=[0,a(af),[0,a(al),0]],btZ=a(e1),bt0=[0,a(S),[0,a(bn),[0,a(P),0]]],bt1=[0,a(S),[0,a(bn),0]],bt2=[0,a(S),[0,a(bn),[0,a(O),0]]],bt3=[0,a(S),[0,a(bn),0]],bt4=[0,a(af),[0,a(al),[0,a(P),0]]],bt5=[0,a(af),[0,a(al),0]],bt6=[0,a(af),[0,a(al),[0,a(O),0]]],bt7=[0,a(af),[0,a(al),0]],bt8=[0,a(S),[0,a(bn),[0,a(P),0]]],bt9=[0,a(S),[0,a(bn),0]],bt_=[0,a(S),[0,a(bn),[0,a(O),0]]],bt$=[0,a(S),[0,a(bn),0]],bua=a(p),buc=[0,a(c),m3,10,m3,40,[0,a(z),[0,a(t),[0,a(d),0]]]],btu=[0,a(c),m3,10,m3,40,[0,a(z),[0,a(t),[0,a(d),0]]]],btr=[0,a(C),Gx,14,Gx,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bs3=a(p),bs4=[0,a(S),[0,a(ag),[0,a(P),0]]],bs5=[0,a(S),[0,a(ag),0]],bs6=[0,a(S),[0,a(ag),[0,a(O),0]]],bs7=[0,a(S),[0,a(ag),0]],bs8=[0,a(S),[0,a(cS),[0,a(P),0]]],bs9=[0,a(S),[0,a(cS),0]],bs_=[0,a(S),[0,a(cS),[0,a(O),0]]],bs$=[0,a(S),[0,a(cS),0]],bta=[0,a(S),[0,a(ag),[0,a(P),0]]],btb=[0,a(S),[0,a(ag),0]],btc=[0,a(S),[0,a(ag),[0,a(O),0]]],btd=[0,a(S),[0,a(ag),0]],bte=a(p),btf=[0,a(S),[0,a(ag),[0,a(P),0]]],btg=[0,a(S),[0,a(ag),0]],bth=[0,a(S),[0,a(ag),[0,a(O),0]]],bti=[0,a(S),[0,a(ag),0]],btj=[0,a(S),[0,a(cS),[0,a(P),0]]],btk=[0,a(S),[0,a(cS),0]],btl=[0,a(S),[0,a(cS),[0,a(O),0]]],btm=[0,a(S),[0,a(cS),0]],btn=[0,a(S),[0,a(ag),[0,a(P),0]]],bto=[0,a(S),[0,a(ag),0]],btp=[0,a(S),[0,a(ag),[0,a(O),0]]],btq=[0,a(S),[0,a(ag),0]],bts=[0,a(c),pa,10,pa,32,[0,a(z),[0,a(t),[0,a(d),0]]]],bs2=[0,a(c),pa,10,pa,32,[0,a(z),[0,a(t),[0,a(d),0]]]],bsZ=[0,a(C),zg,14,zg,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsV=[0,a(C),xR,14,xR,47,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsM=[0,a(S),[0,a(cT),[0,a(P),0]]],bsN=[0,a(S),[0,a(cT),0]],bsO=[0,a(S),[0,a(cT),[0,a(O),0]]],bsP=[0,a(S),[0,a(cT),0]],bsQ=[0,a(S),[0,a(cT),[0,a(P),0]]],bsR=[0,a(S),[0,a(cT),0]],bsS=[0,a(S),[0,a(cT),[0,a(O),0]]],bsT=[0,a(S),[0,a(cT),0]],bsU=a(p),bsW=[0,a(c),mi,11,mi,44,[0,a(z),[0,a(t),[0,a(d),0]]]],bsL=[0,a(c),mi,11,mi,44,[0,a(z),[0,a(t),[0,a(d),0]]]],bsI=[0,a(C),BW,14,BW,41,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsE=[0,a(C),Fg,14,Fg,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsA=[0,a(C),CO,14,CO,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsv=[0,a(C),4731,7,4734,45,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsw=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bsu=[0,a(C),L0,14,L0,50,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bso=[0,a(C),Ji,14,Ji,62,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsp=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsq=[0,a(S),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bsl=[0,a(C),AR,14,AR,61,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsm=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsn=[0,a(S),[0,a(K9),0]],bsi=[0,a(c),AA,14,AA,49,[0,a(z),[0,a(t),[0,a(d),0]]]],bsh=a(p),bsd=[0,a(c),Kl,14,Kl,53,[0,a(z),[0,a(t),[0,a(d),0]]]],br$=[0,a(c),rZ,14,rZ,44,[0,a(z),[0,a(t),[0,a(d),0]]]],br7=[0,a(c),Ep,14,Ep,70,[0,a(z),[0,a(t),[0,a(d),0]]]],br3=[0,a(c),Iz,14,Iz,65,[0,a(z),[0,a(t),[0,a(d),0]]]],brZ=[0,a(c),ya,14,ya,67,[0,a(z),[0,a(t),[0,a(d),0]]]],brV=[0,a(c),D6,14,D6,55,[0,a(z),[0,a(t),[0,a(d),0]]]],brT=[0,[0,[0,0],1,1,1,1]],brU=[1,0],brN=[0,a(C),Bz,14,Bz,70,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brJ=[0,a(C),JJ,14,JJ,69,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brF=[0,a(C),Jo,14,Jo,75,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brA=[0,a(C),FI,5,FI,44,[0,a(Jp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brk=[0,a(S),[0,a(co),[0,a(P),0]]],brl=[0,a(S),[0,a(co),0]],brm=[0,a(S),[0,a(co),[0,a(O),0]]],brn=[0,a(S),[0,a(co),0]],bro=[0,a(S),[0,a(co),[0,a(P),0]]],brp=[0,a(S),[0,a(co),0]],brq=[0,a(S),[0,a(co),[0,a(O),0]]],brr=[0,a(S),[0,a(co),0]],brs=[0,a(S),[0,a(co),[0,a(P),0]]],brt=[0,a(S),[0,a(co),0]],bru=[0,a(S),[0,a(co),[0,a(O),0]]],brv=[0,a(S),[0,a(co),0]],brw=[0,a(S),[0,a(co),[0,a(P),0]]],brx=[0,a(S),[0,a(co),0]],bry=[0,a(S),[0,a(co),[0,a(O),0]]],brz=[0,a(S),[0,a(co),0]],brB=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brj=[0,a(C),Bu,14,Bu,39,[0,a(Jp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brf=[0,a(S),[0,a(co),[0,a(P),0]]],brg=[0,a(S),[0,a(co),0]],brh=[0,a(S),[0,a(co),[0,a(O),0]]],bri=[0,a(S),[0,a(co),0]],bra=[0,a(C),G8,5,G8,28,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brb=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],bq$=[0,a(C),LT,14,LT,41,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bq8=a(dU),bq9=a(rR),bq_=a(sS),bq3=[0,a(V),ED,24,ED,56,[0,a(Di),[0,a(bs),[0,a(R),0]]]],bqU=a(fF),bqV=[0,a(S),[0,a(dO),[0,a(P),0]]],bqW=[0,a(S),[0,a(dO),0]],bqX=[0,a(S),[0,a(dO),[0,a(O),0]]],bqY=[0,a(S),[0,a(dO),0]],bqZ=[0,a(S),[0,a(dO),[0,a(P),0]]],bq0=[0,a(S),[0,a(dO),0]],bq1=[0,a(S),[0,a(dO),[0,a(O),0]]],bq2=[0,a(S),[0,a(dO),0]],bq4=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqT=[0,a(V),yD,14,yD,46,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bqP=[0,a(S),[0,a(dO),[0,a(P),0]]],bqQ=[0,a(S),[0,a(dO),0]],bqR=[0,a(S),[0,a(dO),[0,a(O),0]]],bqS=[0,a(S),[0,a(dO),0]],bq5=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqO=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqL=[0,a(C),Do,15,Do,37,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqM=[0,a(c),km,11,km,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bqK=[0,a(c),km,11,km,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bqG=[0,a(C),4756,6,4762,6,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqH=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqE=[0,a(C),4774,5,4775,59,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqF=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqz=[0,a(V),KB,5,KB,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bpP=a(p),bpQ=a("158700"),bpR=a("191300"),bpS=a(x),bpT=a("205500"),bpU=a(ab),bpV=a("211300"),bpW=a(ak),bpX=a("217100"),bpY=a(an),bpZ=a("222900"),bp0=a(T),bp1=a(If),bp2=a(T),bp3=a("19800"),bp4=a(If),bp5=a(p),bp6=a("139300"),bp7=a("170600"),bp8=a(x),bp9=a("184700"),bp_=a(ab),bp$=a("191200"),bqa=a(ak),bqb=a(zT),bqc=a(an),bqd=a("204200"),bqe=a(T),bqf=a(F2),bqg=a(T),bqh=a(sq),bqi=a(F2),bqj=a(p),bqk=a("130600"),bql=a("158400"),bqm=a(x),bqn=a("172600"),bqo=a(ab),bqp=a(C2),bqq=a(ak),bqr=a("187000"),bqs=a(an),bqt=a(yH),bqu=a(T),bqv=a(ta),bqw=a(T),bqx=a("18200"),bqy=a(ta),bqA=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bpN=[0,a(V),Bj,5,Bj,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bo3=a(p),bo4=a("160400"),bo5=a("193400"),bo6=a(x),bo7=a("207800"),bo8=a(ab),bo9=a("213700"),bo_=a(ak),bo$=a("219600"),bpa=a(an),bpb=a(Hn),bpc=a(T),bpd=a(nc),bpe=a(T),bpf=a("20000"),bpg=a(nc),bph=a(p),bpi=a(CS),bpj=a(C4),bpk=a(x),bpl=a("186700"),bpm=a(ab),bpn=a("193300"),bpo=a(ak),bpp=a(sL),bpq=a(an),bpr=a("206500"),bps=a(T),bpt=a(Gh),bpu=a(T),bpv=a(zV),bpw=a(Gh),bpx=a(p),bpy=a(Bh),bpz=a(Hz),bpA=a(x),bpB=a("174500"),bpC=a(ab),bpD=a(GJ),bpE=a(ak),bpF=a("189100"),bpG=a(an),bpH=a(yH),bpI=a(T),bpJ=a(E0),bpK=a(T),bpL=a("18400"),bpM=a(E0),bpO=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bo1=[0,a(V),FD,5,FD,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bof=a(p),bog=a("163300"),boh=a("196900"),boi=a(x),boj=a("211600"),bok=a(ab),bol=a(F3),bom=a(ak),bon=a("223600"),boo=a(an),bop=a("229600"),boq=a(T),bor=a(Bw),bos=a(T),bot=a("20400"),bou=a(Bw),bov=a(p),bow=a("143300"),box=a("175600"),boy=a(x),boz=a("190100"),boA=a(ab),boB=a("196600"),boC=a(ak),boD=a("203500"),boE=a(an),boF=a("210200"),boG=a(T),boH=a(Ly),boI=a(T),boJ=a("19600"),boK=a(Ly),boL=a(p),boM=a("134400"),boN=a(GO),boO=a(x),boP=a("177700"),boQ=a(ab),boR=a("185100"),boS=a(ak),boT=a(xS),boU=a(an),boV=a(sL),boW=a(T),boX=a(Md),boY=a(T),boZ=a("18700"),bo0=a(Md),bo2=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bod=[0,a(V),GA,5,GA,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bnt=a(p),bnu=a("167200"),bnv=a("201600"),bnw=a(x),bnx=a("216700"),bny=a(ab),bnz=a("222800"),bnA=a(ak),bnB=a("229000"),bnC=a(an),bnD=a("235100"),bnE=a(T),bnF=a(L9),bnG=a(T),bnH=a(Fp),bnI=a(L9),bnJ=a(p),bnK=a("146700"),bnL=a(C2),bnM=a(x),bnN=a("194700"),bnO=a(ab),bnP=a("201500"),bnQ=a(ak),bnR=a("208400"),bnS=a(an),bnT=a("215200"),bnU=a(T),bnV=a(nc),bnW=a(T),bnX=a(Bs),bnY=a(nc),bnZ=a(p),bn0=a("137600"),bn1=a("166900"),bn2=a(x),bn3=a("182000"),bn4=a(ab),bn5=a("189500"),bn6=a(ak),bn7=a("197100"),bn8=a(an),bn9=a(Cx),bn_=a(T),bn$=a(I0),boa=a(T),bob=a(sq),boc=a(I0),boe=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bnr=[0,a(V),FK,5,FK,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bmH=a(p),bmI=a("167400"),bmJ=a("201800"),bmK=a(x),bmL=a("216900"),bmM=a(ab),bmN=a("223000"),bmO=a(ak),bmP=a("229200"),bmQ=a(an),bmR=a("235300"),bmS=a(T),bmT=a(Ir),bmU=a(T),bmV=a(Fp),bmW=a(Ir),bmX=a(p),bmY=a("146800"),bmZ=a("180000"),bm0=a(x),bm1=a("194900"),bm2=a(ab),bm3=a(LO),bm4=a(ak),bm5=a(ta),bm6=a(an),bm7=a("215400"),bm8=a(T),bm9=a(J2),bm_=a(T),bm$=a(Bs),bna=a(J2),bnb=a(p),bnc=a("137700"),bnd=a("167100"),bne=a(x),bnf=a("182200"),bng=a(ab),bnh=a("189700"),bni=a(ak),bnj=a("197300"),bnk=a(an),bnl=a("204900"),bnm=a(T),bnn=a(C0),bno=a(T),bnp=a(sq),bnq=a(C0),bns=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bmF=[0,a(V),oO,5,oO,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],blV=a(p),blW=a("169100"),blX=a("203800"),blY=a(x),blZ=a("219100"),bl0=a(ab),bl1=a("225200"),bl2=a(ak),bl3=a("231500"),bl4=a(an),bl5=a("237700"),bl6=a(T),bl7=a(kf),bl8=a(T),bl9=a("21100"),bl_=a(kf),bl$=a(p),bma=a("148300"),bmb=a(GJ),bmc=a(x),bmd=a("196800"),bme=a(ab),bmf=a("203700"),bmg=a(ak),bmh=a("210700"),bmi=a(an),bmj=a(F3),bmk=a(T),bml=a(Gk),bmm=a(T),bmn=a("20300"),bmo=a(Gk),bmp=a(p),bmq=a("139100"),bmr=a("168800"),bms=a(x),bmt=a(tc),bmu=a(ab),bmv=a("191600"),bmw=a(ak),bmx=a("199300"),bmy=a(an),bmz=a("206900"),bmA=a(T),bmB=a(AY),bmC=a(T),bmD=a(zV),bmE=a(AY),bmG=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],blT=[0,a(V),Ai,5,Ai,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bk9=a(p),bk_=a("171100"),bk$=a("206200"),bla=a(x),blb=a("221700"),blc=a(ab),bld=a("227900"),ble=a(ak),blf=a("234300"),blg=a(an),blh=a("240600"),bli=a(T),blj=a(H7),blk=a(T),bll=a("21400"),blm=a(H7),bln=a(p),blo=a("150100"),blp=a(tc),blq=a(x),blr=a("199200"),bls=a(ab),blt=a("206100"),blu=a(ak),blv=a("213200"),blw=a(an),blx=a("220200"),bly=a(T),blz=a(zH),blA=a(T),blB=a("20500"),blC=a(zH),blD=a(p),blE=a(CS),blF=a("170800"),blG=a(x),blH=a("186200"),blI=a(ab),blJ=a("193900"),blK=a(ak),blL=a(LO),blM=a(an),blN=a("209400"),blO=a(T),blP=a(IO),blQ=a(T),blR=a("19500"),blS=a(IO),blU=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bk7=[0,a(V),z_,5,z_,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bkl=a(p),bkm=a("26084"),bkn=a("31435"),bko=a(x),bkp=a("33798"),bkq=a(ab),bkr=a("34743"),bks=a(ak),bkt=a("35719"),bku=a(an),bkv=a("36679"),bkw=a(T),bkx=a(HI),bky=a(T),bkz=a("3262"),bkA=a(HI),bkB=a(p),bkC=a("22883"),bkD=a("28051"),bkE=a(x),bkF=a("30368"),bkG=a(ab),bkH=a("31420"),bkI=a(ak),bkJ=a("32502"),bkK=a(an),bkL=a("33569"),bkM=a(T),bkN=a(Ed),bkO=a(T),bkP=a("3125"),bkQ=a(Ed),bkR=a(p),bkS=a("21465"),bkT=a("26038"),bkU=a(x),bkV=a("28386"),bkW=a(ab),bkX=a("29560"),bkY=a(ak),bkZ=a("30749"),bk0=a(an),bk1=a("31923"),bk2=a(T),bk3=a(DU),bk4=a(T),bk5=a("2973"),bk6=a(DU),bk8=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bkj=[0,a(V),JE,5,JE,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bjz=a(p),bjA=a("26397"),bjB=a("31812"),bjC=a(x),bjD=a("34204"),bjE=a(ab),bjF=a("35160"),bjG=a(ak),bjH=a("36148"),bjI=a(an),bjJ=a("37119"),bjK=a(T),bjL=a(HU),bjM=a(T),bjN=a("3301"),bjO=a(HU),bjP=a(p),bjQ=a("23158"),bjR=a("28388"),bjS=a(x),bjT=a("30732"),bjU=a(ab),bjV=a(rT),bjW=a(ak),bjX=a("32892"),bjY=a(an),bjZ=a("33972"),bj0=a(T),bj1=a(DM),bj2=a(T),bj3=a("3163"),bj4=a(DM),bj5=a(p),bj6=a("21723"),bj7=a("26350"),bj8=a(x),bj9=a("28727"),bj_=a(ab),bj$=a("29915"),bka=a(ak),bkb=a("31118"),bkc=a(an),bkd=a("32306"),bke=a(T),bkf=a(Gw),bkg=a(T),bkh=a("3009"),bki=a(Gw),bkk=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bjx=[0,a(V),HS,5,HS,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],biN=a(p),biO=a(Mw),biP=a("32194"),biQ=a(x),biR=a("34614"),biS=a(ab),biT=a("35582"),biU=a(ak),biV=a("36582"),biW=a(an),biX=a("37564"),biY=a(T),biZ=a(xZ),bi0=a(T),bi1=a("3341"),bi2=a(xZ),bi3=a(p),bi4=a("23436"),bi5=a("28729"),bi6=a(x),bi7=a("31101"),bi8=a(ab),bi9=a("32179"),bi_=a(ak),bi$=a("33287"),bja=a(an),bjb=a("34380"),bjc=a(T),bjd=a(AW),bje=a(T),bjf=a("3201"),bjg=a(AW),bjh=a(p),bji=a("21984"),bjj=a("26666"),bjk=a(x),bjl=a("29072"),bjm=a(ab),bjn=a("30274"),bjo=a(ak),bjp=a("31491"),bjq=a(an),bjr=a("32694"),bjs=a(T),bjt=a(BB),bju=a(T),bjv=a("3045"),bjw=a(BB),bjy=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],biL=[0,a(V),Eb,5,Eb,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bh1=a(p),bh2=a("27195"),bh3=a("32773"),bh4=a(x),bh5=a("35237"),bh6=a(ab),bh7=a("36222"),bh8=a(ak),bh9=a("37240"),bh_=a(an),bh$=a("38240"),bia=a(T),bib=a(Jk),bic=a(T),bid=a("3401"),bie=a(Jk),bif=a(p),big=a("23858"),bih=a("29246"),bii=a(x),bij=a("31661"),bik=a(ab),bil=a("32758"),bim=a(ak),bin=a("33886"),bio=a(an),bip=a("34999"),biq=a(T),bir=a(HV),bis=a(T),bit=a("3259"),biu=a(HV),biv=a(p),biw=a("22380"),bix=a("27146"),biy=a(x),biz=a("29595"),biA=a(ab),biB=a("30819"),biC=a(ak),biD=a("32058"),biE=a(an),biF=a("33282"),biG=a(T),biH=a(AM),biI=a(T),biJ=a("3100"),biK=a(AM),biM=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bhZ=[0,a(V),H0,5,H0,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bhd=a(p),bhe=a("27956"),bhf=a("33691"),bhg=a(x),bhh=a("36224"),bhi=a(ab),bhj=a("37236"),bhk=a(ak),bhl=a("38283"),bhm=a(an),bhn=a("39311"),bho=a(T),bhp=a(zp),bhq=a(T),bhr=a("3496"),bhs=a(zp),bht=a(p),bhu=a("24526"),bhv=a("30065"),bhw=a(x),bhx=a("32548"),bhy=a(ab),bhz=a("33675"),bhA=a(ak),bhB=a(L5),bhC=a(an),bhD=a("35979"),bhE=a(T),bhF=a(IJ),bhG=a(T),bhH=a("3350"),bhI=a(IJ),bhJ=a(p),bhK=a("23007"),bhL=a("27906"),bhM=a(x),bhN=a("30424"),bhO=a(ab),bhP=a("31682"),bhQ=a(ak),bhR=a(Ht),bhS=a(an),bhT=a("34214"),bhU=a(T),bhV=a(Lg),bhW=a(T),bhX=a("3187"),bhY=a(Lg),bh0=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bhb=[0,a(V),Go,5,Go,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bgr=a(p),bgs=a("28728"),bgt=a("34621"),bgu=a(x),bgv=a("37224"),bgw=a(ab),bgx=a("38264"),bgy=a(ak),bgz=a(y$),bgA=a(an),bgB=a("40396"),bgC=a(T),bgD=a(GS),bgE=a(T),bgF=a("3592"),bgG=a(GS),bgH=a(p),bgI=a("25203"),bgJ=a("30895"),bgK=a(x),bgL=a("33446"),bgM=a(ab),bgN=a("34604"),bgO=a(ak),bgP=a("35796"),bgQ=a(an),bgR=a("36972"),bgS=a(T),bgT=a(D8),bgU=a(T),bgV=a("3442"),bgW=a(D8),bgX=a(p),bgY=a("23642"),bgZ=a("28676"),bg0=a(x),bg1=a(yr),bg2=a(ab),bg3=a("32556"),bg4=a(ak),bg5=a("33866"),bg6=a(an),bg7=a("35158"),bg8=a(T),bg9=a(FQ),bg_=a(T),bg$=a("3275"),bha=a(FQ),bhc=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bgp=[0,a(V),Ma,5,Ma,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bfF=a(p),bfG=a("29575"),bfH=a("35642"),bfI=a(x),bfJ=a("38322"),bfK=a(ab),bfL=a("39393"),bfM=a(ak),bfN=a("40501"),bfO=a(an),bfP=a("41588"),bfQ=a(T),bfR=a(KH),bfS=a(T),bfT=a("3698"),bfU=a(KH),bfV=a(p),bfW=a("25946"),bfX=a("31806"),bfY=a(x),bfZ=a("34433"),bf0=a(ab),bf1=a("35625"),bf2=a(ak),bf3=a("36852"),bf4=a(an),bf5=a("38063"),bf6=a(T),bf7=a(Ix),bf8=a(T),bf9=a("3544"),bf_=a(Ix),bf$=a(p),bga=a("24339"),bgb=a("29522"),bgc=a(x),bgd=a("32186"),bge=a(ab),bgf=a("33516"),bgg=a(ak),bgh=a(L5),bgi=a(an),bgj=a("36195"),bgk=a(T),bgl=a(Dv),bgm=a(T),bgn=a("3372"),bgo=a(Dv),bgq=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bfD=[0,a(V),sQ,5,sQ,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],beT=a(p),beU=a("29670"),beV=a("35757"),beW=a(x),beX=a("38445"),beY=a(ab),beZ=a("39519"),be0=a(ak),be1=a("40601"),be2=a(an),be3=a("41721"),be4=a(T),be5=a(CL),be6=a(T),be7=a("3710"),be8=a(CL),be9=a(p),be_=a("26029"),be$=a("31908"),bfa=a(x),bfb=a("34643"),bfc=a(ab),bfd=a("35739"),bfe=a(ak),bff=a("36970"),bfg=a(an),bfh=a("38185"),bfi=a(T),bfj=a(I1),bfk=a(T),bfl=a("3555"),bfm=a(I1),bfn=a(p),bfo=a("24417"),bfp=a("29616"),bfq=a(x),bfr=a("32289"),bfs=a(ab),bft=a(HW),bfu=a(ak),bfv=a("34977"),bfw=a(an),bfx=a("36311"),bfy=a(T),bfz=a(Il),bfA=a(T),bfB=a("3383"),bfC=a(Il),bfE=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],beR=[0,a(V),FJ,5,FJ,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bd7=a(p),bd8=a("29996"),bd9=a("36149"),bd_=a(x),bd$=a("38868"),bea=a(ab),beb=a("39954"),bec=a(ak),bed=a("41078"),bee=a(an),bef=a("42180"),beg=a(T),beh=a(Bk),bei=a(T),bej=a("3751"),bek=a(Bk),bel=a(p),bem=a("26315"),ben=a("32259"),beo=a(x),bep=a("34923"),beq=a(ab),ber=a("36132"),bes=a(ak),bet=a("37373"),beu=a(an),bev=a("38605"),bew=a(T),bex=a(KQ),bey=a(T),bez=a("3594"),beA=a(KQ),beB=a(p),beC=a("24686"),beD=a("29942"),beE=a(x),beF=a("32644"),beG=a(ab),beH=a("33993"),beI=a(ak),beJ=a("35362"),beK=a(an),beL=a("36710"),beM=a(T),beN=a(AC),beO=a(T),beP=a("3420"),beQ=a(AC),beS=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bd5=[0,a(V),I2,5,I2,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bdj=a(p),bdk=a("30296"),bdl=a("36510"),bdm=a(x),bdn=a("39257"),bdo=a(ab),bdp=a("40354"),bdq=a(ak),bdr=a("41489"),bds=a(an),bdt=a("42602"),bdu=a(T),bdv=a(FA),bdw=a(T),bdx=a("3789"),bdy=a(FA),bdz=a(p),bdA=a("26578"),bdB=a("32582"),bdC=a(x),bdD=a("35272"),bdE=a(ab),bdF=a("36493"),bdG=a(ak),bdH=a("37751"),bdI=a(an),bdJ=a("38991"),bdK=a(T),bdL=a(GK),bdM=a(T),bdN=a("3630"),bdO=a(GK),bdP=a(p),bdQ=a("24933"),bdR=a("30241"),bdS=a(x),bdT=a("32970"),bdU=a(ab),bdV=a("34333"),bdW=a(ak),bdX=a("35716"),bdY=a(an),bdZ=a("37077"),bd0=a(T),bd1=a(wX),bd2=a(T),bd3=a("3454"),bd4=a(wX),bd6=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bdh=[0,a(V),Ja,5,Ja,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bcx=a(p),bcy=a("30947"),bcz=a("37295"),bcA=a(x),bcB=a("40101"),bcC=a(ab),bcD=a("41222"),bcE=a(ak),bcF=a("42381"),bcG=a(an),bcH=a("43518"),bcI=a(T),bcJ=a(Kd),bcK=a(T),bcL=a("3870"),bcM=a(Kd),bcN=a(p),bcO=a("27149"),bcP=a("33283"),bcQ=a(x),bcR=a("36030"),bcS=a(ab),bcT=a("37278"),bcU=a(ak),bcV=a("38563"),bcW=a(an),bcX=a("39829"),bcY=a(T),bcZ=a("42649"),bc0=a(T),bc1=a("3708"),bc2=a("42659"),bc3=a(p),bc4=a("25469"),bc5=a("30891"),bc6=a(x),bc7=a("33679"),bc8=a(ab),bc9=a("35071"),bc_=a(ak),bc$=a("36484"),bda=a(an),bdb=a("37874"),bdc=a(T),bdd=a(Ct),bde=a(T),bdf=a("3528"),bdg=a(Ct),bdi=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bcv=[0,a(V),x_,5,x_,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bbL=a(p),bbM=a("31123"),bbN=a("37508"),bbO=a(x),bbP=a("40330"),bbQ=a(ab),bbR=a("41457"),bbS=a(ak),bbT=a("42623"),bbU=a(an),bbV=a("43766"),bbW=a(T),bbX=a(EY),bbY=a(T),bbZ=a("3892"),bb0=a(EY),bb1=a(p),bb2=a("27304"),bb3=a("33473"),bb4=a(x),bb5=a("36235"),bb6=a(ab),bb7=a("37490"),bb8=a(ak),bb9=a("38783"),bb_=a(an),bb$=a("40056"),bca=a(T),bcb=a(BV),bcc=a(T),bcd=a("3729"),bce=a(BV),bcf=a(p),bcg=a("25614"),bch=a("31067"),bci=a(x),bcj=a("33871"),bck=a(ab),bcl=a("35271"),bcm=a(ak),bcn=a("36692"),bco=a(an),bcp=a("38090"),bcq=a(T),bcr=a(zU),bcs=a(T),bct=a("3548"),bcu=a(zU),bcw=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bbJ=[0,a(V),wP,5,wP,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],baZ=a(p),ba0=a("31148"),ba1=a("37538"),ba2=a(x),ba3=a("40362"),ba4=a(ab),ba5=a("41490"),ba6=a(ak),ba7=a("42657"),ba8=a(an),ba9=a("43801"),ba_=a(T),ba$=a(yp),bba=a(T),bbb=a("3895"),bbc=a(yp),bbd=a(p),bbe=a("27326"),bbf=a(Ez),bbg=a(x),bbh=a("36264"),bbi=a(ab),bbj=a("37520"),bbk=a(ak),bbl=a("38814"),bbm=a(an),bbn=a("40088"),bbo=a(T),bbp=a(Mc),bbq=a(T),bbr=a("3732"),bbs=a(Mc),bbt=a(p),bbu=a("25634"),bbv=a("31092"),bbw=a(x),bbx=a("33898"),bby=a(ab),bbz=a("35299"),bbA=a(ak),bbB=a("36721"),bbC=a(an),bbD=a("38120"),bbE=a(T),bbF=a(Ik),bbG=a(T),bbH=a("3551"),bbI=a(Ik),bbK=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],baX=[0,a(V),Bg,5,Bg,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bab=a(p),bac=a("31382"),bad=a("37820"),bae=a(x),baf=a("40665"),bag=a(ab),bah=a("41801"),bai=a(ak),baj=a("42977"),bak=a(an),bal=a("44130"),bam=a(T),ban=a(Ag),bao=a(T),bap=a("3924"),baq=a(Ag),bar=a(p),bas=a("27531"),bat=a("33751"),bau=a(x),bav=a("36536"),baw=a(ab),bax=a("37801"),bay=a(ak),baz=a("39105"),baA=a(an),baB=a("40389"),baC=a(T),baD=a(F8),baE=a(T),baF=a("3760"),baG=a(F8),baH=a(p),baI=a("25826"),baJ=a("31325"),baK=a(x),baL=a("34152"),baM=a(ab),baN=a("35564"),baO=a(ak),baP=a("36996"),baQ=a(an),baR=a("38406"),baS=a(T),baT=a(zY),baU=a(T),baV=a("3578"),baW=a(zY),baY=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$$=[0,a(V),C_,5,C_,33,[0,a(b_),[0,a(bs),[0,a(R),0]]]],a$p=a(p),a$q=a("31476"),a$r=a("37933"),a$s=a(x),a$t=a("40787"),a$u=a(ab),a$v=a("41927"),a$w=a(ak),a$x=a("43106"),a$y=a(an),a$z=a("44262"),a$A=a(T),a$B=a(xL),a$C=a(T),a$D=a("3936"),a$E=a(xL),a$F=a(p),a$G=a("27614"),a$H=a("33853"),a$I=a(x),a$J=a("36646"),a$K=a(ab),a$L=a("37915"),a$M=a(ak),a$N=a("39222"),a$O=a(an),a$P=a("40510"),a$Q=a(T),a$R=a(DY),a$S=a(T),a$T=a("3771"),a$U=a(DY),a$V=a(p),a$W=a("25904"),a$X=a("31419"),a$Y=a(x),a$Z=a("34255"),a$0=a(ab),a$1=a("35670"),a$2=a(ak),a$3=a("37107"),a$4=a(an),a$5=a("38521"),a$6=a(T),a$7=a(Mm),a$8=a(T),a$9=a("3588"),a$_=a(Mm),baa=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bqB=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$o=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$l=[0,a(C),DL,14,DL,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a$j=a(p),a$k=a(p),a$m=[0,a(c),jO,10,jO,32,[0,a(z),[0,a(t),[0,a(d),0]]]],a$i=[0,a(c),jO,10,jO,32,[0,a(z),[0,a(t),[0,a(d),0]]]],a$e=[0,a(V),zL,5,zL,16,[0,a(Di),[0,a(bs),[0,a(R),0]]]],a$b=a(hk),a$c=a(ry),a$d=a(fz),a$f=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a$a=[0,a(V),I9,14,I9,41,[0,a("Article 34"),[0,a(bs),[0,a(R),0]]]],a_8=a(p),a_9=a(fz),a__=a(hk),a_$=a(fz),a_2=[0,a(c),EJ,14,EJ,50,[0,a(z),[0,a(t),[0,a(d),0]]]],a_W=[0,a(C),H3,14,H3,64,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a_S=[0,a(C),FX,14,FX,59,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a_O=[0,a(V),Fa,14,Fa,33,[0,a(Cs),[0,a(bs),[0,a(R),0]]]],a_N=a(AI),a_J=[0,a(V),B4,14,B4,33,[0,a(J5),[0,a(bs),[0,a(R),0]]]],a_I=a(sn),a_E=[0,a(V),z7,14,z7,41,[0,a(Cs),[0,a(bs),[0,a(R),0]]]],a_D=a("390000"),a_z=[0,a(V),LU,14,LU,41,[0,a(J5),[0,a(bs),[0,a(R),0]]]],a_y=a(sA),a_u=[0,a(V),LX,14,LX,41,[0,a("Article 36"),[0,a(bs),[0,a(R),0]]]],a_t=a(iI),a_p=[0,a(f$),s3,14,s3,36,[0,a(Kk),[0,a(zJ),0]]],a_n=a(Fe),a_o=a(eP),a_j=[0,a(V),yV,14,yV,40,[0,a("Article 35"),[0,a(bs),[0,a(R),0]]]],a_i=a(jX),a_k=[0,a(c),o8,11,o8,37,[0,a(z),[0,a(t),[0,a(d),0]]]],a_h=[0,a(c),o8,11,o8,37,[0,a(z),[0,a(t),[0,a(d),0]]]],a_l=[0,a(S),[0,a("montant_forfaitaire_d842_6"),0]],a_q=[0,a(c),lX,11,lX,33,[0,a(z),[0,a(t),[0,a(d),0]]]],a_m=[0,a(c),lX,11,lX,33,[0,a(z),[0,a(t),[0,a(d),0]]]],a_r=[0,a(S),[0,a(Ej),0]],a_v=[0,a(c),nI,11,nI,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_s=[0,a(c),nI,11,nI,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_w=[0,a(S),[0,a("montant_minimal_aide_d842_6"),0]],a_A=[0,a(c),nY,11,nY,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_x=[0,a(c),nY,11,nY,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_B=[0,a(S),[0,a("montant_forfaitaire_d842_11"),0]],a_F=[0,a(c),kx,11,kx,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_C=[0,a(c),kx,11,kx,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_G=[0,a(S),[0,a("montant_forfaitaire_d842_12"),0]],a_K=[0,a(c),l2,11,l2,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_H=[0,a(c),l2,11,l2,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_L=[0,a(S),[0,a("coefficient_d842_11"),0]],a_P=[0,a(c),mF,11,mF,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_M=[0,a(c),mF,11,mF,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_Q=[0,a(S),[0,a("coefficient_d842_12"),0]],a_T=[0,a(c),pL,3,pL,22,[0,a(z),[0,a(t),[0,a(d),0]]]],a_U=[0,a(S),[0,a(my),0]],a_R=[0,a(c),pD,10,pD,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],a_X=[0,a(c),pL,3,pL,22,[0,a(z),[0,a(t),[0,a(d),0]]]],a_Y=[0,a(S),[0,a(o5),0]],a_V=[0,a(c),ml,10,ml,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],a_Z=[0,a(S),[0,a(gS),[0,a(ks),0]]],a_0=[0,a(S),[0,a(gS),[0,a(ks),0]]],a_3=[0,a(c),z1,3,z1,25,[0,a(z),[0,a(t),[0,a(d),0]]]],a_4=[0,a(S),[0,a(j7),0]],a_1=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],a_5=[0,a(S),[0,a(eW),[0,a(af),0]]],a_6=[0,a(S),[0,a(eW),[0,a(af),0]]],a$g=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_7=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a$h=[0,a(S),[0,a(E4),0]],a$n=[0,a(S),[0,a(ag),0]],bqC=[0,a(S),[0,a(dO),0]],bqI=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqD=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqJ=[0,a(S),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bqN=[0,a(S),[0,a(cT),0]],bq6=[0,a(S),[0,a(co),0]],brc=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],bq7=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],brd=[0,a(S),[0,a(Kf),0]],brC=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],bre=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brD=[0,a(S),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],brG=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brH=[0,a(S),[0,a(ob),0]],brE=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brK=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brL=[0,a(S),[0,a(nk),0]],brI=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brO=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brP=[0,a(S),[0,a(n8),0]],brM=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brQ=[0,a(S),[0,a(gB),[0,a(ei),0]]],brR=[0,a(S),[0,a(gB),[0,a(ei),0]]],brW=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],brX=[0,a(S),[0,a(JW),0]],brS=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br0=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br1=[0,a(S),[0,a(Fi),0]],brY=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br4=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br5=[0,a(S),[0,a(Ef),0]],br2=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br8=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br9=[0,a(S),[0,a(B0),0]],br6=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsa=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsb=[0,a(S),[0,a(J9),0]],br_=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bse=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsf=[0,a(S),[0,a(D2),0]],bsc=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsj=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsk=[0,a(S),[0,a(xB),0]],bsg=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsr=[0,a(S),[0,a(oN),[0,a(_),0]]],bss=[0,a(S),[0,a(oN),[0,a(_),0]]],bsx=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bst=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bsy=[0,a(S),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bsB=[0,a(c),mc,11,mc,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsz=[0,a(c),mc,11,mc,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsC=[0,a(S),[0,a(L4),0]],bsF=[0,a(c),nT,11,nT,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsD=[0,a(c),nT,11,nT,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsG=[0,a(S),[0,a(zv),0]],bsJ=[0,a(c),mB,11,mB,38,[0,a(z),[0,a(t),[0,a(d),0]]]],bsH=[0,a(c),mB,11,mB,38,[0,a(z),[0,a(t),[0,a(d),0]]]],bsK=[0,a(S),[0,a(zi),0]],bsX=[0,a(S),[0,a(cS),0]],bs0=[0,a(c),nd,10,nd,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bsY=[0,a(c),nd,10,nd,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bs1=[0,a(S),[0,a(fS),0]],btt=[0,a(S),[0,a(bn),0]],bud=[0,a(S),[0,a(a4),0]],buq=[0,a(S),[0,a(bD),0]],a_e=[0,a(C),Ei,14,Ei,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a97=[0,a(Y),[0,a(a4),[0,a(P),0]]],a98=[0,a(Y),[0,a(a4),0]],a99=[0,a(Y),[0,a(a4),[0,a(O),0]]],a9_=[0,a(Y),[0,a(a4),0]],a9$=a(p),a_a=[0,a(Y),[0,a(a4),[0,a(P),0]]],a_b=[0,a(Y),[0,a(a4),0]],a_c=[0,a(Y),[0,a(a4),[0,a(O),0]]],a_d=[0,a(Y),[0,a(a4),0]],a_f=[0,a(c),ms,10,ms,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a96=[0,a(c),ms,10,ms,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a93=[0,a(C),Jc,14,Jc,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a9l=a(p),a9m=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9n=[0,a(Y),[0,a(bT),0]],a9o=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9p=[0,a(Y),[0,a(bT),0]],a9q=[0,a(af),[0,a(al),[0,a(P),0]]],a9r=[0,a(af),[0,a(al),0]],a9s=[0,a(af),[0,a(al),[0,a(O),0]]],a9t=[0,a(af),[0,a(al),0]],a9u=a(e1),a9v=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9w=[0,a(Y),[0,a(bT),0]],a9x=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9y=[0,a(Y),[0,a(bT),0]],a9z=[0,a(af),[0,a(al),[0,a(P),0]]],a9A=[0,a(af),[0,a(al),0]],a9B=[0,a(af),[0,a(al),[0,a(O),0]]],a9C=[0,a(af),[0,a(al),0]],a9D=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9E=[0,a(Y),[0,a(bT),0]],a9F=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9G=[0,a(Y),[0,a(bT),0]],a9H=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9I=[0,a(Y),[0,a(bT),0]],a9J=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9K=[0,a(Y),[0,a(bT),0]],a9L=[0,a(af),[0,a(al),[0,a(P),0]]],a9M=[0,a(af),[0,a(al),0]],a9N=[0,a(af),[0,a(al),[0,a(O),0]]],a9O=[0,a(af),[0,a(al),0]],a9P=a(e1),a9Q=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9R=[0,a(Y),[0,a(bT),0]],a9S=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9T=[0,a(Y),[0,a(bT),0]],a9U=[0,a(af),[0,a(al),[0,a(P),0]]],a9V=[0,a(af),[0,a(al),0]],a9W=[0,a(af),[0,a(al),[0,a(O),0]]],a9X=[0,a(af),[0,a(al),0]],a9Y=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9Z=[0,a(Y),[0,a(bT),0]],a90=[0,a(Y),[0,a(bT),[0,a(O),0]]],a91=[0,a(Y),[0,a(bT),0]],a92=a(p),a94=[0,a(c),nV,10,nV,40,[0,a(G),[0,a(t),[0,a(d),0]]]],a9k=[0,a(c),nV,10,nV,40,[0,a(G),[0,a(t),[0,a(d),0]]]],a9h=[0,a(C),yw,14,yw,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8$=[0,a(Y),[0,a(bn),[0,a(P),0]]],a9a=[0,a(Y),[0,a(bn),0]],a9b=[0,a(Y),[0,a(bn),[0,a(O),0]]],a9c=[0,a(Y),[0,a(bn),0]],a9d=[0,a(Y),[0,a(bn),[0,a(P),0]]],a9e=[0,a(Y),[0,a(bn),0]],a9f=[0,a(Y),[0,a(bn),[0,a(O),0]]],a9g=[0,a(Y),[0,a(bn),0]],a9i=[0,a(c),ov,10,ov,19,[0,a(G),[0,a(t),[0,a(d),0]]]],a8_=[0,a(c),ov,10,ov,19,[0,a(G),[0,a(t),[0,a(d),0]]]],a87=[0,a(C),DI,14,DI,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8H=a(p),a8I=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8J=[0,a(Y),[0,a(ag),0]],a8K=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8L=[0,a(Y),[0,a(ag),0]],a8M=[0,a(Y),[0,a(cS),[0,a(P),0]]],a8N=[0,a(Y),[0,a(cS),0]],a8O=[0,a(Y),[0,a(cS),[0,a(O),0]]],a8P=[0,a(Y),[0,a(cS),0]],a8Q=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8R=[0,a(Y),[0,a(ag),0]],a8S=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8T=[0,a(Y),[0,a(ag),0]],a8U=a(p),a8V=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8W=[0,a(Y),[0,a(ag),0]],a8X=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8Y=[0,a(Y),[0,a(ag),0]],a8Z=[0,a(Y),[0,a(cS),[0,a(P),0]]],a80=[0,a(Y),[0,a(cS),0]],a81=[0,a(Y),[0,a(cS),[0,a(O),0]]],a82=[0,a(Y),[0,a(cS),0]],a83=[0,a(Y),[0,a(ag),[0,a(P),0]]],a84=[0,a(Y),[0,a(ag),0]],a85=[0,a(Y),[0,a(ag),[0,a(O),0]]],a86=[0,a(Y),[0,a(ag),0]],a88=[0,a(c),jZ,10,jZ,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a8G=[0,a(c),jZ,10,jZ,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a8D=[0,a(C),K6,14,K6,33,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8z=[0,a(C),y5,14,y5,47,[0,a(Ck),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8q=[0,a(Y),[0,a(cT),[0,a(P),0]]],a8r=[0,a(Y),[0,a(cT),0]],a8s=[0,a(Y),[0,a(cT),[0,a(O),0]]],a8t=[0,a(Y),[0,a(cT),0]],a8u=[0,a(Y),[0,a(cT),[0,a(P),0]]],a8v=[0,a(Y),[0,a(cT),0]],a8w=[0,a(Y),[0,a(cT),[0,a(O),0]]],a8x=[0,a(Y),[0,a(cT),0]],a8y=a(p),a8A=[0,a(c),nl,11,nl,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a8p=[0,a(c),nl,11,nl,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a8m=[0,a(C),wW,14,wW,27,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8i=[0,a(C),EF,14,EF,36,[0,a(Ck),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8j=[0,a(c),lV,11,lV,33,[0,a(G),[0,a(t),[0,a(d),0]]]],a8h=[0,a(c),lV,11,lV,33,[0,a(G),[0,a(t),[0,a(d),0]]]],a8e=[0,a(C),AQ,14,AQ,41,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7_=[0,a(C),zs,14,zs,70,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a76=[0,a(C),y0,14,y0,69,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a72=[0,a(C),K7,14,K7,75,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7Y=[0,a(C),DC,14,DC,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7W=a(p),a7X=a(p),a7Z=[0,a(c),jY,10,jY,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a7V=[0,a(c),jY,10,jY,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a7R=[0,a(V),GD,6,GD,74,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7P=a("8414"),a7Q=a("13100"),a7S=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7N=[0,a(V),4342,6,4343,38,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7L=a("20640"),a7M=a("32073"),a7O=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7I=[0,a(V),4360,6,4361,24,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7G=a(C9),a7H=a(H4),a7J=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7F=[0,a(V),4324,6,4325,41,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7D=a(C9),a7E=a(H4),a7K=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7z=[0,a(V),GC,14,GC,41,[0,a("Article 40"),[0,a(gJ),[0,a(R),0]]]],a7v=a(p),a7w=a(fz),a7x=a(hk),a7y=a(fz),a7p=[0,a(C),Iq,14,Iq,61,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7q=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7r=[0,a(Y),[0,a(K9),0]],a7m=[0,a(c),JA,14,JA,49,[0,a(G),[0,a(t),[0,a(d),0]]]],a7i=[0,a(c),x8,14,x8,53,[0,a(G),[0,a(t),[0,a(d),0]]]],a7e=[0,a(c),tj,14,tj,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a7a=[0,a(c),yF,14,yF,70,[0,a(G),[0,a(t),[0,a(d),0]]]],a68=[0,a(c),KO,14,KO,65,[0,a(G),[0,a(t),[0,a(d),0]]]],a64=[0,a(c),Ms,14,Ms,67,[0,a(G),[0,a(t),[0,a(d),0]]]],a60=[0,a(c),y4,14,y4,55,[0,a(G),[0,a(t),[0,a(d),0]]]],a6U=[0,a(c),AH,14,AH,50,[0,a(G),[0,a(t),[0,a(d),0]]]],a6O=[0,a(C),ys,14,ys,64,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6K=[0,a(C),HR,14,HR,59,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6G=[0,a(C),xA,14,xA,55,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6C=[0,a(V),AG,14,AG,51,[0,a("Article 44"),[0,a(gJ),[0,a(R),0]]]],a6B=a(sA),a6x=[0,a(V),mv,14,mv,41,[0,a("Article 41"),[0,a(gJ),[0,a(R),0]]]],a6w=a(jX),a6s=[0,a(V),Hy,14,Hy,42,[0,a("Article 42"),[0,a(gJ),[0,a(R),0]]]],a6r=a(iI),a6t=[0,a(c),og,11,og,39,[0,a(G),[0,a(t),[0,a(d),0]]]],a6q=[0,a(c),og,11,og,39,[0,a(G),[0,a(t),[0,a(d),0]]]],a6u=[0,a(Y),[0,a("montant_minimal_aide_d842_15"),0]],a6y=[0,a(c),oC,11,oC,38,[0,a(G),[0,a(t),[0,a(d),0]]]],a6v=[0,a(c),oC,11,oC,38,[0,a(G),[0,a(t),[0,a(d),0]]]],a6z=[0,a(Y),[0,a("montant_forfaitaire_d842_15"),0]],a6D=[0,a(c),oL,11,oL,48,[0,a(G),[0,a(t),[0,a(d),0]]]],a6A=[0,a(c),oL,11,oL,48,[0,a(G),[0,a(t),[0,a(d),0]]]],a6E=[0,a(Y),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],a6H=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6I=[0,a(Y),[0,a(Je),0]],a6F=[0,a(c),nX,10,nX,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6L=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6M=[0,a(Y),[0,a(my),0]],a6J=[0,a(c),mO,10,mO,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6P=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6Q=[0,a(Y),[0,a(o5),0]],a6N=[0,a(c),n5,10,n5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6R=[0,a(Y),[0,a(gS),[0,a(j5),0]]],a6S=[0,a(Y),[0,a(gS),[0,a(j5),0]]],a6V=[0,a(c),sB,3,sB,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a6W=[0,a(Y),[0,a(j7),0]],a6T=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],a6X=[0,a(Y),[0,a(eW),[0,a(af),0]]],a6Y=[0,a(Y),[0,a(eW),[0,a(af),0]]],a61=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a62=[0,a(Y),[0,a(JW),0]],a6Z=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a65=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a66=[0,a(Y),[0,a(Fi),0]],a63=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a69=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a6_=[0,a(Y),[0,a(Ef),0]],a67=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7b=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7c=[0,a(Y),[0,a(B0),0]],a6$=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7f=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7g=[0,a(Y),[0,a(J9),0]],a7d=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7j=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7k=[0,a(Y),[0,a(D2),0]],a7h=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7n=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7o=[0,a(Y),[0,a(xB),0]],a7l=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7s=[0,a(Y),[0,a(oN),[0,a(_),0]]],a7t=[0,a(Y),[0,a(oN),[0,a(_),0]]],a7A=[0,a(c),pA,10,pA,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a7u=[0,a(c),pA,10,pA,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a7B=[0,a(Y),[0,a(E4),0]],a7T=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7C=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7U=[0,a(Y),[0,a("\xc3\xa9quivalence_loyer"),0]],a70=[0,a(Y),[0,a(ag),0]],a73=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a74=[0,a(Y),[0,a(ob),0]],a71=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a77=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a78=[0,a(Y),[0,a(nk),0]],a75=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7$=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a8a=[0,a(Y),[0,a(n8),0]],a79=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a8b=[0,a(Y),[0,a(gB),[0,a(ei),0]]],a8c=[0,a(Y),[0,a(gB),[0,a(ei),0]]],a8f=[0,a(c),oQ,10,oQ,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a8d=[0,a(c),oQ,10,oQ,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a8g=[0,a(Y),[0,a(zi),0]],a8k=[0,a(Y),[0,a(cT),0]],a8n=[0,a(c),nn,10,nn,23,[0,a(G),[0,a(t),[0,a(d),0]]]],a8l=[0,a(c),nn,10,nn,23,[0,a(G),[0,a(t),[0,a(d),0]]]],a8o=[0,a(Y),[0,a("loyer_minimal"),0]],a8B=[0,a(Y),[0,a(cS),0]],a8E=[0,a(c),n2,10,n2,29,[0,a(G),[0,a(t),[0,a(d),0]]]],a8C=[0,a(c),n2,10,n2,29,[0,a(G),[0,a(t),[0,a(d),0]]]],a8F=[0,a(Y),[0,a(fS),0]],a89=[0,a(Y),[0,a(bn),0]],a9j=[0,a(Y),[0,a(bT),0]],a95=[0,a(Y),[0,a(a4),0]],a_g=[0,a(Y),[0,a(bD),0]],a6m=[0,a(C),JT,24,JT,43,[0,a(LW),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6l=a(p),a6n=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6k=[0,a(c),sv,14,sv,33,[0,a(N),[0,a(t),[0,a(d),0]]]],a6f=[0,a(C),EX,24,EX,46,[0,a(LW),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6g=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a6e=[0,a(c),s0,14,s0,36,[0,a(N),[0,a(t),[0,a(d),0]]]],a6a=[0,a(aj),[0,a(bD),[0,a(P),0]]],a6b=[0,a(aj),[0,a(bD),0]],a6c=[0,a(aj),[0,a(bD),[0,a(O),0]]],a6d=[0,a(aj),[0,a(bD),0]],a6h=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a5$=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a56=[0,a(c),x9,14,x9,59,[0,a(N),[0,a(t),[0,a(d),0]]]],a52=[0,a(c),yo,14,yo,43,[0,a(N),[0,a(t),[0,a(d),0]]]],a5Y=[0,a(c),zo,14,zo,42,[0,a(N),[0,a(t),[0,a(d),0]]]],a5U=[0,a(c),834,5,835,63,[0,a(N),[0,a(t),[0,a(d),0]]]],a5Q=[0,a(c),s1,14,s1,53,[0,a(N),[0,a(t),[0,a(d),0]]]],a5M=[0,a(c),Jh,14,Jh,37,[0,a(N),[0,a(t),[0,a(d),0]]]],a5I=[0,a(c),rP,14,rP,63,[0,a(N),[0,a(t),[0,a(d),0]]]],a5E=[0,a(c),EV,14,EV,58,[0,a(N),[0,a(t),[0,a(d),0]]]],a5A=[0,a(c),kr,14,kr,46,[0,a(N),[0,a(t),[0,a(d),0]]]],a5w=[0,a(c),wY,14,wY,78,[0,a(N),[0,a(t),[0,a(d),0]]]],a5s=[0,a(c),sG,14,sG,60,[0,a(N),[0,a(t),[0,a(d),0]]]],a5n=[0,a(C),mv,5,mv,27,[0,a("Article D842-2"),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a5l=a(pm),a5m=a(kA),a5o=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5k=[0,a(c),zq,14,zq,48,[0,a(N),[0,a(t),[0,a(d),0]]]],a5p=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5q=[0,a(cb),[0,a("calcul_apl_locatif.loyer_principal"),0]],a5j=[0,a(c),mC,10,mC,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5t=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5u=[0,a(cb),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],a5r=[0,a(c),kC,10,kC,37,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5x=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5y=[0,a(cb),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],a5v=[0,a(c),nr,10,nr,55,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5B=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5C=[0,a(cb),[0,a("calcul_apl_locatif.date_courante"),0]],a5z=[0,a(c),l8,10,l8,23,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5F=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5G=[0,a(cb),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],a5D=[0,a(c),mH,10,mH,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5J=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5K=[0,a(cb),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],a5H=[0,a(c),pE,10,pE,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5N=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5O=[0,a(cb),[0,a("calcul_apl_locatif.zone"),0]],a5L=[0,a(c),oV,10,oV,14,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5R=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5S=[0,a(cb),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],a5P=[0,a(c),o7,10,o7,30,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5V=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5W=[0,a(cb),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],a5T=[0,a(c),pt,10,pt,66,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5Z=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a50=[0,a(cb),[0,a("calcul_apl_locatif.type_aide"),0]],a5X=[0,a(c),oU,10,oU,19,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a53=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a54=[0,a(cb),[0,a("calcul_apl_locatif.colocation"),0]],a51=[0,a(c),oc,10,oc,20,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a57=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a58=[0,a(cb),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],a55=[0,a(c),pz,10,pz,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a59=[0,a(cb),[0,a(D0),[0,a(aj),0]]],a5_=[0,a(cb),[0,a(D0),[0,a(aj),0]]],a6i=[0,a(cb),[0,a(a7),0]],a6o=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6j=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6p=[0,a(cb),[0,a(fS),0]],a5d=[0,a(l$),58,5,60,60,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a5e=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5c=[0,a(l$),47,5,48,78,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a5f=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5g=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5b=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5h=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5a=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a48=[0,a(l$),66,5,69,85,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a49=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a47=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a4_=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a46=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a42=[0,a(sR),62,18,62,41,[0,a(yy),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(dk),[0,a(ai),0]]]]]]],a40=a(pB),a41=a(o4),a43=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a4Z=[0,a(sR),31,14,31,30,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],a4X=a(pB),a4Y=a(o4),a4M=[0,0],a4O=[1,0],a4P=[2,0],a4Q=[3,0],a4R=[4,0],a4S=[5,0],a4N=[0,a(l$),pj,5,dV,30,[0,a(Kb),[0,a(Hg),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],a4T=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4L=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4F=[0,a(bO),52,14,52,28,[0,a(bQ),0]],a4B=[0,a(bO),53,14,53,32,[0,a(bQ),0]],a4x=[0,a(sR),21,14,21,26,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],a4w=a(xM),a4y=[0,a(bO),44,10,44,22,[0,a(bQ),0]],a4v=[0,a(bO),44,10,44,22,[0,a(bQ),0]],a4z=[0,a(cG),[0,a(HF),0]],a4C=[0,a(bO),49,3,49,7,[0,a(bQ),0]],a4D=[0,a(cG),[0,a(LL),0]],a4A=[0,a(b3),9,10,9,23,[0,a(B),[0,a(aZ),0]]],a4G=[0,a(bO),49,3,49,7,[0,a(bQ),0]],a4H=[0,a(cG),[0,a(KK),0]],a4E=[0,a(b3),10,10,10,19,[0,a(B),[0,a(aZ),0]]],a4I=[0,a(cG),[0,a(gz),[0,a(is),0]]],a4J=[0,a(cG),[0,a(gz),[0,a(is),0]]],a4U=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4K=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4V=[0,a(cG),[0,a(w0),0]],a44=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a4W=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a45=[0,a(cG),[0,a(Am),0]],a4$=[0,a(cG),[0,a(id),0]],a5i=[0,a(cG),[0,a(dG),0]],a4q=[0,a(C),mY,14,mY,32,[0,a(yA),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4o=a(cY),a4p=a(p),a4j=[0,a(C),IL,6,ts,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4k=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4i=[0,a(C),ku,14,ku,41,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4e=[0,a(C),oT,14,oT,32,[0,a("Article R822-8"),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4d=a(p),a39=[0,a(C),LR,14,LR,65,[0,a(yA),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a35=[0,a(C),J1,14,J1,33,[0,a("Article R822-10"),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3R=a(p),a3S=a(p),a3T=a(ab),a3U=a(Av),a3V=a(Dt),a3W=a(p),a3X=a(p),a3Y=a(p),a3Z=a(p),a30=a(p),a31=a(ab),a32=a(Av),a33=a(Dt),a34=a(p),a3N=[0,a(C),ia,14,ia,62,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3M=a(p),a3I=[0,a(c),hX,51,hX,57,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3E=[0,a(V),11,14,11,41,[0,a("Article 3"),[0,a(GF),[0,a(R),0]]]],a3D=a("9500"),a3z=[0,a(V),21,14,21,41,[0,a("Article 4"),[0,a(GF),[0,a(R),0]]]],a3y=a("258900"),a3u=[0,a(c),yB,46,yB,52,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3v=[0,a(c),mq,10,mq,15,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3t=[0,a(c),mq,10,mq,15,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3w=[0,a(d$),[0,a(Kf),0]],a3A=[0,a(c),o3,11,o3,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3x=[0,a(c),o3,11,o3,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3B=[0,a(d$),[0,a("montant_forfaitaire_r_822_8"),0]],a3F=[0,a(c),pc,11,pc,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3C=[0,a(c),pc,11,pc,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3G=[0,a(d$),[0,a("montant_forfaitaire_r_822_7"),0]],a3J=[0,a(c),hX,11,hX,42,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3H=[0,a(c),hX,11,hX,42,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3K=[0,a(d$),[0,a("ressources_forfaitaires_r822_20"),0]],a3O=[0,a(c),mU,11,mU,59,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3L=[0,a(c),mU,11,mU,59,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3P=[0,a(d$),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],a36=[0,a(c),m1,11,m1,30,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3Q=[0,a(c),m1,11,m1,30,[0,a(cc),[0,a(j),[0,a(d),0]]]],a37=[0,a(d$),[0,a("abattement_r_822_10"),0]],a3_=[0,a(c),sd,3,sd,40,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3$=[0,a(d$),[0,a(KT),0]],a38=[0,a(d9),5,10,5,23,[0,a(b7),0]],a4a=[0,a(d$),[0,a(of),[0,a(gP),0]]],a4b=[0,a(d$),[0,a(of),[0,a(gP),0]]],a4f=[0,a(c),op,11,op,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4c=[0,a(c),op,11,op,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4g=[0,a(d$),[0,a("abattement_r_822_8"),0]],a4l=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4h=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4m=[0,a(d$),[0,a("ressources_prises_en_compte"),0]],a4r=[0,a(c),lQ,11,lQ,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4n=[0,a(c),lQ,11,lQ,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4s=[0,a(d$),[0,a("abattement_r_822_7"),0]],a4t=[0,a(C),iw,13,ne,74,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4u=[0,a(C),iw,13,ne,74,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3j=[0,a(c),yT,14,yT,56,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3f=[0,a(c),rv,14,rv,63,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3d=a(cw),a3e=a(cw),a2$=[0,a(C),Bp,14,Bp,49,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a27=[0,a(aW),[0,a(kG),[0,a(P),0]]],a28=[0,a(aW),[0,a(kG),0]],a29=[0,a(aW),[0,a(kG),[0,a(O),0]]],a2_=[0,a(aW),[0,a(kG),0]],a21=a(CG),a20=[0,a(C),1213,4,1219,49,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a22=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2V=[0,a(aW),[0,a(fB),[0,a(P),0]]],a2W=[0,a(aW),[0,a(fB),0]],a2X=[0,a(aW),[0,a(fB),[0,a(O),0]]],a2Y=[0,a(aW),[0,a(fB),0]],a2Z=[0,a(C),yS,5,yS,44,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a23=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2S=a("21"),a2T=[0,a(C),AD,5,1152,44,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a2U=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2R=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a24=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2Q=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2L=[0,0],a2M=a(CG),a2K=[0,a(C),j_,5,ti,10,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a2N=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2J=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2O=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2I=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2E=[0,a(c),rU,5,hh,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2F=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2D=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2z=[0,a(dX),pN,14,pN,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(am),[0,a(ai),0]]]]]]]],a2t=[0,a(aT),72,5,74,56,[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]],a2u=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2s=[0,a(aT),65,5,68,31,[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]],a2v=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2r=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2k=[0,a(aT),mA,18,mA,75,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2j=a(p),a2l=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2g=[4,0],a2h=[5,0],a2i=[0,a(aT),rx,18,r$,45,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2f=a(p),a2m=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2e=[0,a(C),I7,5,I7,59,[0,a(LB),[0,a(Dm),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a2n=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2d=[0,a(aT),zR,33,zR,58,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2c=a(p),a1_=[0,a(dX),eX,14,eX,32,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],a11=a(J$),a12=a("8"),a13=a(J$),a14=[0,a(C),1057,5,1064,65,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a15=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a10=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a16=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1T=a(cw),a1S=a(cw),a1R=[0,a(aT),171,5,j2,66,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1U=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Q=[0,a(aT),rM,5,s_,30,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1V=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1P=[0,a(aT),eX,5,131,33,[0,a(EE),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1W=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1O=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1J=[0,a(aT),H5,18,H5,55,[0,a("Article L822-10"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1K=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1I=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1D=[0,a(dX),dW,5,s2,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1C=a("999840"),a1E=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1A=[0,a(dX),xf,5,j$,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1z=a("1041840"),a1B=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1x=[0,a(dX),kd,5,jP,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1w=a("1083840"),a1y=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1u=[0,a(f$),33,5,34,34,[0,a(IX),[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),0]]],a1t=a("1100144"),a1v=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1r=[0,a(f$),70,5,71,34,[0,a(IX),[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),0]]],a1q=a("1088175"),a1s=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1l=[0,a(aT),dV,5,iH,78,[0,a(EE),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1m=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1k=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1g=[0,a(aT),Ff,14,Ff,40,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1a=[0,a(dX),e8,14,e8,61,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],a06=[0,a(aT),46,5,46,41,[0,a("Article L821-2"),[0,a(Ab),[0,a(LE),[0,a(za),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]]]],a07=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a05=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a08=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0Z=a("30"),a0Y=[0,a(aT),203,5,207,39,[0,a(CX),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a00=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0X=[0,a(aT),sz,5,198,34,[0,a(CX),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a01=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0W=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0S=[0,a(C),J4,14,J4,69,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0L=a(rA),a0M=a(rA),a0N=a(hb),a0O=a(hb),a0P=a(hb),a0Q=a(rA),a0R=a(hb),a0G=[0,a(aT),dc,18,dc,67,[0,a("Article L822-8"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0H=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0F=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0A=[0,a(aT),EI,18,EI,61,[0,a("Article L822-9"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0B=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0z=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0v=[0,a(C),mT,14,mT,39,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0p=a(x),a0q=a(ab),a0r=a(ab),a0s=a(ab),a0t=a(x),a0u=a(ab),a0l=[0,a(aT),gU,14,gU,43,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0h=[0,a(C),sc,14,sc,37,[0,a(LB),[0,a(Dm),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a0g=a("3000000"),a0c=[0,a(C),bo,14,bo,41,[0,a(Ek),[0,a(I_),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0b=a(CV),aZ9=[0,a(C),ed,14,ed,42,[0,a(Ek),[0,a(I_),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZ8=a(CV),aZ4=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ0=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ1=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZZ=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ2=[0,a(aW),[0,a("condition_pr\xc3\xaat"),0]],aZ5=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ3=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ6=[0,a(aW),[0,a("condition_peuplement_logement_l822_10"),0]],aZ_=[0,a(c),iS,11,iS,39,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ7=[0,a(c),iS,11,iS,39,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ$=[0,a(aW),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],a0d=[0,a(c),kd,11,kd,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0a=[0,a(c),kd,11,kd,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0e=[0,a(aW),[0,a("seuil_l822_3_parts_usufruit"),0]],a0i=[0,a(c),jP,11,jP,34,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0f=[0,a(c),jP,11,jP,34,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0j=[0,a(aW),[0,a("seuil_l822_5_patrimoine"),0]],a0m=[0,a(c),pe,11,pe,40,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0k=[0,a(c),pe,11,pe,40,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0n=[0,a(aW),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],a0w=[0,a(c),mZ,11,mZ,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0o=[0,a(c),mZ,11,mZ,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0x=[0,a(aW),[0,a("nombre_personnes_logement"),0]],a0C=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0y=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0D=[0,a(aW),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],a0I=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0E=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0J=[0,a(aW),[0,a("condition_non_ouverture_l822_8"),0]],a0T=[0,a(c),m_,11,m_,66,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0K=[0,a(c),m_,11,m_,66,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0U=[0,a(aW),[0,a("condition_logement_surface_minimale_sans_seuil_m_carr\xc3\xa9s"),0]],a02=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0V=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a03=[0,a(aW),[0,a("condition_logement_location_tiers"),0]],a09=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a04=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0_=[0,a(aW),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],a1b=[0,a(c),LH,3,LH,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1c=[0,a(aW),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],a0$=[0,a(c),mT,10,mT,31,[0,a(fy),[0,a(t),[0,a(d),0]]]],a1d=[0,a(aW),[0,a(Ci),[0,a(te),0]]],a1e=[0,a(aW),[0,a(Ci),[0,a(te),0]]],a1h=[0,a(c),j$,11,j$,37,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1f=[0,a(c),j$,11,j$,37,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1i=[0,a(aW),[0,a("patrimoine_total_demandeur"),0]],a1n=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1j=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1o=[0,a(aW),[0,a("condition_nationalit\xc3\xa9"),0]],a1F=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1p=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1G=[0,a(aW),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],a1L=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1H=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1M=[0,a(aW),[0,a("condition_non_ouverture_l822_10_peuplement_logement"),0]],a1X=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1N=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Y=[0,a(aW),[0,a("condition_logement_mode_occupation"),0]],a17=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Z=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a18=[0,a(aW),[0,a("condition_logement_surface"),0]],a1$=[0,a(c),oD,11,oD,29,[0,a(Z),[0,a(j),[0,a(d),0]]]],a19=[0,a(c),oD,11,oD,29,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2a=[0,a(aW),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],a2o=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2b=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2p=[0,a(aW),[0,a("patrimoine_pris_en_compte"),0]],a2w=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2q=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2x=[0,a(aW),[0,a(A9),0]],a2A=[0,a(c),mW,11,mW,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2y=[0,a(c),mW,11,mW,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2B=[0,a(aW),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],a2G=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2C=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2H=[0,a(aW),[0,a(o_),0]],a2P=[0,a(aW),[0,a(fB),0]],a25=[0,a(aW),[0,a(kG),0]],a3a=[0,a(c),na,11,na,46,[0,a(Z),[0,a(j),[0,a(d),0]]]],a26=[0,a(c),na,11,na,46,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3b=[0,a(aW),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],a3g=[0,a(c),ot,10,ot,59,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3c=[0,a(c),ot,10,ot,59,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3h=[0,a(aW),[0,a(kw),0]],a3k=[0,a(c),ou,10,ou,52,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3i=[0,a(c),ou,10,ou,52,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3l=[0,a(aW),[0,a(tu),0]],a3n=a(su),a3m=[0,a(aT),hY,13,hY,48,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3r=[0,a(aT),hY,13,hY,48,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3p=a(su),a3o=[0,a(aT),hn,13,hn,49,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3q=[0,a(aT),hn,13,hn,49,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aZW=[0,a(C),K$,14,K$,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZN=[0,a(U),[0,a(a4),[0,a(P),0]]],aZO=[0,a(U),[0,a(a4),0]],aZP=[0,a(U),[0,a(a4),[0,a(O),0]]],aZQ=[0,a(U),[0,a(a4),0]],aZR=a(p),aZS=[0,a(U),[0,a(a4),[0,a(P),0]]],aZT=[0,a(U),[0,a(a4),0]],aZU=[0,a(U),[0,a(a4),[0,a(O),0]]],aZV=[0,a(U),[0,a(a4),0]],aZX=[0,a(c),o$,10,o$,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZM=[0,a(c),o$,10,o$,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZJ=[0,a(C),zM,14,zM,33,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZH=a(p),aZI=a(p),aZD=[0,a(C),Dk,14,Dk,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYX=a(p),aYY=[0,a(U),[0,a(aR),[0,a(P),0]]],aYZ=[0,a(U),[0,a(aR),0]],aY0=[0,a(U),[0,a(aR),[0,a(O),0]]],aY1=[0,a(U),[0,a(aR),0]],aY2=[0,a(af),[0,a(al),[0,a(P),0]]],aY3=[0,a(af),[0,a(al),0]],aY4=[0,a(af),[0,a(al),[0,a(O),0]]],aY5=[0,a(af),[0,a(al),0]],aY6=a(e1),aY7=[0,a(U),[0,a(aR),[0,a(P),0]]],aY8=[0,a(U),[0,a(aR),0]],aY9=[0,a(U),[0,a(aR),[0,a(O),0]]],aY_=[0,a(U),[0,a(aR),0]],aY$=[0,a(af),[0,a(al),[0,a(P),0]]],aZa=[0,a(af),[0,a(al),0]],aZb=[0,a(af),[0,a(al),[0,a(O),0]]],aZc=[0,a(af),[0,a(al),0]],aZd=[0,a(U),[0,a(aR),[0,a(P),0]]],aZe=[0,a(U),[0,a(aR),0]],aZf=[0,a(U),[0,a(aR),[0,a(O),0]]],aZg=[0,a(U),[0,a(aR),0]],aZh=[0,a(U),[0,a(aR),[0,a(P),0]]],aZi=[0,a(U),[0,a(aR),0]],aZj=[0,a(U),[0,a(aR),[0,a(O),0]]],aZk=[0,a(U),[0,a(aR),0]],aZl=[0,a(af),[0,a(al),[0,a(P),0]]],aZm=[0,a(af),[0,a(al),0]],aZn=[0,a(af),[0,a(al),[0,a(O),0]]],aZo=[0,a(af),[0,a(al),0]],aZp=a(e1),aZq=[0,a(U),[0,a(aR),[0,a(P),0]]],aZr=[0,a(U),[0,a(aR),0]],aZs=[0,a(U),[0,a(aR),[0,a(O),0]]],aZt=[0,a(U),[0,a(aR),0]],aZu=[0,a(af),[0,a(al),[0,a(P),0]]],aZv=[0,a(af),[0,a(al),0]],aZw=[0,a(af),[0,a(al),[0,a(O),0]]],aZx=[0,a(af),[0,a(al),0]],aZy=[0,a(U),[0,a(aR),[0,a(P),0]]],aZz=[0,a(U),[0,a(aR),0]],aZA=[0,a(U),[0,a(aR),[0,a(O),0]]],aZB=[0,a(U),[0,a(aR),0]],aZC=a(p),aZE=[0,a(c),os,10,os,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYW=[0,a(c),os,10,os,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYT=[0,a(C),GP,14,GP,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYR=a(ip),aYS=a(ip),aYN=[0,a(C),CU,14,CU,33,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYJ=[0,a(C),LG,14,LG,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYj=a(p),aYk=[0,a(U),[0,a(ag),[0,a(P),0]]],aYl=[0,a(U),[0,a(ag),0]],aYm=[0,a(U),[0,a(ag),[0,a(O),0]]],aYn=[0,a(U),[0,a(ag),0]],aYo=[0,a(U),[0,a(fR),[0,a(P),0]]],aYp=[0,a(U),[0,a(fR),0]],aYq=[0,a(U),[0,a(fR),[0,a(O),0]]],aYr=[0,a(U),[0,a(fR),0]],aYs=[0,a(U),[0,a(ag),[0,a(P),0]]],aYt=[0,a(U),[0,a(ag),0]],aYu=[0,a(U),[0,a(ag),[0,a(O),0]]],aYv=[0,a(U),[0,a(ag),0]],aYw=[0,a(U),[0,a(ag),[0,a(P),0]]],aYx=[0,a(U),[0,a(ag),0]],aYy=[0,a(U),[0,a(ag),[0,a(O),0]]],aYz=[0,a(U),[0,a(ag),0]],aYA=[0,a(U),[0,a(fR),[0,a(P),0]]],aYB=[0,a(U),[0,a(fR),0]],aYC=[0,a(U),[0,a(fR),[0,a(O),0]]],aYD=[0,a(U),[0,a(fR),0]],aYE=[0,a(U),[0,a(ag),[0,a(P),0]]],aYF=[0,a(U),[0,a(ag),0]],aYG=[0,a(U),[0,a(ag),[0,a(O),0]]],aYH=[0,a(U),[0,a(ag),0]],aYI=a(p),aYK=[0,a(c),pI,10,pI,20,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYi=[0,a(c),pI,10,pI,20,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYf=[0,a(C),BO,14,BO,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYc=a(dU),aYd=a(dU),aYe=a(lT),aX9=[0,a(C),3496,5,3508,77,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aX7=a(cY),aX8=a(cw),aX_=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX5=[0,a(C),BU,5,BU,75,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aX6=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXZ=[0,a(cn),gH,14,gH,42,[0,a(pn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aXY=a(fF),aX0=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXX=[0,a(V),A8,14,A8,42,[0,a(pn),[0,a(aK),[0,a(R),0]]]],aXW=a(fF),aX1=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXS=[0,a(C),Mg,14,Mg,55,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXJ=[0,a(U),[0,a(fN),[0,a(P),0]]],aXK=[0,a(U),[0,a(fN),0]],aXL=[0,a(U),[0,a(fN),[0,a(O),0]]],aXM=[0,a(U),[0,a(fN),0]],aXN=[0,a(U),[0,a(fN),[0,a(P),0]]],aXO=[0,a(U),[0,a(fN),0]],aXP=[0,a(U),[0,a(fN),[0,a(O),0]]],aXQ=[0,a(U),[0,a(fN),0]],aXR=a(p),aXT=[0,a(c),nU,11,nU,52,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXI=[0,a(c),nU,11,nU,52,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXF=[0,a(C),Eg,14,Eg,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXE=a(ip),aXy=[0,a(C),D7,14,D7,70,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXu=[0,a(C),EW,14,EW,69,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXq=[0,a(C),xb,14,xb,75,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXl=[0,a(C),C$,5,C$,44,[0,a(Bd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aW7=[0,a(U),[0,a(cl),[0,a(P),0]]],aW8=[0,a(U),[0,a(cl),0]],aW9=[0,a(U),[0,a(cl),[0,a(O),0]]],aW_=[0,a(U),[0,a(cl),0]],aW$=[0,a(U),[0,a(cl),[0,a(P),0]]],aXa=[0,a(U),[0,a(cl),0]],aXb=[0,a(U),[0,a(cl),[0,a(O),0]]],aXc=[0,a(U),[0,a(cl),0]],aXd=[0,a(U),[0,a(cl),[0,a(P),0]]],aXe=[0,a(U),[0,a(cl),0]],aXf=[0,a(U),[0,a(cl),[0,a(O),0]]],aXg=[0,a(U),[0,a(cl),0]],aXh=[0,a(U),[0,a(cl),[0,a(P),0]]],aXi=[0,a(U),[0,a(cl),0]],aXj=[0,a(U),[0,a(cl),[0,a(O),0]]],aXk=[0,a(U),[0,a(cl),0]],aXm=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aW6=[0,a(C),KA,14,KA,42,[0,a(Bd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aW2=[0,a(U),[0,a(cl),[0,a(P),0]]],aW3=[0,a(U),[0,a(cl),0]],aW4=[0,a(U),[0,a(cl),[0,a(O),0]]],aW5=[0,a(U),[0,a(cl),0]],aWX=[0,a(C),F0,5,F0,41,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWY=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWW=[0,a(C),G2,14,G2,44,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWZ=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWV=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWS=[0,a(C),w8,14,w8,36,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWN=[0,a(V),621,5,624,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aWv=a(p),aWw=a(Gl),aWx=a(Fs),aWy=a(x),aWz=a(EK),aWA=a(Hr),aWB=a(p),aWC=a(AJ),aWD=a(sk),aWE=a(x),aWF=a(rF),aWG=a(sY),aWH=a(p),aWI=a(HL),aWJ=a(tx),aWK=a(x),aWL=a("35600"),aWM=a(kf),aWO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWt=[0,a(V),665,5,kv,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aWb=a(p),aWc=a(Hd),aWd=a(tf),aWe=a(x),aWf=a("37400"),aWg=a(JM),aWh=a(p),aWi=a("146900"),aWj=a(Hz),aWk=a(x),aWl=a(sj),aWm=a("210600"),aWn=a(p),aWo=a(CY),aWp=a("167600"),aWq=a(x),aWr=a("27900"),aWs=a("195500"),aWu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aV$=[0,a(V),ky,5,jW,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aVT=a(p),aVU=a(tc),aVV=a("220000"),aVW=a(x),aVX=a("38000"),aVY=a("260000"),aVZ=a(p),aV0=a("164200"),aV1=a(zT),aV2=a(x),aV3=a(Ez),aV4=a("231200"),aV5=a(p),aV6=a("153200"),aV7=a("183700"),aV8=a(x),aV9=a(sj),aV_=a("214200"),aWa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVR=[0,a(V),rD,5,755,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aVz=a(p),aVA=a("148100"),aVB=a("178700"),aVC=a(x),aVD=a("30600"),aVE=a("209300"),aVF=a(p),aVG=a(Bh),aVH=a("158900"),aVI=a(x),aVJ=a("26900"),aVK=a(zd),aVL=a(p),aVM=a("123300"),aVN=a("147900"),aVO=a(x),aVP=a("24600"),aVQ=a(C4),aVS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVx=[0,a(V),804,5,sa,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aVf=a(p),aVg=a(Gl),aVh=a(Fs),aVi=a(x),aVj=a(EK),aVk=a(Hr),aVl=a(p),aVm=a(AJ),aVn=a(sk),aVo=a(x),aVp=a(rF),aVq=a(sY),aVr=a(p),aVs=a(HL),aVt=a(tx),aVu=a(x),aVv=a(zk),aVw=a(kf),aVy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVd=[0,a(V),848,5,IL,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUX=a(p),aUY=a(Hd),aUZ=a(tf),aU0=a(x),aU1=a("34700"),aU2=a(JM),aU3=a(p),aU4=a("149600"),aU5=a(sk),aU6=a(x),aU7=a(rF),aU8=a(sY),aU9=a(p),aU_=a(CY),aU$=a(tx),aVa=a(x),aVb=a(zk),aVc=a(kf),aVe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUV=[0,a(V),895,5,901,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUP=a(p),aUQ=a("86900"),aUR=a("97100"),aUS=a(x),aUT=a("10200"),aUU=a("107300"),aUW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUN=[0,a(V),927,5,930,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUv=a(p),aUw=a("198100"),aUx=a("239000"),aUy=a(x),aUz=a("40900"),aUA=a("279900"),aUB=a(p),aUC=a("176800"),aUD=a("212800"),aUE=a(x),aUF=a("36000"),aUG=a("248800"),aUH=a(p),aUI=a("165000"),aUJ=a("197900"),aUK=a(x),aUL=a("32900"),aUM=a("230800"),aUO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUt=[0,a(V),sB,5,974,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUb=a(p),aUc=a("159500"),aUd=a(xS),aUe=a(x),aUf=a("33000"),aUg=a(Hn),aUh=a(p),aUi=a("142200"),aUj=a("171200"),aUk=a(x),aUl=a("29000"),aUm=a("200200"),aUn=a(p),aUo=a("132800"),aUp=a("159300"),aUq=a(x),aUr=a("26500"),aUs=a(zd),aUu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aT$=[0,a(V),1016,5,1019,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTT=a(p),aTU=a("200100"),aTV=a("141400"),aTW=a(x),aTX=a("41300"),aTY=a("282700"),aTZ=a(p),aT0=a("178600"),aT1=a("215000"),aT2=a(x),aT3=a("36400"),aT4=a("251400"),aT5=a(p),aT6=a("166700"),aT7=a(sL),aT8=a(x),aT9=a("33200"),aT_=a("233100"),aUa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTR=[0,a(V),1060,5,1063,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTz=a(p),aTA=a("161100"),aTB=a("194400"),aTC=a(x),aTD=a("33300"),aTE=a("227700"),aTF=a(p),aTG=a("143600"),aTH=a("172900"),aTI=a(x),aTJ=a("29300"),aTK=a("202200"),aTL=a(p),aTM=a("134100"),aTN=a("160900"),aTO=a(x),aTP=a("26800"),aTQ=a("187700"),aTS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTx=[0,a(V),sU,5,tE,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTf=a(p),aTg=a(tf),aTh=a("244300"),aTi=a(x),aTj=a("41800"),aTk=a("286100"),aTl=a(p),aTm=a("180700"),aTn=a("217500"),aTo=a(x),aTp=a("36800"),aTq=a("254300"),aTr=a(p),aTs=a("168700"),aTt=a("202300"),aTu=a(x),aTv=a("33600"),aTw=a("235900"),aTy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTd=[0,a(V),AD,5,1153,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSX=a(p),aSY=a("30871"),aSZ=a("37243"),aS0=a(x),aS1=a("6372"),aS2=a("43615"),aS3=a(p),aS4=a("27548"),aS5=a("33148"),aS6=a(x),aS7=a("5610"),aS8=a("38768"),aS9=a(p),aS_=a("25718"),aS$=a("30840"),aTa=a(x),aTb=a("5122"),aTc=a("35962"),aTe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSV=[0,a(V),sy,5,1199,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSD=a(p),aSE=a(GO),aSF=a("196700"),aSG=a(x),aSH=a("33700"),aSI=a("230400"),aSJ=a(p),aSK=a("145300"),aSL=a("175000"),aSM=a(x),aSN=a("29700"),aSO=a(Cx),aSP=a(p),aSQ=a("135700"),aSR=a("162800"),aSS=a(x),aST=a("27100"),aSU=a("189900"),aSW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSB=[0,a(V),1239,5,1242,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSj=a(p),aSk=a("24849"),aSl=a("29987"),aSm=a(x),aSn=a("5138"),aSo=a("35125"),aSp=a(p),aSq=a("22151"),aSr=a("26679"),aSs=a(x),aSt=a("4528"),aSu=a("31207"),aSv=a(p),aSw=a("20687"),aSx=a("24818"),aSy=a(x),aSz=a("4131"),aSA=a("28949"),aSC=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSh=[0,a(V),1284,5,1287,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aR1=a(p),aR2=a("31241"),aR3=a("37689"),aR4=a(x),aR5=a("6448"),aR6=a("44137"),aR7=a(p),aR8=a("27879"),aR9=a("33556"),aR_=a(x),aR$=a("5677"),aSa=a("39233"),aSb=a(p),aSc=a("26027"),aSd=a("31210"),aSe=a(x),aSf=a("5183"),aSg=a("36393"),aSi=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRZ=[0,a(V),1328,5,1331,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aRH=a(p),aRI=a("25147"),aRJ=a("30347"),aRK=a(x),aRL=a("5200"),aRM=a("35547"),aRN=a(p),aRO=a("22417"),aRP=a("26999"),aRQ=a(x),aRR=a("4582"),aRS=a("31581"),aRT=a(p),aRU=a("20935"),aRV=a(JN),aRW=a(x),aRX=a("4181"),aRY=a("29297"),aR0=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRF=[0,a(V),1373,5,1376,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aRn=a(p),aRo=a("31616"),aRp=a("38141"),aRq=a(x),aRr=a("6525"),aRs=a("44666"),aRt=a(p),aRu=a("28214"),aRv=a("33959"),aRw=a(x),aRx=a("5745"),aRy=a("39704"),aRz=a(p),aRA=a("26339"),aRB=a("31584"),aRC=a(x),aRD=a("5245"),aRE=a("36829"),aRG=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRl=[0,a(V),1417,5,1420,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQ5=a(p),aQ6=a("25449"),aQ7=a("30711"),aQ8=a(x),aQ9=a("5262"),aQ_=a("35973"),aQ$=a(p),aRa=a("22686"),aRb=a("27323"),aRc=a(x),aRd=a("4637"),aRe=a("31960"),aRf=a(p),aRg=a("21186"),aRh=a("25417"),aRi=a(x),aRj=a("4231"),aRk=a("26948"),aRm=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQ3=[0,a(V),1462,5,DT,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQL=a(p),aQM=a("32185"),aQN=a("38827"),aQO=a(x),aQP=a("6642"),aQQ=a("45469"),aQR=a(p),aQS=a("28722"),aQT=a(G0),aQU=a(x),aQV=a("5848"),aQW=a("40418"),aQX=a(p),aQY=a("26813"),aQZ=a("32152"),aQ0=a(x),aQ1=a("5339"),aQ2=a("37491"),aQ4=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQJ=[0,a(V),1506,5,1509,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQr=a(p),aQs=a("25907"),aQt=a(yr),aQu=a(x),aQv=a("5357"),aQw=a("36621"),aQx=a(p),aQy=a("23094"),aQz=a("27814"),aQA=a(x),aQB=a("4720"),aQC=a("32534"),aQD=a(p),aQE=a("21567"),aQF=a("25874"),aQG=a(x),aQH=a("4307"),aQI=a("30881"),aQK=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQp=[0,a(V),1551,5,1554,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aP9=a(p),aP_=a(GT),aP$=a("39914"),aQa=a(x),aQb=a("6828"),aQc=a("46742"),aQd=a(p),aQe=a("29526"),aQf=a("35538"),aQg=a(x),aQh=a("6012"),aQi=a("41550"),aQj=a(p),aQk=a("27564"),aQl=a("33052"),aQm=a(x),aQn=a("5488"),aQo=a("38541"),aQq=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aP7=[0,a(V),Bt,5,1598,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPP=a(p),aPQ=a("26632"),aPR=a("32139"),aPS=a(x),aPT=a("5507"),aPU=a("37646"),aPV=a(p),aPW=a("23741"),aPX=a("28593"),aPY=a(x),aPZ=a("4852"),aP0=a("33445"),aP1=a(p),aP2=a("22171"),aP3=a("36598"),aP4=a(x),aP5=a("4428"),aP6=a("31026"),aP8=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aPN=[0,a(V),1640,5,1643,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPv=a(p),aPw=a("33999"),aPx=a("41016"),aPy=a(x),aPz=a("7016"),aPA=a("48032"),aPB=a(p),aPC=a("30341"),aPD=a("36519"),aPE=a(x),aPF=a("6178"),aPG=a("42697"),aPH=a(p),aPI=a("28325"),aPJ=a("33964"),aPK=a(x),aPL=a("5639"),aPM=a("39605"),aPO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aPt=[0,a(V),1684,5,1687,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPb=a(p),aPc=a("27367"),aPd=a(GT),aPe=a(x),aPf=a("5659"),aPg=a("38685"),aPh=a(p),aPi=a("24396"),aPj=a("29382"),aPk=a(x),aPl=a(JF),aPm=a("34368"),aPn=a(p),aPo=a("22783"),aPp=a("27332"),aPq=a(x),aPr=a("4550"),aPs=a("31882"),aPu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aO$=[0,a(V),sx,5,1732,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOT=a(p),aOU=a("35002"),aOV=a("42226"),aOW=a(x),aOX=a("7223"),aOY=a("49449"),aOZ=a(p),aO0=a("31236"),aO1=a("37596"),aO2=a(x),aO3=a("6360"),aO4=a("43957"),aO5=a(p),aO6=a("29161"),aO7=a("34966"),aO8=a(x),aO9=a("5805"),aO_=a("40773"),aPa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOR=[0,a(V),1773,5,1776,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOz=a(p),aOA=a("28174"),aOB=a("34000"),aOC=a(x),aOD=a("5826"),aOE=a("39826"),aOF=a(p),aOG=a(JN),aOH=a("30249"),aOI=a(x),aOJ=a("5133"),aOK=a("35382"),aOL=a(p),aOM=a("23455"),aON=a("28138"),aOO=a(x),aOP=a("4684"),aOQ=a("32823"),aOS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOx=[0,a(V),1818,5,1821,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOf=a(p),aOg=a("35114"),aOh=a("42361"),aOi=a(x),aOj=a("7246"),aOk=a("49607"),aOl=a(p),aOm=a("31336"),aOn=a("37716"),aOo=a(x),aOp=a("6380"),aOq=a("44098"),aOr=a(p),aOs=a("29254"),aOt=a("35078"),aOu=a(x),aOv=a("5824"),aOw=a("40903"),aOy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOd=[0,a(V),r2,5,1865,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aNX=a(p),aNY=a("28264"),aNZ=a("34109"),aN0=a(x),aN1=a("5845"),aN2=a("39953"),aN3=a(p),aN4=a("25196"),aN5=a("30346"),aN6=a(x),aN7=a("5149"),aN8=a("35495"),aN9=a(p),aN_=a("23530"),aN$=a("28228"),aOa=a(x),aOb=a("4699"),aOc=a("32928"),aOe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNV=[0,a(V),1907,5,1910,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aND=a(p),aNE=a("35500"),aNF=a("42827"),aNG=a(x),aNH=a("7326"),aNI=a("50153"),aNJ=a(p),aNK=a("31681"),aNL=a("38131"),aNM=a(x),aNN=a("6450"),aNO=a("44583"),aNP=a(p),aNQ=a("29576"),aNR=a("35464"),aNS=a(x),aNT=a("5888"),aNU=a("41353"),aNW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNB=[0,a(V),iU,5,1954,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aNj=a(p),aNk=a("28575"),aNl=a("34484"),aNm=a(x),aNn=a("5909"),aNo=a("40392"),aNp=a(p),aNq=a("25473"),aNr=a("30680"),aNs=a(x),aNt=a("5206"),aNu=a("35885"),aNv=a(p),aNw=a("23789"),aNx=a("28539"),aNy=a(x),aNz=a("4751"),aNA=a("33290"),aNC=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNh=[0,a(V),1996,5,j3,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aM1=a(p),aM2=a("35855"),aM3=a("43255"),aM4=a(x),aM5=a("7399"),aM6=a("50655"),aM7=a(p),aM8=a("31998"),aM9=a("38512"),aM_=a(x),aM$=a("6515"),aNa=a("45029"),aNb=a(p),aNc=a("29872"),aNd=a("35819"),aNe=a(x),aNf=a("5947"),aNg=a("41767"),aNi=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMZ=[0,a(V),2071,5,2074,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aMH=a(p),aMI=a("28861"),aMJ=a(Ll),aMK=a(x),aML=a("5968"),aMM=a("40796"),aMN=a(p),aMO=a("25728"),aMP=a("30987"),aMQ=a(x),aMR=a("5258"),aMS=a("36244"),aMT=a(p),aMU=a("24027"),aMV=a("28824"),aMW=a(x),aMX=a("4799"),aMY=a(HW),aM0=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMF=[0,a(V),2118,5,2121,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aMn=a(p),aMo=a("36626"),aMp=a("44185"),aMq=a(x),aMr=a("7558"),aMs=a("51744"),aMt=a(p),aMu=a("32686"),aMv=a(y$),aMw=a(x),aMx=a("6655"),aMy=a("45997"),aMz=a(p),aMA=a("30514"),aMB=a("36589"),aMC=a(x),aMD=a("6075"),aME=a("42665"),aMG=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMl=[0,a(V),2162,5,2165,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aL5=a(p),aL6=a("29482"),aL7=a("35578"),aL8=a(x),aL9=a("6096"),aL_=a("41673"),aL$=a(p),aMa=a("26281"),aMb=a("31653"),aMc=a(x),aMd=a("5371"),aMe=a("37023"),aMf=a(p),aMg=a("24544"),aMh=a("29444"),aMi=a(x),aMj=a("4902"),aMk=a("34346"),aMm=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aL3=[0,a(V),2207,5,2210,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aLL=a(p),aLM=a("36835"),aLN=a("44437"),aLO=a(x),aLP=a("7601"),aLQ=a("52039"),aLR=a(p),aLS=a("32872"),aLT=a("39564"),aLU=a(x),aLV=a("6693"),aLW=a("46259"),aLX=a(p),aLY=a("30688"),aLZ=a("36798"),aL0=a(x),aL1=a("6110"),aL2=a("42908"),aL4=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aLJ=[0,a(V),2251,5,2254,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aLr=a(p),aLs=a("29650"),aLt=a("35781"),aLu=a(x),aLv=a("6131"),aLw=a("41911"),aLx=a(p),aLy=a("26431"),aLz=a("31833"),aLA=a(x),aLB=a("5402"),aLC=a("37234"),aLD=a(p),aLE=a("24684"),aLF=a("29612"),aLG=a(x),aLH=a("4930"),aLI=a("34542"),aLK=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aLp=[0,a(V),2296,5,2299,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aK9=a(p),aK_=a("36864"),aK$=a("44473"),aLa=a(x),aLb=a("7607"),aLc=a("52081"),aLd=a(p),aLe=a("32898"),aLf=a("39596"),aLg=a(x),aLh=a("6698"),aLi=a("46296"),aLj=a(p),aLk=a("30713"),aLl=a("36827"),aLm=a(x),aLn=a("6115"),aLo=a("42942"),aLq=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aK7=[0,a(V),2340,5,2343,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKP=a(p),aKQ=a("29674"),aKR=a("35810"),aKS=a(x),aKT=a("6136"),aKU=a("41945"),aKV=a(p),aKW=a("26452"),aKX=a("31858"),aKY=a(x),aKZ=a("5406"),aK0=a("37264"),aK1=a(p),aK2=a("24704"),aK3=a("29636"),aK4=a(x),aK5=a("4934"),aK6=a(G0),aK8=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aKN=[0,a(V),2385,5,2388,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKv=a(p),aKw=a("37140"),aKx=a("44807"),aKy=a(x),aKz=a("7664"),aKA=a("52472"),aKB=a(p),aKC=a("33145"),aKD=a("39893"),aKE=a(x),aKF=a("6748"),aKG=a("46643"),aKH=a(p),aKI=a("30943"),aKJ=a("37103"),aKK=a(x),aKL=a("6161"),aKM=a("43264"),aKO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aKt=[0,a(V),2429,5,2432,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKb=a(p),aKc=a("29897"),aKd=a("36079"),aKe=a(x),aKf=a("6182"),aKg=a("42260"),aKh=a(p),aKi=a("26650"),aKj=a("32097"),aKk=a(x),aKl=a("5447"),aKm=a("37543"),aKn=a(p),aKo=a("24889"),aKp=a("29858"),aKq=a(x),aKr=a("4971"),aKs=a(Ll),aKu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJ$=[0,a(V),2474,5,2476,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aJT=a(p),aJU=a("37252"),aJV=a("44941"),aJW=a(x),aJX=a("7687"),aJY=a("52629"),aJZ=a(p),aJ0=a("33244"),aJ1=a("40013"),aJ2=a(x),aJ3=a("6768"),aJ4=a("46783"),aJ5=a(p),aJ6=a("31036"),aJ7=a("37215"),aJ8=a(x),aJ9=a("6179"),aJ_=a("43394"),aKa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJR=[0,a(V),2517,5,2519,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aJz=a(p),aJA=a("29986"),aJB=a("36187"),aJC=a(x),aJD=a("6201"),aJE=a("42386"),aJF=a(p),aJG=a("26730"),aJH=a("32193"),aJI=a(x),aJJ=a("5463"),aJK=a("37656"),aJL=a(p),aJM=a("24964"),aJN=a("29948"),aJO=a(x),aJP=a(JF),aJQ=a("34934"),aJS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWP=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJu=[0,a(C),Bc,5,Bc,28,[0,a(CN),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJv=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJt=[0,a(C),BL,14,BL,44,[0,a(CN),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJp=[0,a(C),Au,14,Au,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJn=a(p),aJo=a(p),aJq=[0,a(c),ph,10,ph,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJm=[0,a(c),ph,10,ph,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJh=[0,a(V),LP,7,LP,18,[0,a(pn),[0,a(aK),[0,a(R),0]]]],aJe=a(hk),aJf=a(ry),aJg=a(fz),aJi=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJc=[0,a(cn),Me,7,Me,18,[0,a(pn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aI$=a(nB),aJa=a(BH),aJb=a(mg),aJd=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJj=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI8=[0,a(V),HB,29,HB,64,[0,a(s7),[0,a(aK),[0,a(R),0]]]],aI6=a(hk),aI7=a(fz),aI9=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI4=[0,a(cn),cW,29,cW,64,[0,a(s7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aI2=a(nB),aI3=a(mg),aI5=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI_=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIW=[0,a(c),CC,14,CC,50,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIS=[0,a(V),BZ,14,BZ,50,[0,a("Article 25"),[0,a(aK),[0,a(R),0]]]],aIN=a(F4),aIO=a(sn),aIP=a("0.0172"),aIQ=a(F4),aIR=a(sn),aIH=[0,a(C),oO,14,oO,64,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aID=[0,a(C),x4,14,x4,59,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aIz=[0,a(f$),no,14,no,36,[0,a(Kk),[0,a(zJ),0]]],aIx=a(Fe),aIy=a(eP),aIt=[0,a(V),Ex,14,Ex,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIs=a("0.416"),aIo=[0,a(V),J0,14,J0,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIn=a(w2),aIj=[0,a(V),zB,14,zB,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIi=a("560085"),aIe=[0,a(V),xD,14,xD,48,[0,a("Article 26"),[0,a(aK),[0,a(R),0]]]],aId=a(AI),aH$=[0,a(V),Ey,15,Ey,49,[0,a("Article 22"),[0,a(aK),[0,a(R),0]]]],aH_=a("2211133"),aH6=[0,a(V),Hu,14,Hu,42,[0,a("Article 21"),[0,a(aK),[0,a(R),0]]]],aH5=a(iI),aH1=[0,a(V),Kz,14,Kz,41,[0,a("Article 20"),[0,a(aK),[0,a(R),0]]]],aH0=a(jX),aH2=[0,a(c),mJ,11,mJ,38,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHZ=[0,a(c),mJ,11,mJ,38,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH3=[0,a(U),[0,a("montant_forfaitaire_d832_10"),0]],aH7=[0,a(c),kD,11,kD,39,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH4=[0,a(c),kD,11,kD,39,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH8=[0,a(U),[0,a("montant_minimal_aide_d832_10"),0]],aIa=[0,a(c),ps,11,ps,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH9=[0,a(c),ps,11,ps,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIb=[0,a(U),[0,a("coefficient_multiplicateur_d832_11"),0]],aIf=[0,a(c),mQ,11,mQ,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIc=[0,a(c),mQ,11,mQ,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIg=[0,a(U),[0,a("coefficient_multiplicateur_d832_18"),0]],aIk=[0,a(c),or,11,or,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIh=[0,a(c),or,11,or,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIl=[0,a(U),[0,a("montant_limite_tranches_d832_15_1"),0]],aIp=[0,a(c),nv,11,nv,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIm=[0,a(c),nv,11,nv,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIq=[0,a(U),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aIu=[0,a(c),m$,11,m$,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIr=[0,a(c),m$,11,m$,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIv=[0,a(U),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aIA=[0,a(c),n1,11,n1,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIw=[0,a(c),n1,11,n1,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIB=[0,a(U),[0,a(Ej),0]],aIE=[0,a(c),oF,3,oF,22,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIF=[0,a(U),[0,a(my),0]],aIC=[0,a(c),pD,10,pD,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aII=[0,a(c),oF,3,oF,22,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIJ=[0,a(U),[0,a(o5),0]],aIG=[0,a(c),ml,10,ml,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIK=[0,a(U),[0,a(gS),[0,a(ks),0]]],aIL=[0,a(U),[0,a(gS),[0,a(ks),0]]],aIT=[0,a(c),l6,11,l6,47,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIM=[0,a(c),l6,11,l6,47,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIU=[0,a(U),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aIX=[0,a(c),nS,3,nS,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIY=[0,a(U),[0,a(j7),0]],aIV=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aIZ=[0,a(U),[0,a(eW),[0,a(af),0]]],aI0=[0,a(U),[0,a(eW),[0,a(af),0]]],aJk=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI1=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJl=[0,a(U),[0,a("montant_forfaitaire_charges_d832_10"),0]],aJr=[0,a(U),[0,a(ag),0]],aJw=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJs=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJx=[0,a(U),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aWQ=[0,a(U),[0,a(cl),0]],aWT=[0,a(c),ky,11,ky,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWR=[0,a(c),ky,11,ky,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWU=[0,a(U),[0,a(xp),0]],aW0=[0,a(U),[0,a(fN),0]],aXn=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aW1=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXo=[0,a(U),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aXr=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXs=[0,a(U),[0,a(ob),0]],aXp=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXv=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXw=[0,a(U),[0,a(nk),0]],aXt=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXz=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXA=[0,a(U),[0,a(n8),0]],aXx=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXB=[0,a(U),[0,a(gB),[0,a(ei),0]]],aXC=[0,a(U),[0,a(gB),[0,a(ei),0]]],aXG=[0,a(c),jW,10,jW,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXD=[0,a(c),jW,10,jW,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXH=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aXU=[0,a(U),[0,a(fR),0]],aX2=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXV=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX3=[0,a(U),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aX$=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX4=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYa=[0,a(U),[0,a(zv),0]],aYg=[0,a(c),oE,10,oE,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYb=[0,a(c),oE,10,oE,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYh=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_arrondi"),0]],aYL=[0,a(U),[0,a(aR),0]],aYO=[0,a(c),oa,10,oa,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYM=[0,a(c),oa,10,oa,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYP=[0,a(U),[0,a(L4),0]],aYU=[0,a(c),m9,10,m9,15,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYQ=[0,a(c),m9,10,m9,15,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYV=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aZF=[0,a(U),[0,a(a4),0]],aZK=[0,a(c),o9,10,o9,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZG=[0,a(c),o9,10,o9,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZL=[0,a(U),[0,a(fS),0]],aZY=[0,a(U),[0,a(bD),0]],aHW=[0,a(C),GN,14,GN,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aHN=[0,a(_),[0,a(a4),[0,a(P),0]]],aHO=[0,a(_),[0,a(a4),0]],aHP=[0,a(_),[0,a(a4),[0,a(O),0]]],aHQ=[0,a(_),[0,a(a4),0]],aHR=a(p),aHS=[0,a(_),[0,a(a4),[0,a(P),0]]],aHT=[0,a(_),[0,a(a4),0]],aHU=[0,a(_),[0,a(a4),[0,a(O),0]]],aHV=[0,a(_),[0,a(a4),0]],aHX=[0,a(c),kp,10,kp,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHM=[0,a(c),kp,10,kp,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHJ=[0,a(C),Kr,14,Kr,33,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aHH=a(p),aHI=a(p),aHD=[0,a(C),z4,14,z4,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGX=a(p),aGY=[0,a(_),[0,a(aR),[0,a(P),0]]],aGZ=[0,a(_),[0,a(aR),0]],aG0=[0,a(_),[0,a(aR),[0,a(O),0]]],aG1=[0,a(_),[0,a(aR),0]],aG2=[0,a(af),[0,a(al),[0,a(P),0]]],aG3=[0,a(af),[0,a(al),0]],aG4=[0,a(af),[0,a(al),[0,a(O),0]]],aG5=[0,a(af),[0,a(al),0]],aG6=a(e1),aG7=[0,a(_),[0,a(aR),[0,a(P),0]]],aG8=[0,a(_),[0,a(aR),0]],aG9=[0,a(_),[0,a(aR),[0,a(O),0]]],aG_=[0,a(_),[0,a(aR),0]],aG$=[0,a(af),[0,a(al),[0,a(P),0]]],aHa=[0,a(af),[0,a(al),0]],aHb=[0,a(af),[0,a(al),[0,a(O),0]]],aHc=[0,a(af),[0,a(al),0]],aHd=[0,a(_),[0,a(aR),[0,a(P),0]]],aHe=[0,a(_),[0,a(aR),0]],aHf=[0,a(_),[0,a(aR),[0,a(O),0]]],aHg=[0,a(_),[0,a(aR),0]],aHh=[0,a(_),[0,a(aR),[0,a(P),0]]],aHi=[0,a(_),[0,a(aR),0]],aHj=[0,a(_),[0,a(aR),[0,a(O),0]]],aHk=[0,a(_),[0,a(aR),0]],aHl=[0,a(af),[0,a(al),[0,a(P),0]]],aHm=[0,a(af),[0,a(al),0]],aHn=[0,a(af),[0,a(al),[0,a(O),0]]],aHo=[0,a(af),[0,a(al),0]],aHp=a(e1),aHq=[0,a(_),[0,a(aR),[0,a(P),0]]],aHr=[0,a(_),[0,a(aR),0]],aHs=[0,a(_),[0,a(aR),[0,a(O),0]]],aHt=[0,a(_),[0,a(aR),0]],aHu=[0,a(af),[0,a(al),[0,a(P),0]]],aHv=[0,a(af),[0,a(al),0]],aHw=[0,a(af),[0,a(al),[0,a(O),0]]],aHx=[0,a(af),[0,a(al),0]],aHy=[0,a(_),[0,a(aR),[0,a(P),0]]],aHz=[0,a(_),[0,a(aR),0]],aHA=[0,a(_),[0,a(aR),[0,a(O),0]]],aHB=[0,a(_),[0,a(aR),0]],aHC=a(p),aHE=[0,a(c),pf,10,pf,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGW=[0,a(c),pf,10,pf,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGS=[0,a(C),Hh,5,Hh,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGQ=a(nw),aGR=a(nw),aGT=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGP=[0,a(C),Gj,14,Gj,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGN=a(ip),aGO=a(ip),aGJ=[0,a(C),AP,14,AP,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGj=a(p),aGk=[0,a(_),[0,a(ag),[0,a(P),0]]],aGl=[0,a(_),[0,a(ag),0]],aGm=[0,a(_),[0,a(ag),[0,a(O),0]]],aGn=[0,a(_),[0,a(ag),0]],aGo=[0,a(_),[0,a(fL),[0,a(P),0]]],aGp=[0,a(_),[0,a(fL),0]],aGq=[0,a(_),[0,a(fL),[0,a(O),0]]],aGr=[0,a(_),[0,a(fL),0]],aGs=[0,a(_),[0,a(ag),[0,a(P),0]]],aGt=[0,a(_),[0,a(ag),0]],aGu=[0,a(_),[0,a(ag),[0,a(O),0]]],aGv=[0,a(_),[0,a(ag),0]],aGw=[0,a(_),[0,a(ag),[0,a(P),0]]],aGx=[0,a(_),[0,a(ag),0]],aGy=[0,a(_),[0,a(ag),[0,a(O),0]]],aGz=[0,a(_),[0,a(ag),0]],aGA=[0,a(_),[0,a(fL),[0,a(P),0]]],aGB=[0,a(_),[0,a(fL),0]],aGC=[0,a(_),[0,a(fL),[0,a(O),0]]],aGD=[0,a(_),[0,a(fL),0]],aGE=[0,a(_),[0,a(ag),[0,a(P),0]]],aGF=[0,a(_),[0,a(ag),0]],aGG=[0,a(_),[0,a(ag),[0,a(O),0]]],aGH=[0,a(_),[0,a(ag),0]],aGI=a(p),aGK=[0,a(c),o1,10,o1,20,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGi=[0,a(c),o1,10,o1,20,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGe=[0,a(C),xt,5,xt,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGb=a(dU),aGc=a(dU),aGd=a(lT),aGf=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGa=[0,a(C),Al,14,Al,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aF9=a(dU),aF_=a(dU),aF$=a(lT),aF5=[0,a(C),FN,14,FN,40,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aF1=[0,a(C),FW,14,FW,55,[0,a(Hp),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFS=[0,a(_),[0,a(fC),[0,a(P),0]]],aFT=[0,a(_),[0,a(fC),0]],aFU=[0,a(_),[0,a(fC),[0,a(O),0]]],aFV=[0,a(_),[0,a(fC),0]],aFW=[0,a(_),[0,a(fC),[0,a(P),0]]],aFX=[0,a(_),[0,a(fC),0]],aFY=[0,a(_),[0,a(fC),[0,a(O),0]]],aFZ=[0,a(_),[0,a(fC),0]],aF0=a(p),aF2=[0,a(c),nH,11,nH,52,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFR=[0,a(c),nH,11,nH,52,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFN=[0,a(C),HY,5,HY,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFM=a(nw),aFO=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFL=[0,a(C),BP,14,BP,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFK=a(ip),aFE=[0,a(C),A3,14,A3,70,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFA=[0,a(C),Gz,14,Gz,69,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFw=[0,a(C),z9,14,z9,75,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFs=[0,a(C),Bx,14,Bx,44,[0,a(Hp),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFt=[0,a(c),mx,11,mx,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFr=[0,a(c),mx,11,mx,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFn=[0,a(C),JB,14,JB,36,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFo=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFj=[0,a(C),G$,14,G$,40,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFf=[0,a(V),Js,14,Js,48,[0,a(xu),[0,a(fA),[0,a(R),0]]]],aFd=a("2142091"),aFe=a("1339340"),aE$=[0,a(V),ID,14,ID,41,[0,a("Article 32"),[0,a(fA),[0,a(R),0]]]],aE9=a(sA),aE_=a("2668"),aE3=[0,a(C),Kw,14,Kw,64,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEZ=[0,a(C),IW,14,IW,59,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEV=[0,a(C),Mj,14,Mj,55,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aER=[0,a(C),xd,14,xd,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEP=a(p),aEQ=a(p),aES=[0,a(c),kv,10,kv,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEO=[0,a(c),kv,10,kv,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEK=[0,a(V),Kq,14,Kq,48,[0,a(Mn),[0,a(fA),[0,a(R),0]]]],aEa=a(p),aEb=a("44630"),aEc=a("52321"),aEd=a(x),aEe=a("55788"),aEf=a(ab),aEg=a("59704"),aEh=a(ak),aEi=a("63635"),aEj=a(an),aEk=a("7119"),aEl=a("68637"),aEm=a(p),aEn=a("40814"),aEo=a("47632"),aEp=a(x),aEq=a("50787"),aEr=a(ab),aEs=a("54365"),aEt=a(ak),aEu=a("57929"),aEv=a(an),aEw=a("6434"),aEx=a("61727"),aEy=a(p),aEz=a("38740"),aEA=a("45057"),aEB=a(x),aEC=a("47802"),aED=a(ab),aEE=a("50957"),aEF=a(ak),aEG=a("54110"),aEH=a(an),aEI=a("5971"),aEJ=a("57657"),aEL=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aD_=[0,a(cn),yb,14,yb,48,[0,a(Mn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aDA=a(p),aDB=a("44443"),aDC=a("52101"),aDD=a(x),aDE=a("55555"),aDF=a(ab),aDG=a("59454"),aDH=a(ak),aDI=a("63369"),aDJ=a(an),aDK=a("7089"),aDL=a("68350"),aDM=a(p),aDN=a("40643"),aDO=a("47433"),aDP=a(x),aDQ=a("50575"),aDR=a(ab),aDS=a("54138"),aDT=a(ak),aDU=a("57687"),aDV=a(an),aDW=a("6407"),aDX=a("61469"),aDY=a(p),aDZ=a("38578"),aD0=a("44869"),aD1=a(x),aD2=a("47602"),aD3=a(ab),aD4=a("50744"),aD5=a(ak),aD6=a("53884"),aD7=a(an),aD8=a("5946"),aD9=a("57416"),aD$=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDu=[0,a(c),Dp,14,Dp,50,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDp=[0,a(C),yZ,14,yZ,35,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aDq=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDl=[0,a(V),zF,14,zF,42,[0,a("Article 29"),[0,a(fA),[0,a(R),0]]]],aDk=a(iI),aDg=[0,a(V),y7,14,y7,41,[0,a("Article 28"),[0,a(fA),[0,a(R),0]]]],aDf=a(jX),aDb=[0,a(V),Gd,14,Gd,35,[0,a(xu),[0,a(fA),[0,a(R),0]]]],aDa=a("121726"),aDc=[0,a(c),nM,10,nM,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aC$=[0,a(c),nM,10,nM,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDd=[0,a(_),[0,a("coefficient_r_d832_25"),0]],aDh=[0,a(c),nh,11,nh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDe=[0,a(c),nh,11,nh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDi=[0,a(_),[0,a("montant_forfaitaire_d832_24"),0]],aDm=[0,a(c),m7,11,m7,39,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDj=[0,a(c),m7,11,m7,39,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDn=[0,a(_),[0,a("montant_minimal_aide_d823_24"),0]],aDr=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDo=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDs=[0,a(_),[0,a("condition_2_du_832_25"),0]],aDv=[0,a(c),Cq,3,Cq,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDw=[0,a(_),[0,a(j7),0]],aDt=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aDx=[0,a(_),[0,a(eW),[0,a(af),0]]],aDy=[0,a(_),[0,a(eW),[0,a(af),0]]],aEM=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDz=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEN=[0,a(_),[0,a("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),0]],aET=[0,a(_),[0,a(ag),0]],aEW=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEX=[0,a(_),[0,a(Je),0]],aEU=[0,a(c),nX,10,nX,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE0=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE1=[0,a(_),[0,a(my),0]],aEY=[0,a(c),mO,10,mO,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE4=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE5=[0,a(_),[0,a(o5),0]],aE2=[0,a(c),n5,10,n5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE6=[0,a(_),[0,a(gS),[0,a(j5),0]]],aE7=[0,a(_),[0,a(gS),[0,a(j5),0]]],aFa=[0,a(c),pv,11,pv,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE8=[0,a(c),pv,11,pv,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFb=[0,a(_),[0,a("montant_forfaitaire_d832_27"),0]],aFg=[0,a(c),n3,10,n3,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFc=[0,a(c),n3,10,n3,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFh=[0,a(_),[0,a("coefficient_multiplicateur_d832_25"),0]],aFk=[0,a(c),oB,10,oB,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFi=[0,a(c),oB,10,oB,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFl=[0,a(_),[0,a("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),0]],aFp=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFm=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFq=[0,a(_),[0,a(KW),0]],aFu=[0,a(_),[0,a(fC),0]],aFx=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFy=[0,a(_),[0,a(ob),0]],aFv=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFB=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFC=[0,a(_),[0,a(nk),0]],aFz=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFF=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFG=[0,a(_),[0,a(n8),0]],aFD=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFH=[0,a(_),[0,a(gB),[0,a(ei),0]]],aFI=[0,a(_),[0,a(gB),[0,a(ei),0]]],aFP=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFJ=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFQ=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],aF3=[0,a(_),[0,a(fL),0]],aF6=[0,a(c),nZ,10,nZ,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF4=[0,a(c),nZ,10,nZ,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF7=[0,a(_),[0,a("\xc3\xa9quivalence_loyer_minimale"),0]],aGg=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF8=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGh=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_arrondi"),0]],aGL=[0,a(_),[0,a(aR),0]],aGU=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGM=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGV=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],aHF=[0,a(_),[0,a(a4),0]],aHK=[0,a(c),o0,10,o0,29,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHG=[0,a(c),o0,10,o0,29,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHL=[0,a(_),[0,a(fS),0]],aHY=[0,a(_),[0,a(bD),0]],aC1=[0,a(C),r2,14,r2,33,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCZ=a(p),aC0=a(p),aCV=[0,a(C),gl,14,gl,39,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCR=[0,a(C),GG,14,GG,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCI=[0,a(aj),[0,a(fH),[0,a(P),0]]],aCJ=[0,a(aj),[0,a(fH),0]],aCK=[0,a(aj),[0,a(fH),[0,a(O),0]]],aCL=[0,a(aj),[0,a(fH),0]],aCM=a(p),aCN=[0,a(aj),[0,a(fH),[0,a(P),0]]],aCO=[0,a(aj),[0,a(fH),0]],aCP=[0,a(aj),[0,a(fH),[0,a(O),0]]],aCQ=[0,a(aj),[0,a(fH),0]],aCS=[0,a(c),l1,10,l1,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCH=[0,a(c),l1,10,l1,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCE=[0,a(C),yE,14,yE,42,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCA=[0,a(aT),kr,14,kr,36,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aCq=a(p),aCr=[0,a(aj),[0,a(a4),[0,a(P),0]]],aCs=[0,a(aj),[0,a(a4),0]],aCt=[0,a(aj),[0,a(a4),[0,a(O),0]]],aCu=[0,a(aj),[0,a(a4),0]],aCv=[0,a(aj),[0,a(a4),[0,a(P),0]]],aCw=[0,a(aj),[0,a(a4),0]],aCx=[0,a(aj),[0,a(a4),[0,a(O),0]]],aCy=[0,a(aj),[0,a(a4),0]],aCz=a(p),aCB=[0,a(c),ol,10,ol,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCp=[0,a(c),ol,10,ol,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCk=[0,a(cn),CI,14,CI,33,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aCi=a(l5),aCj=a(l5),aCl=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCh=[0,a(V),h_,14,h_,33,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aCf=a(l5),aCg=a(l5),aCm=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCb=[0,a(C),iU,14,iU,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aBv=a(p),aBw=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBx=[0,a(aj),[0,a(ag),0]],aBy=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBz=[0,a(aj),[0,a(ag),0]],aBA=[0,a(af),[0,a(al),[0,a(P),0]]],aBB=[0,a(af),[0,a(al),0]],aBC=[0,a(af),[0,a(al),[0,a(O),0]]],aBD=[0,a(af),[0,a(al),0]],aBE=a(e1),aBF=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBG=[0,a(aj),[0,a(ag),0]],aBH=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBI=[0,a(aj),[0,a(ag),0]],aBJ=[0,a(af),[0,a(al),[0,a(P),0]]],aBK=[0,a(af),[0,a(al),0]],aBL=[0,a(af),[0,a(al),[0,a(O),0]]],aBM=[0,a(af),[0,a(al),0]],aBN=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBO=[0,a(aj),[0,a(ag),0]],aBP=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBQ=[0,a(aj),[0,a(ag),0]],aBR=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBS=[0,a(aj),[0,a(ag),0]],aBT=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBU=[0,a(aj),[0,a(ag),0]],aBV=[0,a(af),[0,a(al),[0,a(P),0]]],aBW=[0,a(af),[0,a(al),0]],aBX=[0,a(af),[0,a(al),[0,a(O),0]]],aBY=[0,a(af),[0,a(al),0]],aBZ=a(e1),aB0=[0,a(aj),[0,a(ag),[0,a(P),0]]],aB1=[0,a(aj),[0,a(ag),0]],aB2=[0,a(aj),[0,a(ag),[0,a(O),0]]],aB3=[0,a(aj),[0,a(ag),0]],aB4=[0,a(af),[0,a(al),[0,a(P),0]]],aB5=[0,a(af),[0,a(al),0]],aB6=[0,a(af),[0,a(al),[0,a(O),0]]],aB7=[0,a(af),[0,a(al),0]],aB8=[0,a(aj),[0,a(ag),[0,a(P),0]]],aB9=[0,a(aj),[0,a(ag),0]],aB_=[0,a(aj),[0,a(ag),[0,a(O),0]]],aB$=[0,a(aj),[0,a(ag),0]],aCa=a(p),aCc=[0,a(c),nf,10,nf,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBu=[0,a(c),nf,10,nf,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBp=[0,a(cn),nz,14,nz,33,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aBd=a(nO),aBe=a(cw),aBf=a(nO),aBg=a(fF),aBh=a(hU),aBi=a(hU),aBj=a(fF),aBk=a(fF),aBl=a(Ds),aBm=a(xF),aBn=a(hU),aBo=a(cw),aBq=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBc=[0,a(V),n7,14,n7,33,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aA2=a(nO),aA3=a(cw),aA4=a(nO),aA5=a(fF),aA6=a(hU),aA7=a(hU),aA8=a(fF),aA9=a(fF),aA_=a(Ds),aA$=a(xF),aBa=a(hU),aBb=a(cw),aBr=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAY=[0,a(C),G1,14,G1,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAO=a(p),aAP=[0,a(aj),[0,a(fK),[0,a(P),0]]],aAQ=[0,a(aj),[0,a(fK),0]],aAR=[0,a(aj),[0,a(fK),[0,a(O),0]]],aAS=[0,a(aj),[0,a(fK),0]],aAT=[0,a(aj),[0,a(fK),[0,a(P),0]]],aAU=[0,a(aj),[0,a(fK),0]],aAV=[0,a(aj),[0,a(fK),[0,a(O),0]]],aAW=[0,a(aj),[0,a(fK),0]],aAX=a(p),aAZ=[0,a(c),mN,10,mN,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAN=[0,a(c),mN,10,mN,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAI=[0,a(cn),dC,14,dC,28,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aAG=a(dU),aAH=a(dU),aAJ=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAF=[0,a(V),cd,14,cd,28,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aAD=a(dU),aAE=a(dU),aAK=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAy=[0,a(V),xH,14,xH,36,[0,a(Ee),[0,a(b9),[0,a(R),0]]]],aAu=a(Ki),aAv=a(mX),aAw=a(mX),aAx=a(Ki),aAz=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAs=[0,a(cn),j2,14,j2,36,[0,a(Ee),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aAo=a(Le),aAp=a(mX),aAq=a(mX),aAr=a(Le),aAt=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAj=[0,a(C),DX,5,DX,50,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAk=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAi=[0,a(C),IZ,14,IZ,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAh=a(p),aAl=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAg=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAd=[0,a(C),HE,14,HE,28,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],az$=[0,a(V),tv,14,tv,42,[0,a(JG),[0,a(b9),[0,a(R),0]]]],az8=a("3.4"),az9=a(h6),az_=a(h6),az4=[0,a(V),on,14,on,41,[0,a(JG),[0,a(b9),[0,a(R),0]]]],az1=a("4."),az2=a(zE),az3=a(zE),azV=[0,a(V),e7,29,e7,64,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azS=a(hk),azT=a(ry),azU=a(fz),azW=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azQ=[0,a(cn),mI,29,mI,64,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],azN=a(nB),azO=a(BH),azP=a(mg),azR=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azX=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azK=[0,a(V),Lf,29,Lf,64,[0,a(Lx),[0,a(b9),[0,a(R),0]]]],azI=a(hk),azJ=a(fz),azL=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azG=[0,a(cn),pN,29,pN,64,[0,a(Lx),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],azE=a(nB),azF=a(mg),azH=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azM=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azx=a(p),azy=[0,a(V),sd,5,535,34,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azu=a(KP),azv=a(G4),azw=a(xY),azz=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azr=a(p),azs=[0,a(V),543,5,eC,34,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azo=a("26962"),azp=a("23848"),azq=a("22136"),azt=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azl=a(x),azm=[0,a(V),Ga,5,Ga,35,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azc=a(x),azd=a("4421"),aze=a("30473"),azf=a(x),azg=a("3906"),azh=a("26835"),azi=a(x),azj=a("3557"),azk=a("24821"),azn=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ay$=a(p),aza=[0,a(cn),350,5,fM,34,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ay8=a(Cm),ay9=a(xv),ay_=a(Kt),azb=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ay5=a(p),ay6=[0,a(cn),hh,5,360,34,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ay2=a("26849"),ay3=a("23748"),ay4=a("22044"),ay7=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayZ=a(x),ay0=[0,a(cn),z0,5,z0,35,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayQ=a(x),ayR=a("4403"),ayS=a("30345"),ayT=a(x),ayU=a("3890"),ayV=a("26723"),ayW=a(x),ayX=a("3542"),ayY=a("24717"),ay1=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azA=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayM=[0,a(V),KS,5,KS,61,[0,a(oJ),[0,a(b9),[0,a(R),0]]]],ayJ=a(KP),ayK=a(G4),ayL=a(xY),ayN=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayH=[0,a(cn),cH,5,cH,61,[0,a(oJ),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayE=a(Cm),ayF=a(xv),ayG=a(Kt),ayI=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayO=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayB=[0,a(V),hY,14,hY,37,[0,a(oJ),[0,a(b9),[0,a(R),0]]]],ayy=a("26826"),ayz=a("23380"),ayA=a("21913"),ayC=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayw=[0,a(cn),ee,14,ee,37,[0,a(oJ),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayt=a(Mw),ayu=a("23282"),ayv=a("21821"),ayx=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayD=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayP=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayp=a(p),ayq=[0,a(V),97,5,98,34,[0,a(dA),[0,a(b9),[0,a(R),0]]]],aym=a("29807"),ayn=a(LF),ayo=a("24348"),ayr=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayj=a(p),ayk=[0,a(V),bc,5,dV,34,[0,a(dA),[0,a(b9),[0,a(R),0]]]],ayg=a("35949"),ayh=a(rT),ayi=a("29515"),ayl=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayd=a(x),aye=[0,a(V),bt,5,bt,35,[0,a(dA),[0,a(b9),[0,a(R),0]]]],ax6=a(x),ax7=a("5895"),ax8=a("40630"),ax9=a(x),ax_=a(BX),ax$=a(Ln),aya=a(x),ayb=a("4743"),ayc=a("33094"),ayf=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ax3=a(p),ax4=[0,a(cn),37,5,38,34,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ax0=a("29682"),ax1=a("25859"),ax2=a("24246"),ax5=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axX=a(p),axY=[0,a(cn),47,5,48,34,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axU=a("35799"),axV=a(Ba),axW=a("29392"),axZ=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axR=a(x),axS=[0,a(cn),57,5,57,35,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axI=a(x),axJ=a("5870"),axK=a("40460"),axL=a(x),axM=a(FT),axN=a(IE),axO=a(x),axP=a("4723"),axQ=a(Ht),axT=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ays=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axE=[0,a(V),nz,14,nz,42,[0,a("Article 12"),[0,a(b9),[0,a(R),0]]]],axB=a(p),axC=a(iI),axD=a(iI),axw=[0,a(V),i0,14,i0,29,[0,a(d7),[0,a(b9),[0,a(R),0]]]],axq=a(p),axr=a(LF),axs=a(rT),axt=a(x),axu=a(BX),axv=a(Ln),axx=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axo=[0,a(cn),EL,14,EL,29,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axi=a(p),axj=a("25869"),axk=a(Ba),axl=a(x),axm=a(FT),axn=a(IE),axp=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axd=[0,a(V),xQ,14,xQ,44,[0,a(yK),[0,a(b9),[0,a(R),0]]]],awX=a(p),awY=a("468300"),awZ=a("670900"),aw0=a(x),aw1=a("800200"),aw2=a(ab),aw3=a("819200"),aw4=a(ak),aw5=a("849500"),aw6=a(an),aw7=a("881100"),aw8=a(T),aw9=a("912400"),aw_=a(gQ),aw$=a(A1),axa=a(gQ),axb=a("31100"),axc=a(A1),axe=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awV=[0,a(cn),eY,14,eY,44,[0,a(yK),[0,a(R),[0,a("Articles valables du 1er janvier 2020 au 1er janvier 2022"),[0,a(cp),0]]]]],awD=a(p),awE=a("458800"),awF=a("657200"),awG=a(x),awH=a("783900"),awI=a(ab),awJ=a("801500"),awK=a(ak),awL=a("832200"),awM=a(an),awN=a("863100"),awO=a(T),awP=a("893800"),awQ=a(gQ),awR=a(E9),awS=a(gQ),awT=a(sj),awU=a(E9),awW=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awx=[0,a(cn),Gy,14,Gy,40,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],awf=a(p),awg=a(IM),awh=a(AF),awi=a(x),awj=a(Fh),awk=a(ab),awl=a(HO),awm=a(ak),awn=a(K5),awo=a(an),awp=a(E8),awq=a(T),awr=a(H9),aws=a(gQ),awt=a(mf),awu=a(gQ),awv=a(Ad),aww=a(mf),awy=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awe=[0,a(V),rU,14,rU,40,[0,a(d7),[0,a(b9),[0,a(R),0]]]],avY=a(p),avZ=a(IM),av0=a(AF),av1=a(x),av2=a(Fh),av3=a(ab),av4=a(HO),av5=a(ak),av6=a(K5),av7=a(an),av8=a(E8),av9=a(T),av_=a(H9),av$=a(gQ),awa=a(mf),awb=a(gQ),awc=a(Ad),awd=a(mf),awz=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avS=[0,a(c),CM,14,CM,50,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avO=[0,a(V),r$,14,r$,41,[0,a("Article 11"),[0,a(b9),[0,a(R),0]]]],avN=a(jX),avJ=[0,a(C),x0,14,x0,29,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],avI=a(Gv),avK=[0,a(c),nj,11,nj,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avH=[0,a(c),nj,11,nj,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avL=[0,a(aj),[0,a("fraction_l832_3"),0]],avP=[0,a(c),l3,11,l3,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avM=[0,a(c),l3,11,l3,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avQ=[0,a(aj),[0,a("montant_forfaitaire_d823_16"),0]],avT=[0,a(c),K0,3,K0,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avU=[0,a(aj),[0,a(j7),0]],avR=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],avV=[0,a(aj),[0,a(eW),[0,a(af),0]]],avW=[0,a(aj),[0,a(eW),[0,a(af),0]]],awA=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avX=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awB=[0,a(aj),[0,a("taux_composition_familiale"),0]],axf=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awC=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axg=[0,a(aj),[0,a("abattement_forfaitaire_d823_17"),0]],axy=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axh=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axz=[0,a(aj),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],axF=[0,a(c),ow,11,ow,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axA=[0,a(c),ow,11,ow,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axG=[0,a(aj),[0,a("montant_minimal_aide_d823_16"),0]],azB=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axH=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azC=[0,a(aj),[0,a("plafond_loyer_d823_16_2"),0]],azY=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azD=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azZ=[0,a(aj),[0,a("montant_forfaitaire_charges_d823_16"),0]],az5=[0,a(c),nt,11,nt,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az0=[0,a(c),nt,11,nt,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az6=[0,a(aj),[0,a("plafond_suppression_d823_16"),0]],aAa=[0,a(c),mV,11,mV,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az7=[0,a(c),mV,11,mV,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAb=[0,a(aj),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],aAe=[0,a(c),mL,11,mL,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAc=[0,a(c),mL,11,mL,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAf=[0,a(aj),[0,a("loyer_\xc3\xa9ligible"),0]],aAm=[0,a(aj),[0,a(fK),0]],aAA=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAn=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAB=[0,a(aj),[0,a("participation_minimale"),0]],aAL=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAC=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAM=[0,a(aj),[0,a("rapport_loyers"),0]],aA0=[0,a(aj),[0,a(ag),0]],aBs=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aA1=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBt=[0,a(aj),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],aCd=[0,a(aj),[0,a(a4),0]],aCn=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCe=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCo=[0,a(aj),[0,a("taux_loyer_\xc3\xa9ligible_arrondi"),0]],aCC=[0,a(aj),[0,a(fH),0]],aCF=[0,a(c),mu,11,mu,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCD=[0,a(c),mu,11,mu,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCG=[0,a(aj),[0,a("taux_prise_compte_ressources"),0]],aCT=[0,a(aj),[0,a(bD),0]],aCW=[0,a(c),oh,10,oh,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCU=[0,a(c),oh,10,oh,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCX=[0,a(aj),[0,a("participation_personnelle"),0]],aC2=[0,a(c),m5,10,m5,29,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCY=[0,a(c),m5,10,m5,29,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aC3=[0,a(aj),[0,a(fS),0]],aC5=a(h6),aC4=[0,a(C),mk,13,mk,76,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aC_=[0,a(C),mk,13,mk,76,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aC7=a(nw),aC8=a(Gv),aC6=[0,a(aT),nx,13,nx,63,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aC9=[0,a(aT),nx,13,nx,63,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],avv=[6,0],avx=[0,0],avy=[1,0],avz=[2,0],avA=[3,0],avB=[4,0],avC=[5,0],avD=[7,0],avw=[0,a(b3),29,5,38,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],avu=a(xW),avE=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avr=[8,0],avs=[0,a(b3),47,5,49,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],avq=a(GH),avt=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avg=[6,0],avi=[0,0],avj=[1,0],avk=[2,0],avl=[3,0],avm=[4,0],avn=[5,0],avo=[7,0],avh=[0,a(b3),68,5,77,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],avf=a(IG),avp=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avc=[8,0],avd=[0,a(b3),86,5,88,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],avb=a(EU),ave=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],au3=[6,0],au5=[0,0],au6=[1,0],au7=[2,0],au8=[3,0],au9=[4,0],au_=[5,0],au$=[7,0],au4=[0,a(b3),bc,5,hp,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],au2=a(Bi),ava=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auZ=[8,0],au0=[0,a(b3),eX,5,cu,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],auY=a(Li),au1=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auO=[6,0],auQ=[0,0],auR=[1,0],auS=[2,0],auT=[3,0],auU=[4,0],auV=[5,0],auW=[7,0],auP=[0,a(b3),gU,5,FS,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],auN=a(By),auX=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auK=[8,0],auL=[0,a(b3),sH,5,j6,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],auJ=a(x5),auM=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auz=[6,0],auB=[0,0],auC=[1,0],auD=[2,0],auE=[3,0],auF=[4,0],auG=[5,0],auH=[7,0],auA=[0,a(b3),mt,5,m6,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],auy=a(HZ),auI=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auv=[8,0],auw=[0,a(b3),l9,5,zj,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],auu=a(DH),aux=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avF=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],aut=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avG=[0,a(is),[0,a(Ic),0]],aup=[0,a(d9),28,5,29,34,[0,a(B2),[0,a(b7),0]]],auo=a(yG),auq=[0,a(d9),6,10,6,17,[0,a(b7),0]],aum=[0,a(d9),48,5,49,34,[0,a(AL),[0,a(b7),0]]],aul=a(yn),aun=[0,a(d9),6,10,6,17,[0,a(b7),0]],auj=[0,a(d9),64,5,65,34,[0,a(JI),[0,a(b7),0]]],aui=a(Jz),auk=[0,a(d9),6,10,6,17,[0,a(b7),0]],aug=[0,a(d9),82,5,83,34,[0,a(x2),[0,a(b7),0]]],auf=a(Jt),auh=[0,a(d9),6,10,6,17,[0,a(b7),0]],aur=[0,a(d9),6,10,6,17,[0,a(b7),0]],aue=[0,a(d9),6,10,6,17,[0,a(b7),0]],aus=[0,a(gP),[0,a(al),0]],at$=[0,a(C),w5,14,w5,28,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],at_=a(p),aua=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at9=[0,a(C),HX,14,HX,28,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],at8=a(p),aub=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at2=[0,a(C),Dn,20,Dn,51,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atZ=a(p),at0=a(p),at1=a(kA),at3=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atY=[0,a(C),Et,20,Et,55,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atV=a(p),atW=a(p),atX=a(kA),at4=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atS=[0,a(C),Dz,7,Dz,51,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atO=a(J8),atP=a(eP),atQ=a(kA),atR=a(p),atT=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atN=[0,a(C),IV,7,IV,42,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atJ=a(J8),atK=a(eP),atL=a(kA),atM=a(p),atU=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atE=[0,a(C),xo,14,xo,36,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atF=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atC=[0,a(C),AN,14,AN,36,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atB=a(cY),atD=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atv=[0,a(C),JS,14,JS,36,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atw=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atu=[0,a(C),KC,14,KC,36,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atx=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atq=[0,a(C),DQ,14,DQ,36,[0,a("Article R824-3"),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atl=[0,0],atm=[1,0],atn=[1,0],ato=[0,0],atp=[0,0],atr=[0,a(c),h5,11,h5,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atk=[0,a(c),h5,11,h5,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],ats=[0,a(kz),[0,a("mode_occupation_impay\xc3\xa9"),0]],aty=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],att=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atz=[0,a(kz),[0,a("d\xc3\xa9pense_logement_brute"),0]],atG=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atA=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atH=[0,a(kz),[0,a("d\xc3\xa9pense_logement_nette"),0]],at5=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atI=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],at6=[0,a(kz),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],auc=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at7=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],aud=[0,a(kz),[0,a("montant_impay\xc3\xa9"),0]],atf=[0,a(dX),o6,5,o6,43,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],atg=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],atd=[0,a(dX),dC,5,dC,42,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],ate=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],atb=[0,a(dX),rx,5,rE,43,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],atc=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as_=a("1952"),as$=[0,a(dX),yk,5,yk,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],ata=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as7=a("1953"),as8=[0,a(dX),mA,5,mA,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],as9=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as4=a("1954"),as5=[0,a(dX),Kv,5,Kv,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],as6=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],ath=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as3=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],ati=[0,a(te),[0,a("\xc3\xa2ge_ouverture_droit"),0]],as0=[0,a(C),EH,14,EH,36,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],asM=a(p),asN=a(Dd),asO=a(xC),asP=a(x),asQ=a(h6),asR=a(ab),asS=a(pm),asT=a(ak),asU=a(rB),asV=a(an),asW=a(iB),asX=a(an),asY=a(jR),asZ=a(iB),as1=[0,a(c),jU,10,jU,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],asL=[0,a(c),jU,10,jU,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],as2=[0,a(ks),[0,a(xp),0]],asH=[0,a(C),Mk,5,Mk,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ast=a(p),asu=a("1.2"),asv=a("1.5"),asw=a(x),asx=a(h6),asy=a(ab),asz=a(pm),asA=a(ak),asB=a(rB),asC=a(an),asD=a(iB),asE=a(an),asF=a(jR),asG=a(iB),asI=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ass=[0,a(C),Dx,14,Dx,36,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ase=a(p),asf=a(Dd),asg=a(xC),ash=a(x),asi=a(h6),asj=a(ab),ask=a(pm),asl=a(ak),asm=a(rB),asn=a(an),aso=a(iB),asp=a(an),asq=a(jR),asr=a(iB),asJ=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asd=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asK=[0,a(j5),[0,a(KW),0]],ar$=[0,a(C),wI,5,wI,26,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ar_=a(cw),ar8=a(cY),ar9=a(cw),asa=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar7=[0,a(C),y6,14,y6,21,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ar6=a(cw),ar4=a(cY),ar5=a(cw),ar0=[0,a(C),Hs,14,Hs,50,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],arZ=[1,0],arU=[0,a(V),Hq,5,Hq,26,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arF=a("0.328"),arG=a(GU),arH=[1,0],arI=a(xs),arJ=a(CZ),arK=a(GU),arL=a(w2),arM=a(zD),arN=a(CZ),arO=a("0.024"),arP=a(xI),arQ=a(zD),arR=a(cw),arS=a(p),arT=a(xI),arV=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arE=[0,a(V),KM,14,KM,38,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arm=a("0.48"),arn=a(Gu),aro=[1,0],arp=a(tB),arq=a(HG),arr=a(Gu),ars=a("0.264"),art=a(ze),aru=a(HG),arv=a("0.216"),arw=a(K8),arx=a(ze),ary=a("0.104"),arz=a(G_),arA=a(K8),arB=a(Ca),arC=a(p),arD=a(G_),ari=[0,a(V),BG,14,BG,41,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arg=a("7632"),arh=a("4557"),arj=[0,a(c),mh,11,mh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arf=[0,a(c),mh,11,mh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ark=[0,a(ei),[0,a("montant_forfaitaire_d832_26"),0]],arW=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arl=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arX=[0,a(ei),[0,a("tranches_revenus_d832_26"),0]],ar1=[0,a(c),pk,11,pk,47,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arY=[0,a(c),pk,11,pk,47,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar2=[0,a(ei),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],asb=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar3=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asc=[0,a(ei),[0,a(al),0]],arb=[0,a(f$),cA,5,cA,35,[0,a(d7),[0,a(sZ),[0,a(tD),0]]]],arc=[0,a(c),oH,10,oH,17,[0,a(dQ),[0,a(j),[0,a(d),0]]]],ara=[0,a(c),oH,10,oH,17,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq9=[0,a(f$),pq,39,pq,69,[0,a(s7),[0,a(sZ),[0,a(tD),0]]]],aq8=a(lT),aq3=[0,a(dX),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]],aq4=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq2=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq5=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq1=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq6=[0,a(af),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],aq_=[0,a(c),oY,11,oY,20,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq7=[0,a(c),oY,11,oY,20,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq$=[0,a(af),[0,a("taux_crds"),0]],ard=[0,a(af),[0,a(al),0]],are=[0,a(f$),cX,13,cX,24,[0,a(d7),[0,a(sZ),[0,a(tD),0]]]],aqR=a("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"),aqS=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),aqT=a("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"),aqU=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),aqV=a("situation_familiale"),aqW=a("nombre_autres_occupants_logement"),aqX=a("personnes_\xc3\xa0_charge"),aqY=a("logement"),aqZ=a("prestations_re\xc3\xa7ues"),aq0=[0,a("M\xc3\xa9nage"),0],aqF=a("zone"),aqG=a("situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),aqH=a("est_ancien_l831_2"),aqI=a("surface_m_carr\xc3\xa9s"),aqJ=a("logement_decent_l89_462"),aqK=a("usufruit"),aqL=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),aqM=a("propri\xc3\xa9taire"),aqN=a("mode_occupation"),aqO=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),aqP=a("r\xc3\xa9sidence_principale"),aqQ=[0,a("Logement"),0],aqz=a(HH),aqB=a("R\xc3\xa9sidentLogementFoyer"),aqC=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),aqD=a(CF),aqE=a(yL),aqA=[0,a("ModeOccupation"),0],aqv=a(Fc),aqx=a(Cu),aqy=a("InfosAccessionPropri\xc3\xa9t\xc3\xa9"),aqw=[0,a("InformationsCalculAPL"),0],aqp=a("construit_application_loi_1957_12_III"),aqq=a("remplit_conditions_r832_21"),aqr=a("location"),aqs=a("date_conventionnement"),aqt=a("type"),aqu=[0,a(yN),0],aqg=a("changement_logement_d842_4"),aqh=a("logement_meubl\xc3\xa9_d842_2"),aqi=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),aqj=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),aqk=a("colocation"),aql=a("logement_est_chambre"),aqm=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),aqn=a("loyer_principal"),aqo=[0,a("InformationsCalculAPLLocatif"),0],aqd=a(C5),aqf=a(Cn),aqe=[0,a("Personne\xc3\x80Charge"),0],ap3=a("anciennet\xc3\xa9_logement"),ap4=a(JD),ap5=a("situation_r822_11_13_17"),ap6=a("copropri\xc3\xa9t\xc3\xa9"),ap7=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ap8=a("type_travaux_logement_r842_5"),ap9=a("type_travaux_logement_d832_15"),ap_=a("date_entr\xc3\xa9e_logement"),ap$=a("date_signature_pr\xc3\xaat"),aqa=a("charges_mensuelles_pr\xc3\xaat"),aqb=a("mensualit\xc3\xa9_principale"),aqc=[0,a("InformationsCalculAPLAccessionPropri\xc3\xa9t\xc3\xa9"),0],ap1=a("pr\xc3\xaat"),ap2=[0,a("Propri\xc3\xa9taire"),0],apZ=a("bailleur"),ap0=[0,a(EA),0],apW=a(AT),apY=a(HT),apX=[0,a("ChangementLogementD842_4"),0],apO=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),apP=a("patrimoine"),apQ=a("nationalit\xc3\xa9"),apR=a("contrat_de_travail"),apS=a(I6),apT=a("age_demandeur"),apU=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),apV=[0,a(rw),0],apL=a(kJ),apN=a(pK),apM=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],apB=a("situation_garde_altern\xc3\xa9e"),apC=a(sX),apD=a(sm),apE=a(r8),apF=a(rS),apG=a(sM),apH=a(rQ),apI=a(rG),apJ=a(s6),apK=[0,a(C5),0],aps=a(rG),apt=a(rQ),apu=a(sm),apv=a(sX),apw=a(sM),apx=a(rS),apy=a(r8),apz=a(s6),apA=[0,a("EnfantPrestationsFamiliales"),0],app=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),apq=a("redevance"),apr=[0,a("InformationsCalculAPLLogementFoyer"),0],apm=a(K2),apo=a(zK),apn=[0,a("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"),0],ape=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),apf=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),apg=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aph=a("parent\xc3\xa9"),api=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),apj=a("ressources"),apk=a(I6),apl=[0,a(Cn),0],apa=a(ES),apb=a(E1),apc=a(DO),apd=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],ao7=a(ES),ao8=a(E1),ao9=a(DO),ao_=[0,a("TrancheRevenu"),0],ao3=a(It),ao5=a(Cw),ao4=[0,a("NeufOuAncien"),0],aoZ=a("titulaire_pr\xc3\xaat"),ao0=a("date_signature"),ao1=a(JD),ao2=[0,a("Pr\xc3\xaat"),0],aoT=a("acquisition_aides_\xc3\xa9tat_pr\xc3\xaat_titre_II_ou_livre_III"),aoU=a("construit_am\xc3\xa9lior\xc3\xa9_conditions_l831_1_4"),aoV=a("respecte_convention_titre_II"),aoW=a("respecte_convention_titre_V"),aoX=a("type_bailleur"),aoY=[0,a(xe),0],aoQ=a("ancienne_allocation_logement"),aoR=a("ancien_loyer_principal"),aoS=[0,a("InfosChangementLogementD842_4"),0],aoN=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),aoO=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),aoP=[0,a("Patrimoine"),0],aoK=a("conforme_article_l442_1"),aoL=a("age_personne_sous_location"),aoM=[0,a("PersonneSousLocation"),0],aoB=a(ni),aoD=a(X),aoE=a(rO),aoF=a(oX),aoG=a(CW),aoH=a(iR),aoI=a(BE),aoJ=a(Hw),aoC=[0,a(Er),0],aow=a(j1),aoy=a(jT),aoz=a(JL),aox=[0,a(Ke),0],aoq=a(A2),aos=a(C7),aot=a(hc),aou=a(D$),aov=a(zn),aor=[0,a("PriseEnChargeEnfant"),0],aog=a(n6),aoi=a(nq),aoj=a(l0),aok=a(KF),aol=a(zr),aom=a(pM),aon=a(Kg),aoo=a(mG),aop=a(nC),aoh=[0,a(Jw),0],aod=a(Lz),aof=a(Ar),aoe=[0,a("SituationFamilialeCalculAPL"),0],an_=a("\xc3\x89tudiantLog\xc3\xa9EnChambre"),aoa=a("\xc3\x89tudiantLog\xc3\xa9EnChambreR\xc3\xa9habilit\xc3\xa9e"),aob=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),aoc=a(Lw),an$=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],an5=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),an7=a("R\xc3\xa9sidenceSociale"),an8=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),an9=a(h7),an6=[0,a("TypeLogementFoyer"),0],an1=a(hc),an3=a("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"),an4=a("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"),an2=[0,a(Gt),0],anU=a("C\xc3\xa9libataire"),anW=a("Mari\xc3\xa9s"),anX=a("Pacs\xc3\xa9s"),anY=a(zt),anZ=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),an0=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),anV=[0,a("SituationFamiliale"),0],anQ=a("AidePersonnalis\xc3\xa9eLogement"),anS=a(pG),anT=a(mE),anR=[0,a("TypeAidesPersonnelleLogement"),0],anM=a("Pas\xc3\x89ligible"),anO=a(pG),anP=a(mE),anN=[0,a(b2),0],anJ=a("Impay\xc3\xa9Loyer"),anL=a("Impay\xc3\xa9Pr\xc3\xaat"),anK=[0,a("ModeOccupationImpay\xc3\xa9"),0],anE=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),anG=a("Mensualit\xc3\xa9"),anH=a(LZ),anF=[0,a("D\xc3\xa9penseLogement"),0],anA=a(EA),anC=a("AccessionPropri\xc3\xa9t\xc3\xa9"),anD=a(yN),anB=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],anw=a(zI),any=a(Fz),anz=a(Ho),anx=[0,a("ZoneDHabitation"),0],ant=a("Fran\xc3\xa7aise"),anv=a("\xc3\x89trang\xc3\xa8re"),anu=[0,a("Nationalit\xc3\xa9"),0],anp=a(G7),anr=a("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),ans=a("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),anq=[0,a("DateDeNaissanceOuMoisDeGrossesse"),0],anl=a(Bb),ann=a(IU),ano=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),anm=[0,a("Parent\xc3\xa9"),0],ani=a("PasDeGardeAltern\xc3\xa9e"),ank=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),anj=[0,a("SituationGardeAltern\xc3\xa9e"),0],anf=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),anh=a(h7),ang=[0,a("ParentOuAutre"),0],anc=a(CT),ane=a(Mb),and=[0,a("TypeContratTravail"),0],am7=a(X),am9=a(rO),am_=a(Kc),am$=a(iR),ana=a("AllocationSoutienEnfantHandicap\xc3\xa9"),anb=a("AllocationAdulteHandicap\xc3\xa9"),am8=[0,a("PrestationRe\xc3\xa7ue"),0],am3=a(K_),am5=a(Fw),am4=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],am0=a(K_),am2=a(Fw),am1=[0,a("LimiteTranche"),0],amX=a(pK),amZ=a(kJ),amY=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],amS=a("ObjectifD\xc3\xa9cenceLogement"),amU=a("Pr\xc3\xa9vuDansListeR321_15"),amV=a(JP),amW=a(np),amT=[0,a("TypeTravauxLogementR842_5"),0],amO=a(yd),amQ=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),amR=a(np),amP=[0,a("TypeTravauxLogementD832_15"),0],amL=a(rw),amN=a(yx),amM=[0,a("TitulairePr\xc3\xaat"),0],amF=a(Bq),amH=a(yt),amI=a(Ie),amJ=a(Aj),amK=a(h7),amG=[0,a("TypePr\xc3\xaat"),0],amC=a(Cr),amE=a("BailleurPriv\xc3\xa9"),amD=[0,a("TypeBailleur"),0],bM_=a(ac),bMK=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bML=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bMI=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bMJ=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bMC=a("AccessionProprieteLocalUsageExclusifHabitation"),bMD=a(HH),bME=a(yL),bMF=a("ResidentLogementFoyer"),bMG=a(CF),bMH=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bMy=a("InfosAccessionPropriete"),bMz=a(Fc),bMA=a(Cu),bMB=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'InformationsCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'InformationsCalculAPL.t'")],bMv=a("AutrePersonneACharge"),bMw=a("EnfantACharge"),bMx=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bMr=a(AT),bMs=a(HT),bMu=[1,0],bMt=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bMn=a(kJ),bMo=a(pK),bMq=[0,0],bMp=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bMj=a(K2),bMk=a(zK),bMm=[0,0],bMl=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bMf=a(Cw),bMg=a(It),bMi=[0,0],bMh=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bL0=a(xg),bL1=a(y1),bL2=a(oX),bL3=a(DE),bL4=a(iR),bL5=a(X),bL6=a(ru),bL7=a(ni),bL9=[0,0],bL_=[2,0],bL$=[1,0],bMa=[5,0],bMb=[6,0],bMc=[3,0],bMd=[7,0],bMe=[4,0],bL8=[0,[11,a(be),[2,0,[11,a(C8),0]]],a(Es)],bLT=a(tt),bLU=a(j1),bLV=a(jT),bLX=[1,0],bLY=[0,0],bLZ=[2,0],bLW=[0,[11,a(be),[2,0,[11,a(yO),0]]],a(FU)],bLI=a(hc),bLJ=a(rW),bLK=a(sF),bLL=a(s4),bLM=a(rK),bLO=[4,0],bLP=[3,0],bLQ=[0,0],bLR=[1,0],bLS=[2,0],bLN=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bLp=a(n6),bLq=a(nq),bLr=a(FP),bLs=a(l0),bLt=a(nC),bLu=a(D5),bLv=a(yf),bLw=a(pM),bLx=a(mG),bLz=[7,0],bLA=[5,0],bLB=[4,0],bLC=[6,0],bLD=[8,0],bLE=[2,0],bLF=[3,0],bLG=[1,0],bLH=[0,0],bLy=[0,[11,a(be),[2,0,[11,a(BC),0]]],a(xX)],bLk=a(Ar),bLl=a(Lz),bLn=[0,0],bLo=[1,0],bLm=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bLb=a(Lw),bLc=a("EtudiantLogeEnChambre"),bLd=a("EtudiantLogeEnChambreRehabilitee"),bLe=a("PersonnesAgeesSelon3DeD842_16"),bLg=[2,0],bLh=[1,0],bLi=[0,0],bLj=[3,0],bLf=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bK4=a(h7),bK5=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bK6=a("LogementPersonnesAgeesOuHandicapees"),bK7=a("ResidenceSociale"),bK9=[1,0],bK_=[0,0],bK$=[2,0],bLa=[3,0],bK8=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bKX=a(hc),bKY=a("ResidenceAlterneeAllocataireUnique"),bKZ=a("ResidenceAlterneeAllocationsPartagee"),bK1=[2,0],bK2=[1,0],bK3=[0,0],bK0=[0,[11,a(be),[2,0,[11,a(Cb),0]]],a(A_)],bKL=a("Celibataire"),bKM=a("CelibataireSepareDeFait"),bKN=a("ConcubinageDontSepareDeFait"),bKO=a(zt),bKP=a("Maries"),bKQ=a("Pacses"),bKS=[2,0],bKT=[3,0],bKU=[5,0],bKV=[4,0],bKW=[0,0],bKR=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bKE=a("AidePersonnaliseeLogement"),bKF=a(pG),bKG=a(mE),bKI=[2,0],bKJ=[1,0],bKK=[0,0],bKH=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bKA=a(LZ),bKB=a("Mensualite"),bKC=a("TotalAnnuelEcheances"),bKD=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bKt=a(xe),bKu=a("Beneficiaire"),bKv=a("EtablissementHabilite"),bKx=[2,0],bKy=[1,0],bKz=[0,0],bKw=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bKp=a(kJ),bKq=a("OuiAvecLoyerOuCharges"),bKs=[1,0],bKr=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bKi=a(zI),bKj=a(Fz),bKk=a(Ho),bKm=[2,0],bKn=[1,0],bKo=[0,0],bKl=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bKd=a("Etrangere"),bKe=a("Francaise"),bKg=[0,0],bKh=[1,0],bKf=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bJ9=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bJ_=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bJ$=a(G7),bKb=[1,0],bKc=[2,0],bKa=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bJ2=a(Bb),bJ3=a("CollateralDeuxiemeTroisiemeDegre"),bJ4=a(IU),bJ6=[1,0],bJ7=[2,0],bJ8=[0,0],bJ5=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],bJY=a("GardeAlterneeCoefficientPriseEnCharge"),bJZ=a("PasDeGardeAlternee"),bJ1=[0,0],bJ0=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],bJU=a(h7),bJV=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),bJX=[1,0],bJW=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],bJP=a(Mb),bJQ=a(CT),bJS=[0,0],bJT=[1,0],bJR=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeContratTravail.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeContratTravail.t'")],bJC=a("AllocationAdulteHandicape"),bJD=a(Kc),bJE=a("AllocationSoutienEnfantHandicape"),bJF=a(iR),bJG=a(X),bJH=a(ru),bJJ=[1,0],bJK=[0,0],bJL=[3,0],bJM=[4,0],bJN=[2,0],bJO=[5,0],bJI=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],bJx=a(kJ),bJy=a(pK),bJA=[0,0],bJB=[1,0],bJz=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bJo=a(JP),bJp=a("ObjectifDecenceLogement"),bJq=a(np),bJr=a("PrevuDansListeR321_15"),bJt=[1,0],bJu=[3,0],bJv=[0,0],bJw=[2,0],bJs=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],bJh=a(np),bJi=a(yd),bJj=a("TravauxSurLogementDejaAcquisD832_15_2"),bJl=[1,0],bJm=[0,0],bJn=[2,0],bJk=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],bJc=a(rw),bJd=a(yx),bJf=[1,0],bJg=[0,0],bJe=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bI3=a(h7),bI4=a(Bq),bI5=a(Ie),bI6=a(yt),bI7=a(Aj),bI9=[3,0],bI_=[1,0],bI$=[2,0],bJa=[0,0],bJb=[4,0],bI8=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bIY=a("BailleurPrive"),bIZ=a(Cr),bI1=[0,0],bI2=[1,0],bI0=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bIW=[0,a(LY),a(zW),a(Ls),a(IP),a(yl),a(nK),a(gz),a(AZ),a(zC),a(Fd),a(CK),a(He),a(A6),a(Hm),a(D4),a(Km),a(Jg),a(HQ),a(EC),a(Jy),a(E5),a(Gi),a(IQ),a(wV)],bIX=[0,a(gz),a(IP),a(Km),a(Jg),a(HQ),a(yl),a(E5),a(Ls),a(Fd),a(AZ),a(EC),a(A6),a(CK),a(Hm),a(IQ),a(zW),a(He),a(Jy),a(wV),a(Gi),a(zC),a(LY),a(D4),a(nK)],bNx=a("AidesLogementLib"),bNz=a(ac);function +bY(a){if(typeof +a==="number")return 0;else +switch(a[0]){case +0:return[0,bY(a[1])];case +1:return[1,bY(a[1])];case +2:return[2,bY(a[1])];case +3:return[3,bY(a[1])];case +4:return[4,bY(a[1])];case +5:return[5,bY(a[1])];case +6:return[6,bY(a[1])];case +7:return[7,bY(a[1])];case +8:var +c=a[1];return[8,c,bY(a[2])];case +9:var +b=a[1];return[9,b,b,bY(a[3])];case +10:return[10,bY(a[1])];case +11:return[11,bY(a[1])];case +12:return[12,bY(a[1])];case +13:return[13,bY(a[1])];default:return[14,bY(a[1])]}}function +c3(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,c3(a[1],b)];case +1:return[1,c3(a[1],b)];case +2:return[2,c3(a[1],b)];case +3:return[3,c3(a[1],b)];case +4:return[4,c3(a[1],b)];case +5:return[5,c3(a[1],b)];case +6:return[6,c3(a[1],b)];case +7:return[7,c3(a[1],b)];case +8:var +c=a[1];return[8,c,c3(a[2],b)];case +9:var +d=a[2],e=a[1];return[9,e,d,c3(a[3],b)];case +10:return[10,c3(a[1],b)];case +11:return[11,c3(a[1],b)];case +12:return[12,c3(a[1],b)];case +13:return[13,c3(a[1],b)];default:return[14,c3(a[1],b)]}}function +bL(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,bL(a[1],b)];case +1:return[1,bL(a[1],b)];case +2:var +c=a[1];return[2,c,bL(a[2],b)];case +3:var +d=a[1];return[3,d,bL(a[2],b)];case +4:var +e=a[3],f=a[2],g=a[1];return[4,g,f,e,bL(a[4],b)];case +5:var +h=a[3],i=a[2],j=a[1];return[5,j,i,h,bL(a[4],b)];case +6:var +k=a[3],l=a[2],m=a[1];return[6,m,l,k,bL(a[4],b)];case +7:var +n=a[3],o=a[2],p=a[1];return[7,p,o,n,bL(a[4],b)];case +8:var +q=a[3],r=a[2],s=a[1];return[8,s,r,q,bL(a[4],b)];case +9:var +t=a[1];return[9,t,bL(a[2],b)];case +10:return[10,bL(a[1],b)];case +11:var +u=a[1];return[11,u,bL(a[2],b)];case +12:var +v=a[1];return[12,v,bL(a[2],b)];case +13:var +w=a[2],x=a[1];return[13,x,w,bL(a[3],b)];case +14:var +y=a[2],z=a[1];return[14,z,y,bL(a[3],b)];case +15:return[15,bL(a[1],b)];case +16:return[16,bL(a[1],b)];case +17:var +A=a[1];return[17,A,bL(a[2],b)];case +18:var +B=a[1];return[18,B,bL(a[2],b)];case +19:return[19,bL(a[1],b)];case +20:var +C=a[2],D=a[1];return[20,D,C,bL(a[3],b)];case +21:var +E=a[1];return[21,E,bL(a[2],b)];case +22:return[22,bL(a[1],b)];case +23:var +F=a[1];return[23,F,bL(a[2],b)];default:var +G=a[2],H=a[1];return[24,H,G,bL(a[3],b)]}}function +p6(a,c,b){return a[1]===c?(a[1]=b,1):0}function +aB(a){throw[0,fT,a]}function +bA(a){throw[0,g0,a]}var +kY=[bl,Nb,cK(0)];function +t5(b,a){return MQ(b,a)?b:a}function +fl(a){return 0<=a?a:-a|0}var +t6=i9(Nd),t7=i9(Ne),Nc=sl,fU=h1,Ng=i9(Nf);function +bf(d,c){var +a=ay(d),e=ay(c),b=bR(a+e|0);eF(d,0,b,0,a);eF(c,0,b,a,e);return cB(b)}function +Nh(a){return a?Ni:Nj}bOm(0);var +Nm=MU(1),eI=MU(2);function +Nn(b){function +a(b){var +a=b;for(;;){if(a){var +c=a[2],d=a[1];try{hv(d)}catch(a){a=m(a);if(a[1]!==t3)throw a;var +e=a}var +a=c;continue}return 0}}return a(bOn(0))}function +jd(b,a){return tR(b,a,0,ay(a))}function +t8(a){jd(eI,a);MV(eI,10);return hv(eI)}var +p9=[0,Nn];function +Np(c){for(;;){var +a=p9[1],d=[0,1],b=1-p6(p9,a,function(a,b){return function(d){if(p6(a,1,0))k(c,0);return k(b,0)}}(d,a));if(b)continue;return b}}function +p_(a){return k(p9[1],0)}tU(a(wM),p_);function +p$(b,c,g){var +a=k(c,0);if(a){var +d=a[2],e=a[1],f=function(a){return p$(b,d,a)};return[0,k(b,e),f]}return 0}function +t9(d,c){var +b=c;for(;;){var +a=k(b,0);if(a){var +e=a[2];k(d,a[1]);var +b=e;continue}return 0}}function +fV(a){if(0<=a&&!(iA>>0){if(!(25>>0))c=1}else +if(23!==b)c=1;return c?a+32|0:a}function +t_(a){var +b=a-224|0,c=0;if(30>>0){if(!(25>>0))c=1}else +if(23!==b)c=1;return c?a+r3|0:a}var +qb=bOA(0),fW=(4*qb|0)-1|0;function +Nx(a){return 25>>0?a:a+r3|0}function +fX(c){var +b=0,a=c;for(;;){if(a){var +b=b+1|0,a=a[2];continue}return b}}function +t$(a){return a?a[1]:aB(Ny)}function +ua(a){return a?a[2]:aB(Nz)}function +kZ(d,c){if(0<=c){var +a=d,b=c;for(;;){if(a){var +e=a[2],f=a[1];if(0===b)return f;var +a=e,b=b-1|0;continue}return aB(NA)}}return bA(NB)}function +eJ(d){var +a=d,b=0;for(;;){if(a){var +c=[0,a[1],b],a=a[2],b=c;continue}return b}}function +je(b,a){if(a){var +c=a[2],d=k(b,a[1]);return[0,d,je(b,c)]}return 0}function +ub(c,b){var +a=b;for(;;){if(a){var +d=a[2];k(c,a[1]);var +a=d;continue}return 0}}function +uc(e){var +f=0;return function(g){var +b=f,a=g;for(;;){if(a){var +c=a[2],d=a[1];if(k(e,d)){var +b=[0,d,b],a=c;continue}var +a=c;continue}return eJ(b)}}}function +jf(b,a){return a<=b?b:a}function +eK(a,c){var +b=bR(a);bNW(b,0,a,c);return b}function +ud(a){var +b=dJ(a),c=bR(b);gW(a,0,c,0,b);return c}function +k0(a){return cB(ud(a))}function +ue(c,b,a){if(0<=b&&0<=a&&!((dJ(c)-a|0)>>0))e=1}else +if(65<=d)e=1}else{var +f=0;if(32!==d)if(43<=d)switch(d+AB|0){case +5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else +if(2===n)p=1;if(!p){var +j=j+1|0;continue}var +e=eG(k),a=[0,0],r=dJ(e)-1|0,w=0;if(!(r<0)){var +i=w;for(;;){var +f=kM(e,i),g=0;if(32<=f){var +l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else +if(56>>0){g=1;q=1}if(!q){var +m=1;g=2}}else +if(11<=f){if(13===f)g=1}else +if(8<=f)g=1;switch(g){case +0:var +m=4;break;case +1:var +m=2;break}a[1]=a[1]+m|0;var +z=i+1|0;if(r!==i){var +i=z;continue}break}}if(a[1]===dJ(e))var +t=ud(e);else{var +b=bR(a[1]);a[1]=0;var +s=dJ(e)-1|0,x=0;if(!(s<0)){var +h=x;for(;;){var +c=kM(e,h),d=0;if(35<=c)if(92===c)d=2;else +if(cu<=c)d=1;else +d=3;else +if(32<=c)if(34<=c)d=2;else +d=3;else +if(14<=c)d=1;else +switch(c){case +8:b$(b,a[1],92);a[1]++;b$(b,a[1],98);break;case +9:b$(b,a[1],92);a[1]++;b$(b,a[1],hp);break;case +10:b$(b,a[1],92);a[1]++;b$(b,a[1],iH);break;case +13:b$(b,a[1],92);a[1]++;b$(b,a[1],114);break;default:d=1}switch(d){case +1:b$(b,a[1],92);a[1]++;b$(b,a[1],48+(c/cA|0)|0);a[1]++;b$(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;b$(b,a[1],48+(c%10|0)|0);break;case +2:b$(b,a[1],92);a[1]++;b$(b,a[1],c);break;case +3:b$(b,a[1],c);break}a[1]++;var +y=h+1|0;if(s!==h){var +h=y;continue}break}}var +t=b}var +o=cB(t)}var +u=ay(o),v=eK(u+2|0,34);eF(o,0,v,1,u);return cB(v)}}function +uo(d,f){var +g=fl(f),e=Pz[1];switch(d[2]){case +0:var +b=Cj;break;case +1:var +b=eg;break;case +2:var +b=69;break;case +3:var +b=pj;break;case +4:var +b=71;break;case +5:var +b=e;break;case +6:var +b=cX;break;case +7:var +b=72;break;default:var +b=70}var +c=uk(16);hF(c,37);switch(d[1]){case +0:break;case +1:hF(c,43);break;default:hF(c,32)}if(8<=d[2])hF(c,35);hF(c,46);cN(c,a(ac+g));hF(c,b);return um(c)}function +k2(m,a){if(13<=m){var +g=[0,0],h=ay(a)-1|0,n=0;if(!(h<0)){var +c=n;for(;;){if(!(9>>0))g[1]++;var +q=c+1|0;if(h!==c){var +c=q;continue}break}}var +i=g[1],j=bR(ay(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){c1(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=ay(a)-1|0,o=0;if(!(l<0)){var +b=o;for(;;){var +f=ep(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var +p=b+1|0;if(l!==b){var +b=p;continue}break}}return cB(j)}return a}function +PA(b,c){switch(b){case +1:var +a=OM;break;case +2:var +a=ON;break;case +4:var +a=OP;break;case +5:var +a=OQ;break;case +6:var +a=OR;break;case +7:var +a=OS;break;case +8:var +a=OT;break;case +9:var +a=OU;break;case +10:var +a=OV;break;case +11:var +a=OW;break;case +0:case +13:var +a=OL;break;case +3:case +14:var +a=OO;break;default:var +a=OX}return k2(b,pR(a,c))}function +PB(b,c){switch(b){case +1:var +a=Pa;break;case +2:var +a=Pb;break;case +4:var +a=Pd;break;case +5:var +a=Pe;break;case +6:var +a=Pf;break;case +7:var +a=Pg;break;case +8:var +a=Ph;break;case +9:var +a=Pi;break;case +10:var +a=Pj;break;case +11:var +a=Pk;break;case +0:case +13:var +a=O$;break;case +3:case +14:var +a=Pc;break;default:var +a=Pl}return k2(b,pR(a,c))}function +PC(b,c){switch(b){case +1:var +a=Pn;break;case +2:var +a=Po;break;case +4:var +a=Pq;break;case +5:var +a=Pr;break;case +6:var +a=Ps;break;case +7:var +a=Pt;break;case +8:var +a=Pu;break;case +9:var +a=Pv;break;case +10:var +a=Pw;break;case +11:var +a=Px;break;case +0:case +13:var +a=Pm;break;case +3:case +14:var +a=Pp;break;default:var +a=Py}return k2(b,pR(a,c))}function +PD(b,c){switch(b){case +1:var +a=OZ;break;case +2:var +a=O0;break;case +4:var +a=O2;break;case +5:var +a=O3;break;case +6:var +a=O4;break;case +7:var +a=O5;break;case +8:var +a=O6;break;case +9:var +a=O7;break;case +10:var +a=O8;break;case +11:var +a=O9;break;case +0:case +13:var +a=OY;break;case +3:case +14:var +a=O1;break;default:var +a=O_}return k2(b,bN9(a,c))}function +fn(b,e,a){function +f(d){switch(b[1]){case +0:var +c=45;break;case +1:var +c=43;break;default:var +c=32}return bN6(a,e,c)}function +j(c){var +b=pO(a);return 3===b?a<0.?PF:PG:4<=b?PH:c}switch(b[2]){case +5:var +d=tJ(uo(b,e),a),c=0,k=ay(d);for(;;){if(c===k)var +i=0;else{var +g=aL(d,c)+Jv|0,h=0;if(23>>0){if(55===g)h=1}else +if(21>>0)h=1;if(!h){var +c=c+1|0;continue}var +i=1}var +l=i?d:bf(d,PE);return j(l)}case +6:return f(0);case +7:return cB(qd(Nx,eG(f(0))));case +8:return j(f(0));default:return tJ(uo(b,e),a)}}function +jM(d,x,w,v){var +b=x,a=w,c=v;for(;;)if(typeof +c==="number")return k(b,a);else +switch(c[0]){case +0:var +y=c[1];return function(c){return bg(b,[5,a,c],y)};case +1:var +z=c[1];return function(c){var +e=0;if(40<=c)if(92===c)var +d=Nr;else +if(cu<=c)e=1;else +e=2;else +if(32<=c)if(39<=c)var +d=Ns;else +e=2;else +if(14<=c)e=1;else +switch(c){case +8:var +d=Nt;break;case +9:var +d=Nu;break;case +10:var +d=Nv;break;case +13:var +d=Nw;break;default:e=1}switch(e){case +1:var +f=bR(4);b$(f,0,92);b$(f,1,48+(c/cA|0)|0);b$(f,2,48+((c/10|0)%10|0)|0);b$(f,3,48+(c%10|0)|0);var +d=cB(f);break;case +2:var +g=bR(1);b$(g,0,c);var +d=cB(g);break}var +h=ay(d),i=eK(h+2|0,39);eF(d,0,i,1,h);return bg(b,[4,a,cB(i)],z)};case +2:var +A=c[2],B=c[1];return ql(b,a,A,B,function(a){return a});case +3:return ql(b,a,c[2],c[1],OK);case +4:return k3(b,a,c[4],c[2],c[3],PA,c[1]);case +5:return k3(b,a,c[4],c[2],c[3],PB,c[1]);case +6:return k3(b,a,c[4],c[2],c[3],PC,c[1]);case +7:return k3(b,a,c[4],c[2],c[3],PD,c[1]);case +8:var +g=c[4],h=c[3],i=c[2],f=c[1];if(typeof +i==="number"){if(typeof +h==="number")return h?function(d,c){return bg(b,[4,a,fn(f,d,c)],g)}:function(c){return bg(b,[4,a,fn(f,qj(f),c)],g)};var +S=h[1];return function(c){return bg(b,[4,a,fn(f,S,c)],g)}}else{if(0===i[0]){var +m=i[2],n=i[1];if(typeof +h==="number")return h?function(d,c){return bg(b,[4,a,dt(n,m,fn(f,d,c))],g)}:function(c){return bg(b,[4,a,dt(n,m,fn(f,qj(f),c))],g)};var +T=h[1];return function(c){return bg(b,[4,a,dt(n,m,fn(f,T,c))],g)}}var +o=i[1];if(typeof +h==="number")return h?function(e,d,c){return bg(b,[4,a,dt(o,e,fn(f,d,c))],g)}:function(d,c){return bg(b,[4,a,dt(o,d,fn(f,qj(f),c))],g)};var +U=h[1];return function(d,c){return bg(b,[4,a,dt(o,d,fn(f,U,c))],g)}}case +9:return ql(b,a,c[2],c[1],Nh);case +10:var +a=[7,a],c=c[1];continue;case +11:var +a=[2,a,c[1]],c=c[2];continue;case +12:var +a=[3,a,c[1]],c=c[2];continue;case +13:var +C=c[3],D=c[2],p=uk(16);qk(p,D);var +u=um(p);return function(c){return bg(b,[4,a,u],C)};case +14:var +E=c[3],F=c[2];return function(d){var +e=d[1],c=bB(e,bY(ch(F)));if(typeof +c[2]==="number")return bg(b,a,bL(c[1],E));throw cC};case +15:var +G=c[1];return function(d,c){return bg(b,[6,a,function(a){return W(d,a,c)}],G)};case +16:var +H=c[1];return function(c){return bg(b,[6,a,c],H)};case +17:var +a=[0,a,c[1]],c=c[2];continue;case +18:var +l=c[1];if(0===l[0]){var +I=c[2],J=l[1][1],K=0,b=function(b,c,d){return function(a){return bg(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var +L=c[2],M=l[1][1],N=0,b=function(b,c,d){return function(a){return bg(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case +19:throw[0,a1,PJ];case +20:var +O=c[3],P=[8,a,PK];return function(a){return bg(b,P,O)};case +21:var +Q=c[2];return function(c){return bg(b,[4,a,pR(PL,c)],Q)};case +22:var +R=c[1];return function(c){return bg(b,[5,a,c],R)};case +23:var +e=c[2],j=c[1];if(typeof +j==="number")switch(j){case +0:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +1:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +2:throw[0,a1,PM];default:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e])}else +switch(j[0]){case +0:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +1:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +2:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +3:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +4:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +5:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +6:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +7:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +8:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case +9:var +t=j[2];return d<50?rr(d+1|0,b,a,t,e):bX(rr,[0,b,a,t,e]);case +10:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);default:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e])}default:var +q=c[3],r=c[1],s=k(c[2],0);return d<50?rq(d+1|0,b,a,q,r,s):bX(rq,[0,b,a,q,r,s])}}function +rr(e,d,c,a,b){if(typeof +a==="number")return e<50?by(e+1|0,d,c,b):bX(by,[0,d,c,b]);else +switch(a[0]){case +0:var +f=a[1];return function(a){return dK(d,c,f,b)};case +1:var +g=a[1];return function(a){return dK(d,c,g,b)};case +2:var +h=a[1];return function(a){return dK(d,c,h,b)};case +3:var +i=a[1];return function(a){return dK(d,c,i,b)};case +4:var +j=a[1];return function(a){return dK(d,c,j,b)};case +5:var +k=a[1];return function(a){return dK(d,c,k,b)};case +6:var +l=a[1];return function(a){return dK(d,c,l,b)};case +7:var +m=a[1];return function(a){return dK(d,c,m,b)};case +8:var +n=a[2];return function(a){return dK(d,c,n,b)};case +9:var +o=a[3],p=a[2],q=cr(ch(a[1]),p);return function(a){return dK(d,c,c3(q,o),b)};case +10:var +r=a[1];return function(e,a){return dK(d,c,r,b)};case +11:var +s=a[1];return function(a){return dK(d,c,s,b)};case +12:var +t=a[1];return function(a){return dK(d,c,t,b)};case +13:throw[0,a1,PN];default:throw[0,a1,PO]}}function +by(d,b,e,a){var +c=[8,e,PP];return d<50?jM(d+1|0,b,c,a):bX(jM,[0,b,c,a])}function +rq(g,b,e,a,d,c){if(d){var +h=d[1];return function(d){return PI(b,e,a,h,k(c,d))}}var +f=[4,e,c];return g<50?jM(g+1|0,b,f,a):bX(jM,[0,b,f,a])}function +bg(a,b,c){return hy(jM(0,a,b,c))}function +dK(a,b,c,d){return hy(rr(0,a,b,c,d))}function +PI(a,b,c,d,e){return hy(rq(0,a,b,c,d,e))}function +ql(e,d,c,a,b){if(typeof +a==="number")return function(a){return bg(e,[4,d,k(b,a)],c)};else{if(0===a[0]){var +f=a[2],g=a[1];return function(a){return bg(e,[4,d,dt(g,f,k(b,a))],c)}}var +h=a[1];return function(f,a){return bg(e,[4,d,dt(h,f,k(b,a))],c)}}}function +k3(f,e,d,g,c,b,a){if(typeof +g==="number"){if(typeof +c==="number")return c?function(g,c){return bg(f,[4,e,hG(g,W(b,a,c))],d)}:function(c){return bg(f,[4,e,W(b,a,c)],d)};var +k=c[1];return function(c){return bg(f,[4,e,hG(k,W(b,a,c))],d)}}else{if(0===g[0]){var +h=g[2],i=g[1];if(typeof +c==="number")return c?function(g,c){return bg(f,[4,e,dt(i,h,hG(g,W(b,a,c)))],d)}:function(c){return bg(f,[4,e,dt(i,h,W(b,a,c))],d)};var +l=c[1];return function(c){return bg(f,[4,e,dt(i,h,hG(l,W(b,a,c)))],d)}}var +j=g[1];if(typeof +c==="number")return c?function(h,g,c){return bg(f,[4,e,dt(j,h,hG(g,W(b,a,c)))],d)}:function(g,c){return bg(f,[4,e,dt(j,g,W(b,a,c))],d)};var +m=c[1];return function(g,c){return bg(f,[4,e,dt(j,g,hG(m,W(b,a,c)))],d)}}}function +fo(b,e){var +a=e;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +f=a[1],g=un(a[2]);fo(b,f);return jd(b,g);case +1:var +c=a[2],d=a[1];if(0===c[0]){var +h=c[1];fo(b,d);jd(b,PQ);var +a=h;continue}var +i=c[1];fo(b,d);jd(b,PR);var +a=i;continue;case +6:var +m=a[2];fo(b,a[1]);return k(m,b);case +7:fo(b,a[1]);return hv(b);case +8:var +n=a[2];fo(b,a[1]);return bA(n);case +2:case +4:var +j=a[2];fo(b,a[1]);return jd(b,j);default:var +l=a[2];fo(b,a[1]);return MV(b,l)}}function +fp(b,e){var +a=e;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +f=a[1],g=un(a[2]);fp(b,f);return jm(b,g);case +1:var +c=a[2],d=a[1];if(0===c[0]){var +h=c[1];fp(b,d);jm(b,PS);var +a=h;continue}var +i=c[1];fp(b,d);jm(b,PT);var +a=i;continue;case +6:var +m=a[2];fp(b,a[1]);return jm(b,k(m,0));case +7:var +a=a[1];continue;case +8:var +n=a[2];fp(b,a[1]);return bA(n);case +2:case +4:var +j=a[2];fp(b,a[1]);return jm(b,j);default:var +l=a[2];fp(b,a[1]);return uj(b,l)}}function +PU(a){if(gZ(a,PV))return PW;var +d=ay(a);function +f(d){var +c=PX[1],b=hD(dC);return k(bg(function(a){fp(b,a);return aB(hE(b))},0,c),a)}function +g(e){var +b=e;for(;;){if(b===d)return b;var +c=aL(a,b);if(9!==c&&32!==c)return b;var +b=b+1|0;continue}}function +o(e,c){var +b=c;for(;;){if(b===d)return b;if(25>>0)return b;var +b=b+1|0;continue}}function +p(g,f){var +b=f;for(;;){if(b===d)return b;var +c=aL(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else +if(45===c)e=1;if(e){var +b=b+1|0;continue}return b}}var +e=g(0),j=o(e,e),b=d1(a,e,j-e|0),c=g(j),h=p(c,c);if(c===h)var +i=0;else +try{var +q=kS(d1(a,c,h-c|0)),i=q}catch(a){a=m(a);if(a[1]!==fT)throw a;var +i=f(0)}if(g(h)!==d)f(0);var +n=0;if(M(b,PY)&&M(b,PZ))var +l=M(b,P0)?M(b,P1)?M(b,P2)?M(b,P3)?f(0):1:2:3:0;else +n=1;if(n)var +l=4;return[0,i,l]}function +up(d,c){var +a=c[1],b=0;return bg(function(a){fo(d,a);return 0},b,a)}function +jo(a){return up(eI,a)}function +aG(b){var +a=b[1];return bg(function(b){var +a=hD(64);fp(a,b);return hE(a)},0,a)}var +qm=[0,0];function +qo(h,g){var +a=h[1+g];if(1-(typeof +a==="number"?1:0)){if(d0(a)===ma)return k(aG(P4),a);if(d0(a)===on){var +c=tJ(Nl,a),b=0,f=ay(c);for(;;){if(f<=b)return bf(c,Nk);var +d=aL(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else +if(45===d)e=1;if(e){var +b=b+1|0;continue}return c}}return P5}return k(aG(P6),a)}function +uq(b,a){if(b.length-1<=a)return P7;var +c=uq(b,a+1|0),d=qo(b,a);return W(aG(P8),d,c)}function +k4(a){function +o(e){var +b=e;for(;;){if(b){var +f=b[2],g=b[1];try{var +d=0,c=k(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var +b=f;continue}return 0}}var +g=o(qm[1]);if(g)return g[1];if(a===p7)return Qb;if(a===t2)return Qc;if(a[1]===t1){var +c=a[2],h=c[3],p=c[2],q=c[1];return lP(aG(qn),q,p,h,h+5|0,Qd)}if(a[1]===a1){var +d=a[2],i=d[3],r=d[2],s=d[1];return lP(aG(qn),s,r,i,i+6|0,Qe)}if(a[1]===t4){var +e=a[2],j=e[3],t=e[2],u=e[1];return lP(aG(qn),u,t,j,j+6|0,Qf)}if(0===d0(a)){var +f=a.length-1,v=a[1][1];if(2>>0)var +l=uq(a,2),m=qo(a,1),b=W(aG(P9),m,l);else +switch(f){case +0:var +b=P_;break;case +1:var +b=P$;break;default:var +n=qo(a,1),b=k(aG(Qa),n)}return bf(v,b)}return a[1]}function +qp(t,s){var +d=bNU(s),f=d.length-1-1|0,p=0;if(!(f<0)){var +b=p;for(;;){var +a=aX(d,b)[1+b],e=function(a){return function(b){return b?0===a?Qg:Qh:0===a?Qi:Qj}}(b);if(0===a[0])var +g=a[5],h=a[4],i=a[3],j=a[6]?Qk:Qm,l=a[2],m=a[7],n=e(a[1]),c=[0,bNL(aG(Ql),n,m,l,j,i,h,g)];else +if(a[1])var +c=0;else +var +o=e(0),c=[0,k(aG(Qn),o)];if(c){var +q=c[1];k(up(t,Qo),q)}var +r=b+1|0;if(f!==b){var +b=r;continue}break}}return 0}function +k5(c){for(;;){var +a=qm[1],b=1-p6(qm,a,[0,c,a]);if(b)continue;return b}}var +Qq=Qp.slice();function +Qr(d,c){var +e=k4(d);k(jo(Qs),e);qp(eI,c);var +a=bOl(0);if(a<0){var +b=fl(a);t8(aX(Qq,b)[1+b])}return hv(eI)}var +Qt=[0];tU(a(Dj),function(d,h){try{try{var +b=h?Qt:MO(0);try{p_(0)}catch(a){}try{var +a=Qr(d,b),c=a}catch(a){a=m(a);var +f=k4(d);k(jo(Qv),f);qp(eI,b);var +g=k4(a);k(jo(Qw),g);qp(eI,MO(0));var +c=hv(eI)}var +e=c}catch(a){a=m(a);if(a!==p7)throw a;var +e=t8(Qu)}return e}catch(a){return 0}});var +Qy=[bl,Qx,cK(0)];k5(function(a){return a[1]===Qy?[0,bf(Qz,k4(a[2]))]:0});function +k6(a){var +b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function +fq(a){a[4]=-a[4]|0;return 0}try{var +bNI=M2(bNH),us=bNI}catch(a){a=m(a);if(a!==b5)throw a;try{var +bNG=M2(bNF),ur=bNG}catch(a){a=m(a);if(a!==b5)throw a;var +ur=QB}var +us=ur}var +QC=qe(us,82),k7=[bu,function(w){var +m=bOB(0),c=[0,dY(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aX(c[1],b)[1+b]=b;var +v=b+1|0;if(54!==b){var +b=v;continue}var +g=[0,QA],k=54+jf(55,j)|0,r=0;if(!(k<0)){var +d=r;for(;;){var +e=d%55|0,l=bOp(d,j),s=aX(i,l)[1+l],h=bf(g[1],a(ac+s));g[1]=bOk(h,0,ay(h));var +f=g[1],n=aL(f,3)<<24,o=aL(f,2)<<16,p=aL(f,1)<<8,q=((aL(f,0)+p|0)+o|0)+n|0,t=(aX(c[1],e)[1+e]^q)&tw;aX(c[1],e)[1+e]=t;var +u=d+1|0;if(k!==d){var +d=u;continue}break}}c[2]=0;return c}}];function +ut(h,k){var +l=h?h[1]:QC,b=16;for(;;){if(!(k<=b)&&!(qb<(b*2|0))){var +b=b*2|0;continue}if(l){var +i=d0(k7),a=dP===i?k7[1]:bu===i?fm(k7):k7;a[2]=(a[2]+1|0)%55|0;var +c=a[2],d=aX(a[1],c)[1+c],e=(a[2]+24|0)%55|0,f=(aX(a[1],e)[1+e]+(d^(d>>>25|0)&31)|0)&tw,g=a[2];aX(a[1],g)[1+g]=f;var +j=f}else +var +j=0;return[0,0,dY(b,0),j,b]}}function +uu(a){var +c=0>>0))uA(a,q)}else +k9(a)}var +S=a[9]-R|0,T=1===H?1:a[9]>>3|0,fV(gX(b,a>>>3|0)|1<<(a&7)))}function +lk(b){var +a=qB(0);jq(a,b);return a}function +ll(c){var +b=bR(32),a=0;for(;;){c1(b,a,fV(gX(c,a)^iA));var +d=a+1|0;if(31!==a){var +a=d;continue}return b}}function +qC(d,c){var +b=bR(32),a=0;for(;;){var +e=gX(c,a);c1(b,a,fV(gX(d,a)|e));var +f=a+1|0;if(31!==a){var +a=f;continue}return b}}function +SC(c,b){try{var +a=0;for(;;){var +e=gX(b,a);if(0!==(gX(c,a)&e))throw kY;var +f=a+1|0;if(31!==a){var +a=f;continue}var +d=1;return d}}catch(a){a=m(a);if(a===kY)return 0;throw a}}function +uY(e,d){var +a=0;for(;;){var +c=gX(d,a);if(0!==c){var +b=0;for(;;){if(0!==(c&1<>>0)if(9<=r)var +j=[0,[9,k+mR|0],g+1|0];else +l=1;else +if(r)l=2;else{var +G=y[1];y[1]++;var +t=z(g+1|0),o=t[2],A=0,H=t[1];if((o+1|0)>>0)){if(q){var +c=[6,c],d=d+1|0;continue}var +c=[5,c],d=d+1|0;continue}if(21===q){var +c=[7,c],d=d+1|0;continue}}var +C=0;if(typeof +c!=="number"&&0===c[0]){uj(h[1],c[1]);C=1}if(!C){u3(h);h[2]=[0,c,h[2]]}var +a=d;continue a}}}u3(h);return[0,[3,eJ(h[2])],a]}}function +z(g){var +d=A(g),c=d[1],a=d[2];for(;;){if((a+2|0)<=e&&92===aL(b,a)&&ku===aL(b,a+1|0)){var +f=A(a+2|0),c=[4,c,f[1]],a=f[2];continue}return[0,c,a]}}var +C=z(0),K=C[1],D=C[2]===e?K:aB(S0),f=[0,dY(32,0)],c=[0,0],k=[0,lo[1]],l=[0,0],h=[0,1],n=[0,0],q=0;function +a(g,e){if(f[1].length-1<=c[1]){var +a=[0,f[1].length-1];for(;;){if(a[1]<=c[1]){a[1]=a[1]*2|0;continue}var +b=dY(a[1],0);uh(f[1],0,b,0,f[1].length-1);f[1]=b;break}}var +h=u1(g,e),d=c[1];aX(f[1],d)[1+d]=h;c[1]++;return 0}function +i(d){var +b=c[1];a(lm,0);return b}function +j(a,c,b){var +d=u1(c,qE(b,a));aX(f[1],a)[1+a]=d;return 0}function +g(b){try{var +a=W(lo[28],b,k[1]);return a}catch(a){a=m(a);if(a===b5){var +c=l[1];k[1]=bj(lo[4],b,c,k[1]);l[1]++;return c}throw a}}function +s(b){if(qF(b)){var +a=n[1];if(64<=a)aB(SS);n[1]++;return a}return-1}function +o(b,a){return SC(b,a)}function +d(b){if(typeof +b==="number")switch(b){case +0:return a(SF,0);case +1:return a(SG,0);default:return a(SH,0)}else +switch(b[0]){case +0:return a(lm,b[1]);case +1:var +e=b[1],n=ay(e);if(0===n)return 0;if(1===n)return a(lm,aL(e,0));try{var +o=ug(e,0);d([1,SA(e,o)]);a(lm,0);var +v=d([1,SB(e,o+1|0)]);return v}catch(b){b=m(b);if(b===b5)return a(SD,g(e));throw b}case +2:var +p=b[1],w=b[2]?ll(p):p;return a(SE,g(k0(w)));case +3:return F(b[1]);case +4:var +x=b[2],y=b[1],z=i(0);d(y);var +A=i(0),B=c[1];d(x);var +C=c[1];j(z,ln,B);return j(A,qD,C);case +5:var +q=b[1],f=s(q),r=i(0);if(0<=f)a(uZ,f);d(q);if(0<=f)a(u0,f);a(qD,qE(r,c[1]));return j(r,ln,c[1]);case +6:var +t=b[1],k=s(t),D=c[1];d(t);if(0<=k)a(u0,k);var +E=i(0);if(0<=k)a(uZ,k);a(qD,qE(D,c[1]));return j(E,ln,c[1]);case +7:var +G=b[1],H=i(0);d(G);return j(H,ln,c[1]);case +8:var +l=b[1],I=b[2];a(SI,l);d(I);a(SJ,l);h[1]=jf(h[1],l+1|0);return 0;default:var +u=b[1];a(SK,u);h[1]=jf(h[1],u+1|0);return 0}}function +F(p){var +b=p;for(;;){if(b){var +c=b[1];if(typeof +c!=="number")switch(c[0]){case +5:var +e=c[1],l=0;if(typeof +e==="number")l=1;else +switch(e[0]){case +0:case +2:var +i=b[2],s=jr(i);if(o(fZ(e),s)){a(SN,g(qG(q,e)));var +b=i;continue}break;default:l=1}break;case +6:var +f=c[1],m=0;if(typeof +f==="number")m=1;else +switch(f[0]){case +0:case +2:var +j=b[2],t=jr(j);if(o(fZ(f),t)){a(SO,g(qG(q,f)));var +b=j;continue}break;default:m=1}break;case +7:var +h=c[1],n=0;if(typeof +h==="number")n=1;else +switch(h[0]){case +0:case +2:var +k=b[2],u=jr(k);if(o(fZ(h),u)){a(SM,g(qG(q,h)));var +b=k;continue}break;default:n=1}break}var +r=b[2];d(c);var +b=r;continue}return 0}}d(D);a(SL,0);var +t=fZ(D);if(MI(t,fs))var +u=-1;else{var +r=eK(dC,0);uY(function(a){return c1(r,a,1)},t);var +u=g(k0(r))}var +v=dY(l[1],ST),G=k[1];function +H(b,a){aX(v,a)[1+a]=b;return 0}W(lo[12],H,G);var +p=c[1],w=f[1],E=0,I=n[1],J=h[1];if(0<=p&&!((w.length-1-p|0)<0)){var +x=bNP(w,0,p);E=1}if(!E)var +x=bA(NL);return[0,x,v,SU,J,I,u]},lq=[0,[0]],u4=function(d,c,b){var +a=bO3(d,c,b);lq[1]=a;if(0===a.length-1)throw b5;return aX(a,0)[1]},u5=function(d){var +b=0;if(lq[1].length-1<=0)return bA(S1);var +a=aX(lq[1],0)[1+b],c=aX(lq[1],1)[2];if(-1===a)throw b5;return d1(d,a,c-a|0)},qH=g,qI=MK,lr=function(b,a){return Math.abs(b-a)<0.001?1:0},qJ=function(b,a){return lr(b,a)?0:b>a===b?c:M$(b,a)}return M$(b,a)},vA=function(a){return typeof +a==="number"?a:bO1(a)},fu=0,ly=1,WK=-1,vB=function(a){return hA(0,a,0,ay(a))},WL=function(b,a){return hA(b,a,0,ay(a))},qV=function(a){if(typeof +a==="number")return a;var +e=tX(a);if(63>g;f=1}if(!f)var +c=bOZ(a,b);var +i=bOM(a,f6(c,b)),d=p3(c),h=i?d:bOe(d,WM);return pW(pU(h),b)}return pU(p3(a))},hK=function(a,b){if(a!==0&&b!==1){var +c=bOP(a,b);if(c===1)return[0,a,b];var +d=vz(b,c);return[0,vz(a,c),d]}return[0,a,ly]},vC=function(b,a){var +c=dr(a);if(0===c)return[0,dr(b),fu];if(0>>0))switch(b){case +0:return 2;case +1:break;default:return 1}return 3}return a[1]===0?0:4},qW=function(d,c){var +e=g4(d),b=g4(c),a=0;switch(e){case +1:var +j=b-1|0;if(!(2>>0))switch(j){case +0:a=2;break;case +1:break;default:a=1}break;case +2:if(1===b)a=1;else +if(b)switch(b-2|0){case +1:a=1;break;case +2:break;default:a=2}break;case +3:if(3!==b)return-1;a=2;break;default:a=1}var +k=0;switch(a){case +1:var +i=b-1|0;if(!(2>>0))switch(i){case +0:k=1;break;case +1:break;default:return 1}break;case +0:break;default:return 0}if(!k){var +f=0;if(!(4<=e))switch(e){case +0:break;case +2:f=1;break;default:f=2}var +h=0;switch(f){case +0:if(2!==b){if(g(d[2],c[2]))return eq(d[1],c[1]);var +l=c4(c[1],d[2]);return eq(c4(d[1],c[2]),l)}h=1;break;case +1:break;default:h=1}if(h)return 1}return-1},vF=function(a){var +b=a[2];return[0,g3(a[1]),b]},vG=function(c,a,b){if(a[2]===b[2]){var +d=a[2];return hK(W(c,a[1],b[1]),d)}var +e=c4(a[2],b[2]),f=c4(b[1],a[2]);return hK(W(c,c4(a[1],b[2]),f),e)},jA=function(b,a){if(b[2]!==0&&a[2]!==0){var +c=c4(b[2],a[2]);return hK(c4(b[1],a[1]),c)}return[0,dZ(dr(b[1]),dr(a[1])),fu]},qX=function(b,a){if(0<=dr(a[1]))return jA(b,[0,a[2],a[1]]);var +c=g3(a[1]);return jA(b,[0,g3(a[2]),c])},qY=function(a){switch(a){case +0:return 2;case +1:return 8;case +2:return 10;default:return 16}},qZ=function(e,d,c,b){var +a=d;for(;;){if(c<=a)return 0;if(k(b,aL(e,a)))return[0,a];var +a=a+1|0;continue}},q0=[0,-1],WP=function(a){if(M(a,WQ)){if(M(a,WR)){if(!M(a,WS))return lA;if(M(a,WT)){if(M(a,WU))try{var +k=ug(a,47),X=hA(0,a,k+1|0,(ay(a)-k|0)-1|0),Y=vC(hA(0,a,0,k),X);return Y}catch(k){k=m(k);if(k===b5){var +i=ay(a),x=0;if(i<1)var +s=[0,0,x];else{var +N=aL(a,0)+AB|0,Q=0;if(!(2>>0)){var +R=0;switch(N){case +0:var +P=[0,0,1];break;case +1:R=1;break;default:var +P=[0,1,1]}if(!R){var +O=P;Q=1}}if(!Q)var +O=[0,0,x];var +s=O}var +c=s[2];if(i<(c+2|0))var +t=[0,2,c];else{var +W=aL(a,c),g=aL(a,c+1|0),r=0;if(48===W){var +h=0;if(89<=g){if(98===g)h=2;else +if(kb===g)h=1;else +if(nR!==g){r=1;h=3}}else +if(66===g)h=2;else +if(79===g)h=1;else +if(!(88<=g)){r=1;h=3}switch(h){case +3:break;case +0:var +q=[0,3,c+2|0];break;case +1:var +q=[0,1,c+2|0];break;default:var +q=[0,0,c+2|0]}}else +r=1;if(r)var +q=[0,2,c];var +t=q}var +d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&eg!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&kK!==a)return 0;return 1}:function(a){return 0},y=qZ(a,d,i,S);if(y)var +z=y[1],A=z+1|0,e=z,B=vA(hA(10,a,A,i-A|0));else +var +e=i,B=0;if(2<=b){var +C=qZ(a,d,e,function(a){return 46===a?1:0});if(C){var +u=C[1];if(2===b)var +D=1;else{if(!(3<=b))throw[0,a1,WW];var +D=4}var +F=u+1|0,G=e-1|0,E=0;if(G>>4|0));c1(h,g+5|0,vJ(e&15));c[1]=a+1|0;break}}var +l=a+1|0;if(i!==a){var +a=l;continue}break}}W7(d,c,b);return bZ(b,34)},vK=function(a,b){return et(a,Xe)},vL=function(b,a){var +c=a?Xf:Xg;return et(b,c)},Xh=t5(10,11),q4=function(c,b,a){if(0===a)return b;var +d=q4(c,b,a/10|0);c1(c,d,fV(fl(a%10|0)+48|0));return d+1|0},vM=function(a,b){q2(a,Xh);if(0>>1|0;WX[1]++;continue}}}(globalThis));